Plugin: toolchain · Categories: hardcoded org string (1), string leakage into consumer artifacts (4) — keep/soften decision needed
Source: work-readiness sweep (read-only audit vs docs/PLUGIN-PHILOSOPHY.md + docs/MIGRATION-PLAYBOOK.md)
Findings
plugins/toolchain/reference/ecosystems/dotnet.yaml:4 (identical header in bash.yaml:3, python.yaml:3, typescript.yaml:3, powershell.yaml:3, markdown.yaml:3, yaml.yaml:3, cross-cutting.yaml:3): # https://raw.githubusercontent.com/melodic-software/claude-code-plugins/main/docs/conventions/ecosystem-commands/README.md
plugins/toolchain/reference/resolution-ladder.md:7, plugins/toolchain/reference/topic-docs.md:9
- Propagation trigger:
plugins/toolchain/skills/setup/SKILL.md:107 — "Each file carries a one-line header comment citing the contract"
Why flagged
Bundled defaults are seeds for consumer-written files: setup copies the contract-citing header, so the hardcoded melodic-software/claude-code-plugins org+repo+main-branch string lands in the consumer's tracked .claude/ecosystems/*.yaml — the one vector by which the publisher name reaches a consumer artifact. Nuance: it is provenance documentation, not runtime behavior (nothing resolves the URL at runtime), and publisher metadata is sanctioned — but the main pin will rot if the contract moves, and PLUGIN-PHILOSOPHY's design boundary says runtime surfaces must not depend on publisher/repo names. Filed as an explicit keep-vs-soften decision.
Fix direction
If softening: have setup write consumer files with a neutral header (e.g. # conforms to ecosystem-commands contract (see toolchain plugin reference)), keeping the full contract URL only in the plugin's own bundled reference files. Do not hardcode-swap the org name.
Plugin:
toolchain· Categories: hardcoded org string (1), string leakage into consumer artifacts (4) — keep/soften decision neededSource: work-readiness sweep (read-only audit vs docs/PLUGIN-PHILOSOPHY.md + docs/MIGRATION-PLAYBOOK.md)
Findings
plugins/toolchain/reference/ecosystems/dotnet.yaml:4(identical header in bash.yaml:3, python.yaml:3, typescript.yaml:3, powershell.yaml:3, markdown.yaml:3, yaml.yaml:3, cross-cutting.yaml:3):# https://raw.githubusercontent.com/melodic-software/claude-code-plugins/main/docs/conventions/ecosystem-commands/README.mdplugins/toolchain/reference/resolution-ladder.md:7,plugins/toolchain/reference/topic-docs.md:9plugins/toolchain/skills/setup/SKILL.md:107— "Each file carries a one-line header comment citing the contract"Why flagged
Bundled defaults are seeds for consumer-written files: setup copies the contract-citing header, so the hardcoded
melodic-software/claude-code-pluginsorg+repo+main-branch string lands in the consumer's tracked.claude/ecosystems/*.yaml— the one vector by which the publisher name reaches a consumer artifact. Nuance: it is provenance documentation, not runtime behavior (nothing resolves the URL at runtime), and publisher metadata is sanctioned — but themainpin will rot if the contract moves, and PLUGIN-PHILOSOPHY's design boundary says runtime surfaces must not depend on publisher/repo names. Filed as an explicit keep-vs-soften decision.Fix direction
If softening: have setup write consumer files with a neutral header (e.g.
# conforms to ecosystem-commands contract (see toolchain plugin reference)), keeping the full contract URL only in the plugin's own bundled reference files. Do not hardcode-swap the org name.