--- description: Create slash command(s) following standardized structure - supports parallel creation for 3+ commands argument-hint: "" [--plugin=name] | "" "" ... [--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 `.env` files with `.gitignore` - Create `.env.example` with 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: 1. **List existing agents (to use correct names in Task() calls):** !{ls plugins/$PLUGIN_NAME/agents/*.md 2>/dev/null} 2. Load template: !{Read ~/.claude/plugins/marketplaces/domain-plugin-builder/plugins/domain-plugin-builder/skills/build-assistant/templates/commands/template-command-patterns.md} 3. 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! 4. 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