Bug Description
The new /plugin-dev:start router command is designed to help users choose between creating a plugin or marketplace, then route them to the appropriate workflow using the SlashCommand tool. However, both target commands block programmatic invocation, causing the router to fail.
The target commands have this frontmatter:
plugins/plugin-dev/commands/create-plugin.md: disable-model-invocation: true
plugins/plugin-dev/commands/create-marketplace.md: disable-model-invocation: true
Per official Claude Code documentation:
"disable-model-invocation: Whether to prevent SlashCommand tool from calling this command"
And per the plugin's own slashcommand-tool.md reference:
"disable-model-invocation: true - Blocks programmatic invocation"
This means the SlashCommand tool cannot invoke these commands, making the router non-functional.
Steps to Reproduce
- Load plugin:
claude --plugin-dir plugins/plugin-dev
- Run
/plugin-dev:start
- Choose "A plugin" option
- Observe: Router attempts to invoke
/plugin-dev:create-plugin via SlashCommand tool
- Expected: Workflow starts
- Actual: Invocation blocked due to
disable-model-invocation: true
Expected Behavior
After user selects their path, the router should successfully invoke the target workflow (/plugin-dev:create-plugin or /plugin-dev:create-marketplace).
Actual Behavior
The SlashCommand tool cannot invoke target commands because they have disable-model-invocation: true set, which absolutely blocks programmatic invocation.
Command Used
/plugin-dev:start
Environment
- This is a design/configuration issue, not environment-specific
- Affects all environments where the plugin is used
Proposed Fix
Remove disable-model-invocation: true from both target commands:
plugins/plugin-dev/commands/create-plugin.md - remove line 6
plugins/plugin-dev/commands/create-marketplace.md - remove line 6
Rationale: The protection should be at the entry point (start.md), not the child commands. The router pattern requires:
- Entry point (
start.md) has disable-model-invocation: true ✅ (already set)
- Child commands are invocable via SlashCommand tool
This is the standard pattern: protect the entry point, allow internal routing.
Additional Context
This bug was discovered during a comprehensive review of the new /plugin-dev:start command against:
- Official Claude Code slash-commands documentation
- Official Claude Code plugins-reference documentation
- The plugin's own command-development skill and references
Files to modify:
plugins/plugin-dev/commands/create-plugin.md
plugins/plugin-dev/commands/create-marketplace.md
Bug Description
The new
/plugin-dev:startrouter command is designed to help users choose between creating a plugin or marketplace, then route them to the appropriate workflow using theSlashCommandtool. However, both target commands block programmatic invocation, causing the router to fail.The target commands have this frontmatter:
plugins/plugin-dev/commands/create-plugin.md:disable-model-invocation: trueplugins/plugin-dev/commands/create-marketplace.md:disable-model-invocation: truePer official Claude Code documentation:
And per the plugin's own
slashcommand-tool.mdreference:This means the SlashCommand tool cannot invoke these commands, making the router non-functional.
Steps to Reproduce
claude --plugin-dir plugins/plugin-dev/plugin-dev:start/plugin-dev:create-pluginvia SlashCommand tooldisable-model-invocation: trueExpected Behavior
After user selects their path, the router should successfully invoke the target workflow (
/plugin-dev:create-pluginor/plugin-dev:create-marketplace).Actual Behavior
The SlashCommand tool cannot invoke target commands because they have
disable-model-invocation: trueset, which absolutely blocks programmatic invocation.Command Used
/plugin-dev:startEnvironment
Proposed Fix
Remove
disable-model-invocation: truefrom both target commands:plugins/plugin-dev/commands/create-plugin.md- remove line 6plugins/plugin-dev/commands/create-marketplace.md- remove line 6Rationale: The protection should be at the entry point (
start.md), not the child commands. The router pattern requires:start.md) hasdisable-model-invocation: true✅ (already set)This is the standard pattern: protect the entry point, allow internal routing.
Additional Context
This bug was discovered during a comprehensive review of the new
/plugin-dev:startcommand against:Files to modify:
plugins/plugin-dev/commands/create-plugin.mdplugins/plugin-dev/commands/create-marketplace.md