8.7 KiB
description, argument-hint
| description | argument-hint |
|---|---|
| Create slash command(s) following standardized structure - supports parallel creation for 3+ commands | <command-name> "<description>" [--plugin=name] | <cmd-1> "<desc-1>" <cmd-2> "<desc-2>" ... [--plugin=name] |
🚨 EXECUTION NOTICE FOR CLAUDE
When you invoke this command via SlashCommand(/domain-plugin-builder:slash-commands-create ...), the system returns THESE INSTRUCTIONS below.
YOU are the executor. This is NOT an autonomous subprocess.
- ✅ The phases below are YOUR execution checklist
- ✅ YOU must run each phase immediately using tools (Bash, Read, Write, Edit, TodoWrite)
- ✅ Complete ALL phases before considering this command done
- ❌ DON'T wait for "the command to complete" - YOU complete it by executing the phases
- ❌ DON'T treat this as status output - it IS your instruction set
Immediately after SlashCommand returns, start executing Phase 0, then Phase 1, etc.
See @CLAUDE.md section "SlashCommand Execution - YOU Are The Executor" for detailed explanation.
Security Requirements
CRITICAL: All generated files must follow security rules:
@~/.claude/plugins/marketplaces/dev-lifecycle-marketplace/docs/security/SECURITY-RULES.md
Key requirements:
- Never hardcode API keys or secrets
- Use placeholders:
your_service_key_here - Protect
.envfiles with.gitignore - Create
.env.examplewith placeholders only - Document key acquisition for users
Arguments: $ARGUMENTS
Goal: Create properly structured slash command(s). For 3+ commands, creates them in parallel for faster execution.
CRITICAL EXECUTION INSTRUCTIONS:
- DO NOT wait for phases to run automatically
- DO NOT just explain what the phases do
- EXECUTE each phase immediately using the actual tools (Bash, Read, Write, Edit, TodoWrite)
- The
!{tool command}syntax shows you WHAT to execute - use the real tool to DO IT - Complete all phases in order before finishing
Phase 0: Create Todo List
Create todo list for all phases below.
Phase 1: Load Architectural Framework
Actions:
- Load component decision guidance: !{Read ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/docs/frameworks/claude/reference/component-decision-framework.md}
- Load composition patterns: !{Read ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/docs/frameworks/claude/reference/dans-composition-pattern.md}
- These provide critical understanding of:
- Commands are the primitive (start here!)
- When to use commands vs skills vs agents vs hooks
- Skills compose commands (not vice versa)
- Composition hierarchies and patterns
- Anti-patterns to avoid
Phase 2: Parse Arguments and Determine Plugin
Parse $ARGUMENTS to extract:
- Command names and descriptions
- Plugin name (from --plugin=name or detect from pwd)
If plugin not specified:
!{bash basename $(pwd)}
Store plugin name for Phase 3.
Phase 3: Load Templates
Load command template for reference:
!{Read ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/skills/build-assistant/templates/commands/template-command-patterns.md}
Phase 4: Parse Arguments & Determine Mode
Actions:
Use bash to parse $ARGUMENTS and count how many commands are being requested:
!{bash echo "$ARGUMENTS" | grep -oE '<[^>]+>' | wc -l}
Store the count. Then extract each command specification:
- If count = 1: Single command mode - extract and ""
- If count = 2: Two commands mode - extract both "" pairs
- If count >= 3: Multiple commands mode - extract all "" pairs
Phase 5: Create Commands
Actions:
Decision: 1-2 commands = build directly, 3+ commands = use Task() for parallel
For 1-2 Commands:
Build directly - execute these steps immediately:
-
List existing agents (to use correct names in Task() calls): !{ls plugins/$PLUGIN_NAME/agents/*.md 2>/dev/null}
-
Load template: !{Read ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/skills/build-assistant/templates/commands/template-command-patterns.md}
-
For each command, create the file: !{Write plugins/$PLUGIN_NAME/commands/$CMD_NAME.md}
Include:
- Frontmatter with description, argument-hint, allowed-tools
- Use Goal → Actions → Phase pattern
- Keep under 150 lines
- CRITICAL: If command invokes agents via Task(), use ACTUAL agent names from step 1!
- Format: subagent_type="$PLUGIN_NAME:agent-name"
- Example: If agents/security-scanner.md exists, use subagent_type="my-plugin:security-scanner"
- NEVER use placeholder names - use REAL agent file names!
- Validate: !{Bash ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/skills/build-assistant/scripts/validate-command.sh plugins/$PLUGIN_NAME/commands/$CMD_NAME.md}
No need for Task() overhead when building 1-2 commands
For 3+ Commands:
CRITICAL: Send ALL Task() calls in a SINGLE MESSAGE for parallel execution!
Example for 3 commands - send all at once:
Task(description="Create command 1", subagent_type="domain-plugin-builder:slash-commands-builder", prompt="You are the slash-commands-builder agent. Create a complete slash command.
Command name: $CMD_1_NAME
Description: $CMD_1_DESC
Plugin: $PLUGIN_NAME
**CRITICAL: Use ACTUAL Agent Names**
BEFORE creating the command, list existing agents:
!{ls plugins/$PLUGIN_NAME/agents/*.md 2>/dev/null}
If the command needs to invoke an agent via Task(), use the ACTUAL agent names from the list above!
- Format: subagent_type=\"$PLUGIN_NAME:agent-name\"
- Example: If agents/security-scanner.md exists, use subagent_type=\"$PLUGIN_NAME:security-scanner\"
- NEVER use placeholder names like \"agent1\" or \"scanner\" - use the REAL agent file names!
Load template: plugins/domain-plugin-builder/skills/build-assistant/templates/commands/template-command-patterns.md
Create command file at: plugins/$PLUGIN_NAME/commands/$CMD_1_NAME.md
Follow framework structure:
- Frontmatter with description, argument-hint, allowed-tools
- Goal → Actions → Phase pattern
- Keep under 150 lines
- Use $ARGUMENTS for all argument references
- Use ACTUAL agent names in Task() calls (subagent_type field)
- Validate with validation script
Deliverable: Complete validated command file with correct agent references")
Task(description="Create command 2", subagent_type="domain-plugin-builder:slash-commands-builder", prompt="[Same structure with $CMD_2_NAME, $CMD_2_DESC]")
Task(description="Create command 3", subagent_type="domain-plugin-builder:slash-commands-builder", prompt="[Same structure with $CMD_3_NAME, $CMD_3_DESC]")
[Continue for all N commands from $ARGUMENTS]
DO NOT wait between Task() calls - send them ALL together in one response!
The agents will run in parallel automatically. Only proceed to Phase 6 after all Task() calls complete.
Phase 6: Validation
For each created command:
!{bash ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/skills/build-assistant/scripts/validate-command.sh plugins/$PLUGIN_NAME/commands/$CMD_NAME.md}
If validation fails, read errors and fix issues.
Phase 7: Sync to Airtable
Use bulk sync script for efficiency:
Bash: python ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/scripts/bulk-sync-airtable.py --plugin={plugin-name} --marketplace={marketplace-name} --type=commands
This syncs ALL commands in parallel instead of one at a time.
Environment Requirement:
- Requires AIRTABLE_TOKEN environment variable
- If not set, displays error message with instructions
Phase 8: Register in Settings
CRITICAL: Commands must be registered to be usable!
Run registration script to add all created commands to ~/.claude/settings.json:
!{bash ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/skills/build-assistant/scripts/register-commands-in-settings.sh $PLUGIN_NAME}
This registers entries like:
- SlashCommand(/$PLUGIN_NAME:$CMD_1)
- SlashCommand(/$PLUGIN_NAME:$CMD_2)
- etc.
Verify registration by checking settings.json contains the new commands.
Phase 9: Self-Validation
Run validation script to verify all work completed:
!{bash ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/skills/build-assistant/scripts/validate-command.sh plugins/$PLUGIN_NAME/commands/*.md}
Mark all todos complete if validation passes.
Phase 10: Summary
Display results:
Commands Created: Plugin: $PLUGIN_NAME Location: plugins/$PLUGIN_NAME/commands/
Files:
- $CMD_1.md - $DESC_1 ✅
- $CMD_2.md - $DESC_2 ✅
- etc.
Validation: All passed ✅ Registration: Complete ✅ Airtable Sync: Attempted ✅
Next Steps:
- Test commands: /$PLUGIN_NAME:$CMD_NAME
- Add to build workflow
- Commit to git