mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-11 21:57:14 +03:00
build.js derives plugin/.claude-plugin/plugin.json from the root manifest and injects an `agents` array built from the generated agent files. In Claude Code that array is exactly what stops them loading. Verified on a throwaway local marketplace, across the plausible shapes: array of file paths (what build.js emits) -> 0 agents load, skills fine a string, e.g. "./agents" -> whole plugin fails to load array containing a directory -> whole plugin fails to load key omitted -> all agents load, skills fine Claude Code discovers agents/*.md on its own, and the identifier it uses is the file name rather than the frontmatter `name`. So the key is not needed, and any present form of it is worse than its absence. Confirmed end to end on this repo: with the key emitted, `claude plugin details impeccable` reports "Agents (0)"; with it omitted it reports "Agents (4) impeccable-asset-producer, impeccable-documenter, impeccable-finish-reviewer, impeccable-manual-edit-applier". The agent files themselves are still copied by the existing copyDirSync a few lines below — only the manifest key goes away. Two things make this hard to notice: with a breaking shape `claude plugin details` prints "Plugin not found" instead of a validation error, and `claude plugin validate` does not catch it because it validates the marketplace manifest, not the plugin manifest. The only reliable signal is the "Agents (N)" line. The same defect is reported against another project at addyosmani/agent-skills#449, with the full reproduction. Scope note: verified on Claude Code only. plugin/ is the Claude-Code / Grok subtree, and the Grok manifest is written separately just below, so this does not touch the other harnesses.