[ PROMPT_NODE_24557 ]
Command Creator – Examples
[ SKILL_DOCUMENTATION ]
# Command Examples
This document provides complete, real-world examples of slash commands from the erk project. Use these as references when creating new commands.
## Example 1: submit-stack (Workflow Automation Pattern)
**Pattern:** Workflow Automation (Analyze → Act → Report)
**Full source:**
```markdown
---
description: Create git commit and submit stack with Graphite
argument-hint:
---
# Submit Stack
Automatically create a git commit with a helpful summary message and submit the entire Graphite stack as pull requests.
## What This Command Does
1. **Analyze changes**: First checks for .PLAN.md file to understand context, otherwise reviews git status and diff
2. **Create commit**: Generates a concise single-sentence commit message summarizing the changes
3. **Restack**: Runs `gt restack` to ensure all branches in the stack are properly rebased
4. **Submit stack**: Runs `gt submit --stack --publish --no-edit` to create/update PRs for the entire stack
5. **Report results**: Shows the submitted PRs and their URLs
## Usage
```bash
# With description argument
/submit-stack "Add user authentication feature"
# Without argument (will analyze changes automatically)
/submit-stack
```
## Implementation Steps
When this command is invoked:
### 1. Analyze Current Changes
**FIRST**: Check if `.PLAN.md` exists in the repository root:
```bash
if [ -f .PLAN.md ]; then
# Use .PLAN.md for context
else
# Fall back to git analysis
fi
```
If `.PLAN.md` exists:
- Read the plan file to understand what was implemented
- Use the plan's summary and goals to create the commit message
If no `.PLAN.md`:
- Run `git status` and `git diff HEAD` to see changes
- Review the changes to create an accurate summary
### 2. Create Git Commit
Based on the analysis:
- If user provided an argument, use it as the basis for the commit message
- If `.PLAN.md` exists, summarize what was implemented from the plan
- Otherwise, analyze the git changes and create a descriptive single-sentence summary
- Ensure the commit message follows the repository's commit style (check `git log` for patterns)
- **DO NOT include any Claude Code footer or co-authorship attribution**
```bash
git add .
git commit -m "[Single sentence summary of what was done]"
```
### 3. Restack the Stack
Ensure all branches in the stack are properly rebased:
```bash
gt restack
```
### 4. Submit Stack
Submit all PRs in the stack without interactive prompts:
```bash
gt submit --stack --publish --no-edit --restack
```
Flags explained:
- `--stack`: Submit entire stack (upstack + downstack)
- `--publish`: Publish any draft PRs
- `--no-edit`: Use commit messages as PR titles/descriptions without prompting
- `--restack`: Restack branches before submitting (if needed)
### 5. Show Results
After submission, show:
- Number of PRs created/updated
- PR URLs (extract from `gt` output)
- Current stack status with `gt log short`
## Important Notes
- **Check for .PLAN.md FIRST** before analyzing git changes
- **NEVER run additional exploration commands** beyond checking .PLAN.md, git status/diff/log
- **Stage all changes** with `git add .` before committing
- **Single sentence summary**: Keep commit message concise and focused
- **Follow repo patterns**: Check recent commits with `git log` to match style
- **NO Claude footer**: Do not add any attribution or generated-by footer
- If there are no staged or unstaged changes, report to the user and exit
## Error Handling
If any step fails:
- Report the specific command that failed
- Show the error message
- Ask the user how to proceed (don't retry automatically)
## Example Output
```
Analyzing changes...
✓ Found .PLAN.md - using plan context
✓ Found changes in 3 files
Creating commit: "Add dot-agent submit-stack command for automated PR workflow"
✓ Commit created
Restacking branches...
✓ Stack restacked successfully
Submitting stack...
✓ 2 PRs created/updated:
- PR #123: dot-agent-claude-folder-support (new)
- PR #122: base-branch (updated)
Current stack:
◯ dot-agent-claude-folder-support (current)
◯ base-branch
◉ main
```
```
**Key features of this example:**
- Argument handling (optional ``)
- Context file priority check (`.PLAN.md` first)
- Conditional logic based on file existence
- Specific command flags explained
- Clear anti-patterns ("NEVER run additional exploration")
- Expected output format shown
## Example 2: ensure-ci (Iterative Fixing Pattern)
**Pattern:** Iterative Fixing (Run → Parse → Fix → Repeat)
**Full source:**
```markdown
---
description: Run make all-ci and iteratively fix issues until all checks pass
---
You are an implementation finalizer. Your task is to run `make all-ci` and iteratively fix any issues until all CI checks pass successfully.
## Your Mission
Run the full CI pipeline (`make all-ci`) and automatically fix any failures. Keep iterating until all checks pass or you get stuck on an issue that requires human intervention.
## CI Pipeline (make all-ci)
The `make all-ci` target runs these checks in order:
1. **lint** - Ruff linting checks
2. **format** - Ruff code formatting checks
3. **prettier-check** - Markdown formatting checks
4. **pyright** - Type checking
5. **test** - Pytest test suite
## Iteration Process
### 1. Initial Run
Start by running `make all-ci` to see the current state:
```bash
make all-ci
```
### 2. Parse Failures
Analyze the output to identify which check(s) failed. Common failure patterns:
- **Ruff lint failures**: Look for "ruff check" errors
- **Format failures**: Look for "ruff format --check" or files that would be reformatted
- **Prettier failures**: Look for markdown files that need formatting
- **Pyright failures**: Look for type errors with file paths and line numbers
- **Test failures**: Look for pytest failures with test names and assertion errors
### 3. Apply Targeted Fixes
Based on the failure type, apply appropriate fixes:
#### Ruff Lint Failures
```bash
make fix # Runs: uv run ruff check --fix --unsafe-fixes
```
#### Ruff Format Failures
```bash
make format # Runs: uv run ruff format
```
#### Prettier Failures
```bash
make prettier # Runs: prettier --write '*_/_.md'
```
#### Pyright Type Errors
- Use Read tool to examine the file at the reported line number
- Use Edit tool to fix type annotations, add type hints, or fix type mismatches
- Follow the coding standards in AGENTS.md (use `list[...]` not `List[...]`, etc.)
#### Test Failures
- Read the test file and source file involved
- Analyze the assertion error or exception
- Edit the source code or test to fix the issue
- Consider if the test is validating correct behavior
### 4. Verify Fix
After applying fixes, run `make all-ci` again to verify:
```bash
make all-ci
```
### 5. Repeat Until Success
Continue the cycle: run → identify failures → fix → verify
## Iteration Control
**Safety Limits:**
- **Maximum iterations**: 10 attempts
- **Stuck detection**: If the same error appears 3 times in a row, stop
- **Progress tracking**: Use TodoWrite to show iteration progress
## Progress Reporting
Use TodoWrite to track your progress:
```
Iteration 1: Fixing lint errors
Iteration 2: Fixing format errors
Iteration 3: Fixing type errors in src/erk/cli/commands/switch.py
Iteration 4: All checks passed
```
Update the status as you work through each iteration.
## When to Stop
**SUCCESS**: Stop when `make all-ci` exits with code 0 (all checks passed)
**STUCK**: Stop and report to user if:
1. You've completed 10 iterations without success
2. The same error persists after 3 fix attempts
3. You encounter an error you cannot automatically fix
## Stuck Reporting Format
If you get stuck, report clearly:
```markdown
## Finalization Status: STUCK
I was unable to resolve the following issue after N attempts:
**Check**: [lint/format/prettier/pyright/test]
**Error**:
[Exact error message]
**File**: [file path if applicable]
**Attempted Fixes**:
1. [What you tried first]
2. [What you tried second]
3. [What you tried third]
**Next Steps**:
[Suggest what needs to be done manually]
```
## Success Reporting Format
When all checks pass:
```markdown
## Finalization Status: SUCCESS
All CI checks passed after N iteration(s):
- Lint: PASSED
- Format: PASSED
- Prettier: PASSED
- Pyright: PASSED
- Tests: PASSED
The code is ready for commit/PR.
```
## Important Guidelines
1. **Be systematic**: Fix one type of error at a time
2. **Run full CI**: Always run full `make all-ci`, not individual checks
3. **Track progress**: Use TodoWrite for every iteration
4. **Don't guess**: Read files before making changes
5. **Follow standards**: Adhere to AGENTS.md coding standards
6. **Fail gracefully**: Report clearly when stuck
7. **Be efficient**: Use targeted fixes (don't reformat everything for one lint error)
## Example Flow
```
Iteration 1:
- Run make all-ci
- Found: 5 lint errors, 2 files need formatting
- Fix: Run make fix && make format
- Result: 3 lint errors remain
Iteration 2:
- Run make all-ci
- Found: 3 lint errors (imports)
- Fix: Edit files to fix import issues
- Result: All lint/format pass, 2 type errors
Iteration 3:
- Run make all-ci
- Found: 2 pyright errors in switch.py:45 and switch.py:67
- Fix: Add type annotations
- Result: All checks pass
SUCCESS
```
## Begin Now
Start by running `make all-ci` and begin the iterative fix process. Track your progress with TodoWrite and report your final status clearly.
```
**Key features of this example:**
- Maximum iteration limit (10 attempts)
- Stuck detection (same error 3 times)
- Per-error-type fix instructions
- TodoWrite progress tracking requirement
- Clear success/failure reporting formats
- Detailed example flow showing iterations
## Example 3: create-implementation-plan (Agent Delegation Pattern)
**Pattern:** Agent Delegation (Context → Delegate → Iterate)
**Full source:**
```markdown
---
description: Create an implementation plan using the subagent agent
---
## ⚠️ PLANNING-ONLY MODE ACTIVE
I'll help you create an implementation plan using the specialized planning agent. This workflow is designed for **planning only** - no code will be written until the plan is finalized and saved to disk.
### How This Works
1. **You provide context** about what needs to be built
2. **The agent creates a plan** (displayed in terminal for review)
3. **We iterate together** until the plan is perfect
4. **Plan is saved to disk** as a markdown file
5. **Then (and only then)** implementation can begin
### Provide Your Planning Context
You can share:
- A feature you want to implement
- An error message or bug to fix
- Performance issues to optimize
- A refactoring goal
- Any relevant context or requirements
**What would you like to plan?**
---
**IMPORTANT AGENT INSTRUCTIONS:**
When invoking the subagent agent:
1. **DO NOT write any code during planning phase**
2. **DO NOT use Edit, Write, or any modification tools**
3. **ONLY output the plan to terminal for iterative review**
4. **ONLY persist to disk after explicit user approval**
5. The agent should remain in "Phase 1: Human-Readable Planning" mode until the user explicitly approves with signals like "looks good", "approved", or "ready to implement"
The goal is to create a comprehensive implementation plan that will be saved as a `.md` file at the repository root, which can then guide future implementation work.
```
**Key features of this example:**
- User-facing explanation of the workflow
- Clear phase boundaries (planning vs implementation)
- Explicit anti-patterns ("DO NOT write code")
- User approval trigger ("looks good", "approved")
- Tells agent which specialized agent to invoke
- Specifies where to save output (`.md` at root)
## Example 4: codex-review (Simple Execution Pattern)
**Pattern:** Simple Execution (Parse Arguments → Execute → Return Output)
**Minimal example structure:**
```markdown
---
description: Perform a local code review using repository standards and best practices
argument-hint: [base-branch]
---
# Codex Review
Performs a thorough code review of changes between the current branch and the base branch.
## What This Command Does
1. Determines base branch (uses provided argument or defaults to main/master)
2. Runs codex-review script with the base branch
3. Displays review findings and suggestions
## Usage
```bash
# With explicit base branch
/codex-review develop
# Without argument (auto-detects main/master)
/codex-review
```
## Implementation Steps
### 1. Determine Base Branch
If `[base-branch]` argument is provided:
- Use the specified branch
If no argument:
- Check if `main` branch exists: `git rev-parse --verify main`
- If yes, use `main`
- If no, use `master`
### 2. Run Review Script
Execute the review script with the determined base branch:
```bash
scripts/codex-review.py [base-branch]
```
### 3. Display Results
Show the script output directly to the user, including:
- Files reviewed
- Issues found
- Suggestions for improvements
- Compliance with coding standards
## Error Handling
If the script fails:
- Show the error message
- Check if the base branch exists
- Verify the script is executable
## Notes
- Square brackets `[base-branch]` indicate optional argument
- Script handles actual review logic
- Command is a simple wrapper for convenience
```
**Key features of this example:**
- Optional argument handling (square brackets)
- Argument defaulting logic
- Direct script invocation
- Minimal additional logic
- Clear output pass-through
## Pattern Comparison
| Feature | submit-stack | ensure-ci | create-implementation-plan | codex-review |
| --------------------- | ------------------------ | ------------------ | -------------------------- | ------------------------ |
| **Pattern** | Workflow Automation | Iterative Fixing | Agent Delegation | Simple Execution |
| **Arguments** | Optional `` | None | None | Optional `[base-branch]` |
| **Context Files** | Checks `.PLAN.md` | Checks `AGENTS.md` | None | None |
| **Iterations** | Single pass | Up to 10 | Iterative (user-driven) | Single pass |
| **Tool Usage** | Git, Graphite | Make, Edit tools | Task tool (agent) | Script execution |
| **Progress Tracking** | Inline reporting | TodoWrite required | None (user reviews) | None |
| **Error Handling** | Ask user | Stop if stuck | None specified | Show error message |
| **Success Criteria** | PRs submitted | Exit code 0 | User approves plan | Script completes |
## Usage Guidance
**Use submit-stack as a reference when:**
- Command needs to check context files first
- Workflow has clear sequential steps
- Git operations are involved
- Results need clear reporting
**Use ensure-ci as a reference when:**
- Command needs to iterate until success
- Multiple error types need different fixes
- Progress tracking is important
- Stuck detection is needed
**Use create-implementation-plan as a reference when:**
- Command delegates to specialized agent
- User review/approval is required
- No direct code modification should happen
- Output is saved to specific location
**Use codex-review as a reference when:**
- Command is a simple wrapper
- Main logic is in external script
- Argument handling is straightforward
- Output is passed through directly
Source: claude-code-templates (MIT). See About Us for full credits.