Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
6.3 KiB
How to publish a capability so others can install it
This guide is for capability authors who want to distribute their work so other MSD users can install it with msd capability install. It covers preparing the manifest, validating locally, and releasing through each supported distribution channel.
Before publishing, make sure your capability works locally by following Develop a Capability.
Add the required publishing fields
Open your capabilities/<id>/capability.json and add these fields if they are not already present.
version (required)
"version": "1.0.0"
Use Semantic Versioning. Every published capability must carry a version; MSD will reject installation of a manifest that omits it.
engines.msd (required)
"engines": {
"msd": ">=1.6.0"
}
Declare the minimum MSD version your capability requires. MSD checks this constraint at both install time and load time and refuses to activate the capability on an incompatible installation. Be as permissive as correctness allows — a tighter range blocks more users.
If you need to offer a graceful downgrade path for users on older MSD versions, you can also declare compatVersions:
"compatVersions": {
"1.0.0": ">=1.6.0",
"0.9.0": ">=1.5.0"
}
compatVersions is only meaningful when your distribution channel enumerates available versions (a registry or a package feed). For Git and tarball releases, the installer downloads the version you point to directly.
Author and provenance fields (recommended)
These fields are displayed in the pre-install summary that users see before they consent to installation. Filling them in builds trust.
"author": {
"name": "Your Name",
"email": "you@example.com",
"url": "https://example.com"
},
"homepage": "https://github.com/your-org/msd-cap-example",
"repository": "https://github.com/your-org/msd-cap-example",
"license": "MIT"
license must be a valid SPDX expression. keywords is optional but helps discoverability on registries.
For the full list of manifest fields and their validation rules, see Capability manifest.
Namespace reservation
The prefixes msd-, msd-core-, and anthropic- are reserved for first-party capabilities. Do not use them as the id or package name of a third-party capability.
Validate locally before publishing
Run the registry check to confirm the manifest is well-formed:
node scripts/gen-capability-registry.cjs --check
If you are developing outside the core repo, use the standalone validator when it is available, or install your capability locally and check that msd capability list shows it without errors:
msd capability install ./path/to/your-capability --scope project
msd capability list
Fix any validation errors before proceeding.
Validation checks the manifest's shape. It does not read your skill bodies — nothing does. If your capability ships skills, re-read them before you publish: they are copied verbatim into every installing user's agent instruction surface and are never content-scanned. See Ship skills — and know what you are shipping for the author's side of that boundary, and ADR-2363 for why it is drawn there.
Choose a distribution channel
Git repository (recommended for open-source capabilities)
Push your capability to a public Git host. Tag each release:
git tag v1.0.0
git push origin v1.0.0
Consumers install by pointing at the tag:
msd capability install https://github.com/your-org/msd-cap-example.git#v1.0.0
For a reproducible pin that cannot be moved, consumers can use a commit SHA instead:
msd capability install https://github.com/your-org/msd-cap-example.git#sha:abc123def456...
Publish release notes on your Git host so users know what changed between versions.
npm package
Publish your capability as an npm package. The package name becomes the npm spec consumers use. Use a scoped package name to make the origin clear:
npm publish
Consumers install using the npm: prefix:
msd capability install npm:@your-org/msd-cap-example@1.0.0
A version range is also accepted:
msd capability install npm:@your-org/msd-cap-example@^1.0.0
Tarball release
Build a tarball of the capability directory and attach it to a GitHub release or host it on any HTTPS URL:
tar -czf msd-cap-example-1.0.0.tgz capabilities/example/
Consumers install using the tarball URL:
msd capability install https://github.com/your-org/msd-cap-example/releases/download/v1.0.0/msd-cap-example-1.0.0.tgz
For tarball releases, publishing an integrity hash is strongly recommended (see below).
Compute and publish an integrity hash (recommended for tarballs)
An sha512 integrity hash lets consumers verify the download has not been tampered with. Compute it with:
openssl dgst -sha512 -binary msd-cap-example-1.0.0.tgz | openssl base64 -A | sed 's/^/sha512-/'
Publish the resulting string in your release notes. Consumers pass it at install time:
msd capability install https://example.com/msd-cap-example-1.0.0.tgz \
--integrity sha512-<hash>
MSD verifies the hash before extracting the archive and aborts if it does not match.
Add provenance (optional)
If your release process produces a provenance record — for example, a GitHub Actions attestation — you can embed it in the manifest so that audit tools can surface it:
"provenance": {
"sourceRepo": "https://github.com/your-org/msd-cap-example",
"commit": "abc123def456..."
}
This is optional metadata. It does not change the install-time trust model.
Next steps
- Import a capability from a URL — walk through installation from the consumer's perspective.
- Version and update a capability — manage
version,engines.msd, andcompatVersionsacross releases. - Capability manifest — full field reference.
- Capability trust model — how MSD treats third-party capabilities at install time.