Initial commit
This commit is contained in:
166
commands/run-prompt.md
Normal file
166
commands/run-prompt.md
Normal file
@@ -0,0 +1,166 @@
|
||||
---
|
||||
name: run-prompt
|
||||
description: Delegate one or more prompts to fresh sub-task contexts with parallel or sequential execution
|
||||
argument-hint: <prompt-number(s)-or-name> [--parallel|--sequential]
|
||||
allowed-tools: [Read, Task, Bash(ls:*), Bash(mv:*), Bash(git:*)]
|
||||
---
|
||||
|
||||
<context>
|
||||
Git status: !`git status --short`
|
||||
Recent prompts: !`ls -t ./prompts/*.md | head -5`
|
||||
</context>
|
||||
|
||||
<objective>
|
||||
Execute one or more prompts from `./prompts/` as delegated sub-tasks with fresh context. Supports single prompt execution, parallel execution of multiple independent prompts, and sequential execution of dependent prompts.
|
||||
</objective>
|
||||
|
||||
<input>
|
||||
The user will specify which prompt(s) to run via $ARGUMENTS, which can be:
|
||||
|
||||
**Single prompt:**
|
||||
|
||||
- Empty (no arguments): Run the most recently created prompt (default behavior)
|
||||
- A prompt number (e.g., "001", "5", "42")
|
||||
- A partial filename (e.g., "user-auth", "dashboard")
|
||||
|
||||
**Multiple prompts:**
|
||||
|
||||
- Multiple numbers (e.g., "005 006 007")
|
||||
- With execution flag: "005 006 007 --parallel" or "005 006 007 --sequential"
|
||||
- If no flag specified with multiple prompts, default to --sequential for safety
|
||||
</input>
|
||||
|
||||
<process>
|
||||
<step1_parse_arguments>
|
||||
Parse $ARGUMENTS to extract:
|
||||
- Prompt numbers/names (all arguments that are not flags)
|
||||
- Execution strategy flag (--parallel or --sequential)
|
||||
|
||||
<examples>
|
||||
- "005" → Single prompt: 005
|
||||
- "005 006 007" → Multiple prompts: [005, 006, 007], strategy: sequential (default)
|
||||
- "005 006 007 --parallel" → Multiple prompts: [005, 006, 007], strategy: parallel
|
||||
- "005 006 007 --sequential" → Multiple prompts: [005, 006, 007], strategy: sequential
|
||||
</examples>
|
||||
</step1_parse_arguments>
|
||||
|
||||
<step2_resolve_files>
|
||||
For each prompt number/name:
|
||||
|
||||
- If empty or "last": Find with `!ls -t ./prompts/*.md | head -1`
|
||||
- If a number: Find file matching that zero-padded number (e.g., "5" matches "005-_.md", "42" matches "042-_.md")
|
||||
- If text: Find files containing that string in the filename
|
||||
|
||||
<matching_rules>
|
||||
|
||||
- If exactly one match found: Use that file
|
||||
- If multiple matches found: List them and ask user to choose
|
||||
- If no matches found: Report error and list available prompts
|
||||
</matching_rules>
|
||||
</step2_resolve_files>
|
||||
|
||||
<step3_execute>
|
||||
<single_prompt>
|
||||
|
||||
1. Read the complete contents of the prompt file
|
||||
2. Delegate as sub-task using Task tool with subagent_type="general-purpose"
|
||||
3. Wait for completion
|
||||
4. Archive prompt to `./prompts/completed/` with metadata
|
||||
5. Commit all work:
|
||||
- Stage files YOU modified with `git add [file]` (never `git add .`)
|
||||
- Determine appropriate commit type based on changes (fix|feat|refactor|style|docs|test|chore)
|
||||
- Commit with format: `[type]: [description]` (lowercase, specific, concise)
|
||||
6. Return results
|
||||
</single_prompt>
|
||||
|
||||
<parallel_execution>
|
||||
|
||||
1. Read all prompt files
|
||||
2. **Spawn all Task tools in a SINGLE MESSAGE** (this is critical for parallel execution):
|
||||
<example>
|
||||
Use Task tool for prompt 005
|
||||
Use Task tool for prompt 006
|
||||
Use Task tool for prompt 007
|
||||
(All in one message with multiple tool calls)
|
||||
</example>
|
||||
3. Wait for ALL to complete
|
||||
4. Archive all prompts with metadata
|
||||
5. Commit all work:
|
||||
- Stage files YOU modified with `git add [file]` (never `git add .`)
|
||||
- Determine appropriate commit type based on changes (fix|feat|refactor|style|docs|test|chore)
|
||||
- Commit with format: `[type]: [description]` (lowercase, specific, concise)
|
||||
6. Return consolidated results
|
||||
</parallel_execution>
|
||||
|
||||
<sequential_execution>
|
||||
|
||||
1. Read first prompt file
|
||||
2. Spawn Task tool for first prompt
|
||||
3. Wait for completion
|
||||
4. Archive first prompt
|
||||
5. Read second prompt file
|
||||
6. Spawn Task tool for second prompt
|
||||
7. Wait for completion
|
||||
8. Archive second prompt
|
||||
9. Repeat for remaining prompts
|
||||
10. Archive all prompts with metadata
|
||||
11. Commit all work:
|
||||
- Stage files YOU modified with `git add [file]` (never `git add .`)
|
||||
- Determine appropriate commit type based on changes (fix|feat|refactor|style|docs|test|chore)
|
||||
- Commit with format: `[type]: [description]` (lowercase, specific, concise)
|
||||
12. Return consolidated results
|
||||
</sequential_execution>
|
||||
</step3_execute>
|
||||
</process>
|
||||
|
||||
<context_strategy>
|
||||
By delegating to a sub-task, the actual implementation work happens in fresh context while the main conversation stays lean for orchestration and iteration.
|
||||
</context_strategy>
|
||||
|
||||
<output>
|
||||
<single_prompt_output>
|
||||
✓ Executed: ./prompts/005-implement-feature.md
|
||||
✓ Archived to: ./prompts/completed/005-implement-feature.md
|
||||
|
||||
<results>
|
||||
[Summary of what the sub-task accomplished]
|
||||
</results>
|
||||
</single_prompt_output>
|
||||
|
||||
<parallel_output>
|
||||
✓ Executed in PARALLEL:
|
||||
|
||||
- ./prompts/005-implement-auth.md
|
||||
- ./prompts/006-implement-api.md
|
||||
- ./prompts/007-implement-ui.md
|
||||
|
||||
✓ All archived to ./prompts/completed/
|
||||
|
||||
<results>
|
||||
[Consolidated summary of all sub-task results]
|
||||
</results>
|
||||
</parallel_output>
|
||||
|
||||
<sequential_output>
|
||||
✓ Executed SEQUENTIALLY:
|
||||
|
||||
1. ./prompts/005-setup-database.md → Success
|
||||
2. ./prompts/006-create-migrations.md → Success
|
||||
3. ./prompts/007-seed-data.md → Success
|
||||
|
||||
✓ All archived to ./prompts/completed/
|
||||
|
||||
<results>
|
||||
[Consolidated summary showing progression through each step]
|
||||
</results>
|
||||
</sequential_output>
|
||||
</output>
|
||||
|
||||
<critical_notes>
|
||||
|
||||
- For parallel execution: ALL Task tool calls MUST be in a single message
|
||||
- For sequential execution: Wait for each Task to complete before starting next
|
||||
- Archive prompts only after successful completion
|
||||
- If any prompt fails, stop sequential execution and report error
|
||||
- Provide clear, consolidated results for multiple prompt execution
|
||||
</critical_notes>
|
||||
Reference in New Issue
Block a user