What happened
issue-driven-dev v2.92.0 reported ✘ failed to load on session start, and every /idd-* skill silently disappeared ("Unknown skill"). No install/enable state changed — the plugin was enabled but could not load.
Root cause
v2.92.0 (#219) promoted parallel-ai-agents to an install-time hard dependency. The plugin.json declared it as:
{ "name": "parallel-ai-agents", "marketplace": "psychquant-claude-plugins" }
But parallel-ai-agents is not published in the psychquant-claude-plugins marketplace. It ships from its own marketplace parallel-ai-agents (repo PsychQuant/parallel-ai-agents), installed as parallel-ai-agents@parallel-ai-agents.
Claude Code could not resolve parallel-ai-agents@psychquant-claude-plugins → dependency resolution failed → the whole plugin failed to load → all skills vanished. Confirmed error:
Error: Dependency "parallel-ai-agents@psychquant-claude-plugins" is not installed
The marketplace-root allowCrossMarketplaceDependenciesOn had also been set to psychquant-claude-plugins (same misdiagnosis), so both needed correcting to parallel-ai-agents.
Fix (v2.92.1)
plugins/issue-driven-dev/.claude-plugin/plugin.json: dependency marketplace → parallel-ai-agents
.claude-plugin/marketplace.json: allowCrossMarketplaceDependenciesOn → parallel-ai-agents (keeps claude-plugins-official for superpowers)
The class (prevention)
A hard install-time dependency with an unresolvable marketplace name is a whole-plugin load failure that silently drops every skill — the highest-blast-radius failure mode of deep-integration-over-hardcode. There is no test today that validates each declared dependencies[].marketplace is (a) a real registered marketplace and (b) actually contains the named plugin.
Proposed structural prevention: a CI/test gate that parses plugin.json dependencies + the marketplace-root allowlist and asserts every <name>@<marketplace> pair resolves against the known marketplace sources (or at minimum that each dependency's marketplace appears in allowCrossMarketplaceDependenciesOn). This would have caught v2.92.0 before ship.
Filed as a follow-up to #219.
What happened
issue-driven-devv2.92.0 reported✘ failed to loadon session start, and every/idd-*skill silently disappeared ("Unknown skill"). No install/enable state changed — the plugin was enabled but could not load.Root cause
v2.92.0 (#219) promoted
parallel-ai-agentsto an install-time hard dependency. Theplugin.jsondeclared it as:But
parallel-ai-agentsis not published in thepsychquant-claude-pluginsmarketplace. It ships from its own marketplaceparallel-ai-agents(repoPsychQuant/parallel-ai-agents), installed asparallel-ai-agents@parallel-ai-agents.Claude Code could not resolve
parallel-ai-agents@psychquant-claude-plugins→ dependency resolution failed → the whole plugin failed to load → all skills vanished. Confirmed error:The marketplace-root
allowCrossMarketplaceDependenciesOnhad also been set topsychquant-claude-plugins(same misdiagnosis), so both needed correcting toparallel-ai-agents.Fix (v2.92.1)
plugins/issue-driven-dev/.claude-plugin/plugin.json: dependencymarketplace→parallel-ai-agents.claude-plugin/marketplace.json:allowCrossMarketplaceDependenciesOn→parallel-ai-agents(keepsclaude-plugins-officialfor superpowers)The class (prevention)
A hard install-time dependency with an unresolvable marketplace name is a whole-plugin load failure that silently drops every skill — the highest-blast-radius failure mode of
deep-integration-over-hardcode. There is no test today that validates each declareddependencies[].marketplaceis (a) a real registered marketplace and (b) actually contains the named plugin.Proposed structural prevention: a CI/test gate that parses
plugin.jsondependencies+ the marketplace-root allowlist and asserts every<name>@<marketplace>pair resolves against the known marketplace sources (or at minimum that each dependency's marketplace appears inallowCrossMarketplaceDependenciesOn). This would have caught v2.92.0 before ship.Filed as a follow-up to #219.