shire Docs
Docs/Plugin API/Packaging

Packaging

.shiremod

A .shiremod is a standard ZIP file with manifest.json at its root. Shire 1.0 accepts stored entries (compression method 0) and rejects deflated packages with a clear error. Use shire-plugin pack; it writes a stored ZIP and bundles the Python SDK for Python plugins.

my-plugin.shiremod
├── manifest.json
├── main.py
└── shire_sdk.py        # added by pack for Python plugins

The package is installed under:

%LOCALAPPDATA%\Shire\plugins\<id>\
├── manifest.json
├── main.py
├── data/
│   ├── storage.json
│   └── plugin.log
└── …

The registry is %LOCALAPPDATA%\Shire\plugins\registry.json; it stores enabled state, approved permissions and the package SHA-256.

Build and pack

python tools\shire-plugin\shire_plugin.py validate .\my-plugin
python tools\shire-plugin\shire_plugin.py build .\my-plugin     # compiled languages
python tools\shire-plugin\shire_plugin.py pack .\my-plugin

pack refuses an invalid manifest, a missing entrypoint or an unsafe path. It skips .git, __pycache__, node_modules, target, build, bin, obj, .idea and existing .shiremod files.

Install

In the Plugin Manager:

  1. Install .shiremod opens a file dialog.
  2. The Host reads the package, rejects path traversal and deflated entries, parses the manifest and checks that the entrypoint exists.
  3. The files are extracted to a staging directory, then atomically moved to plugins/<id>.
  4. The package SHA-256 and manifest metadata are stored in the registry.
  5. Permissions are not approved automatically in production. Select the plugin, review the declarations and approve them.

The mock host used by shire-plugin test auto-approves for test speed; the production Host does not.

Update and removal

  • Installing a package with an existing id replaces the directory. Approved permissions that are still declared are kept; new permissions need approval. The old directory is removed only after the new one is in place.
  • Remove stops the plugin process, deletes its directory and its record. Storage is removed with the directory.
  • Reload stops and relaunches the process without reinstalling.

Distribution roadmap

The current install path is local-file only. The architecture leaves room for:

  • a signed catalogue with search and versions;
  • install by URL with SHA-256 and optional signature verification;
  • dependency resolution;
  • update channels and revocation lists;
  • author identity and reputation.

Digital signatures authenticate origin, not behavior. A signed plugin still runs as a separate process with approved capabilities; signing never replaces isolation or permission checks.

Shire Plugin API 1.0 · Written in English. Documentation home · API status · Changelog

Independent project. Not affiliated with HoYoverse. Never put secrets in a plugin, manifest or package.