Files
holocron/docs/adr/0016-plugin-version-parity.md
Defame1297 4d061bd199 feat(kyberforge): add plugin-author and marketplace-author skills
## Why

Plugin and marketplace management had no governed authoring path. Creating or
updating a plugin required knowing the dual-manifest convention, version parity
rules, and directory skeleton by memory — nothing enforced consistency or guided
the process.

`/plugin-author` closes that gap by owning the full plugin scaffold lifecycle:
create, update, rename, and release. `/marketplace-author` handles the
marketplace-facing side: register, deregister, and update plugin entries in
`marketplace.json`.

ADR-0016 codifies the version parity convention (identical `version` in both
`plugin.json` and `.claude-plugin/plugin.json`) that `/plugin-author` now
enforces. The two plugin.json files in this repo are backfilled to comply
(keys also sorted to pass the pretty-format-json hook). CONTEXT.md gains
glossary entries for "plugin scaffold" and "version parity" so future agents
have shared vocabulary for these concepts.

## Implementation Notes

`/plugin-author` ships a `scripts/new-plugin.sh` scaffold script that generates
the directory skeleton and both manifests in one shot; the skill calls the script
rather than generating files ad hoc so the scaffold is reviewable and repeatable.

Version parity is an invariant, not a suggestion — the skill will fail loudly
on create/update if the two versions would diverge.

ADR: docs/adr/0016-plugin-version-parity.md
2026-06-28 10:45:03 +00:00

904 B

version field is present in both plugin manifests

Each plugin has two manifests: plugin.json (Copilot CLI) and .claude-plugin/plugin.json (Claude Code). Both tools support a version field. Prior to this decision, only the CC manifest carried version; the Copilot manifest omitted it.

We now require version in both manifests, always identical. A reader of plugin.json alone should be able to determine the plugin version without consulting the CC manifest. The plugin-author skill enforces this invariant on every create, update, and release operation.

Considered options

CC-only version (rejected) — version only in .claude-plugin/plugin.json; Copilot derives version from the git tag. Rejected because it makes plugin.json incomplete as a standalone descriptor and creates a class of drift where the two manifests disagree on version without any tooling catching it.