# version field is present in both plugin manifests **Moot as of ADR-0015.** This ADR addressed drift risk between two independently *hand-maintained* manifests. Since issue #90's conversion executed, `.claude-plugin/plugin.json` and `.github/plugin/plugin.json` are both **compiled output** of `apm pack`, generated in the same pass from a single `apm.yml` per plugin — there is no longer a second hand-authored file that could drift out of parity. The invariant this ADR required (`version` present and identical in both manifests) still holds in the compiled output, but structurally, not because a skill enforces it: both files are derived from the same `apm.yml` `version:` field, so divergence is no longer possible by construction. `plugin-author`, the skill that enforced this invariant, is deleted per ADR-0015 rather than adapted. Kept below as the historical record of the pre-APM decision. --- 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.