Summary
Native Claude and Codex plugins both apply the ck plugin namespace to bare skill IDs. The legacy flat-copy path does not, so it needs an explicit destination projection after Engineer canonicalizes source frontmatter.
Root cause
Keeping name: ck:scout in canonical source preserves legacy invocation but Codex resolves it as ck:ck:scout. Changing canonical source to name: scout fixes both native plugins but would expose bare /scout in supported legacy installs unless the CLI transforms the copied destination.
Acceptance
- Legacy Engineer copies rewrite bare
name: X to name: ck:X exactly once.
- Already-prefixed payloads remain unchanged for backward compatibility.
- Plugin staging copies canonical source unchanged.
- Destination projection is limited to Engineer skills and preserves frontmatter formatting/content.
- Tests cover bare, already-prefixed, missing/invalid frontmatter, repeated install/update, and native staging non-mutation.
- The compatibility change ships before the paired Engineer payload update in claudekit/claudekit-engineer#864.
Parent: claudekit/claudekit-engineer#681
Summary
Native Claude and Codex plugins both apply the
ckplugin namespace to bare skill IDs. The legacy flat-copy path does not, so it needs an explicit destination projection after Engineer canonicalizes source frontmatter.Root cause
Keeping
name: ck:scoutin canonical source preserves legacy invocation but Codex resolves it asck:ck:scout. Changing canonical source toname: scoutfixes both native plugins but would expose bare/scoutin supported legacy installs unless the CLI transforms the copied destination.Acceptance
name: Xtoname: ck:Xexactly once.Parent: claudekit/claudekit-engineer#681