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:
- Install .shiremod opens a file dialog.
- The Host reads the package, rejects path traversal and deflated entries, parses the manifest and checks that the entrypoint exists.
- The files are extracted to a staging directory, then atomically moved to
plugins/<id>. - The package SHA-256 and manifest metadata are stored in the registry.
- 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.