201 lines
5.7 KiB
Markdown
201 lines
5.7 KiB
Markdown
---
|
|
argument-hint: "[category/name] [--update] or leave empty for interactive creation"
|
|
description: "Extract and save current session workflow as a reusable slash command"
|
|
allowed-tools: [Write, Edit, Glob, Read, Bash, AskUserQuestion]
|
|
---
|
|
|
|
Extract and save the current or most recent session workflow as a reusable slash command file. Supports creating new commands, updating existing ones, and interactive guided creation.
|
|
|
|
## Usage Examples
|
|
|
|
- `git/draft-pr` - Create new command from recent workflow
|
|
- `git/commit-push --update` - Update existing command with improvements
|
|
- Leave empty - Interactive mode with guided questions
|
|
|
|
## Command Creation Process
|
|
|
|
1. **Determine Mode**:
|
|
- If `--update` flag: Update existing command
|
|
- If command name provided: Auto mode - analyze recent workflow
|
|
- If no arguments: Interactive mode - ask guided questions
|
|
|
|
2. **Analyze Workflow**: Extract recent session patterns, tool usage, and command sequences
|
|
|
|
3. **Generate Command File**:
|
|
- Create at `~/.claude/commands/category/name.md`
|
|
- Add YAML frontmatter with argument-hint, description, allowed-tools
|
|
- Write implementation steps consolidating workflow actions
|
|
- Include usage examples and notes
|
|
|
|
4. **Update Mode** (when using `--update`):
|
|
- Read existing command file
|
|
- Preserve metadata unless workflow significantly changed
|
|
- Merge or enhance implementation steps
|
|
- Add newly used tools to allowed-tools list
|
|
|
|
## Naming & Location
|
|
|
|
**Format**: `category/name` → command file path
|
|
|
|
**Personal Commands**: `~/.claude/commands/category/name.md`
|
|
- Available across all projects
|
|
- For individual workflows
|
|
|
|
**Project Commands**: `./.claude/commands/category/name.md`
|
|
- Shared with team via git
|
|
- For project-specific workflows
|
|
|
|
**Examples**:
|
|
- `git/draft-pr` → `~/.claude/commands/git/draft-pr.md` (personal)
|
|
- `docker/build` → `./.claude/commands/docker/build.md` (project)
|
|
- `jira/clone-issue` → `~/.claude/commands/jira/clone-issue.md` (personal)
|
|
|
|
**Auto-detection** (interactive mode with no name):
|
|
- Git operations → `git/workflow`
|
|
- Node/npm → `node/workflow`
|
|
- Docker → `docker/workflow`
|
|
- Test operations → `test/workflow`
|
|
- Jira → `jira/workflow`
|
|
- AWS → `aws/workflow`
|
|
|
|
## Command File Structure
|
|
|
|
```markdown
|
|
---
|
|
argument-hint: [describe expected arguments and defaults]
|
|
description: Brief action-oriented description
|
|
allowed-tools: [Bash, Read, Write, Edit, etc.]
|
|
---
|
|
|
|
Brief description of command purpose and when to use it.
|
|
|
|
## Implementation Steps
|
|
|
|
1. **Major Action**: Description of what to do (consolidate related actions)
|
|
2. **Next Step**: Clear actionable instruction
|
|
3. **Final Step**: Verification or cleanup
|
|
|
|
## Usage Examples
|
|
|
|
- `/category/name arg1` - Example scenario
|
|
- `/category/name --flag` - Another scenario
|
|
|
|
## Notes
|
|
- Prerequisites or dependencies
|
|
- Related commands
|
|
- Important considerations
|
|
```
|
|
|
|
## Interactive Questions
|
|
|
|
When in interactive mode, ask:
|
|
|
|
1. **Purpose**: What should this command do?
|
|
- Automate git operations
|
|
- Run tests or builds
|
|
- Manage external services (Jira, AWS, Docker)
|
|
- Code generation or scaffolding
|
|
|
|
2. **Scope**: Where should this command be available?
|
|
- Personal use only (save to ~/.claude/commands/)
|
|
- Share with team (save to ./.claude/commands/ for git tracking)
|
|
|
|
3. **Tools**: Which tools are needed? (multi-select)
|
|
- File operations (Read, Write, Edit, Glob)
|
|
- Shell commands (Bash)
|
|
- User interaction (AskUserQuestion)
|
|
- All tools (no restrictions)
|
|
|
|
4. **Arguments**: How should arguments be handled?
|
|
- All as single value
|
|
- Multiple positional arguments
|
|
- With default values
|
|
- No arguments needed
|
|
|
|
## Workflow Extraction
|
|
|
|
When analyzing recent workflow:
|
|
|
|
1. **Track Tool Usage**: Identify frequently used tools
|
|
2. **Find Patterns**: Detect repeated action sequences
|
|
3. **Extract Commands**: Capture successful bash commands and operations
|
|
4. **Consolidate Steps**: Group micro-actions into major steps (avoid excessive detail)
|
|
5. **Infer Metadata**: Set appropriate allowed-tools based on actual usage
|
|
|
|
## Update Mode Details
|
|
|
|
When updating with `--update` flag:
|
|
|
|
1. Preserve original description and argument-hint unless workflow changed significantly
|
|
2. Merge new steps with existing implementation steps
|
|
3. Add new tools to allowed-tools if used in recent workflow
|
|
4. Enhance usage examples with recent successful executions
|
|
5. Update notes with lessons learned or edge cases discovered
|
|
|
|
## Output Format
|
|
|
|
After creation:
|
|
|
|
```text
|
|
✅ Command created: /category/name
|
|
Location: ~/.claude/commands/category/name.md
|
|
Tools: [list of allowed-tools]
|
|
|
|
🔍 Usage: /category/name [arguments]
|
|
```
|
|
|
|
After update:
|
|
|
|
```text
|
|
✅ Command updated: /category/name
|
|
Location: ~/.claude/commands/category/name.md
|
|
|
|
🔄 Changes:
|
|
- [Summary of what changed]
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
**Description**:
|
|
|
|
- Start with action verb (e.g., "Create", "Run", "Update")
|
|
- Keep under 100 characters
|
|
- Be specific and clear
|
|
|
|
**Implementation Steps**:
|
|
|
|
- Consolidate related actions (avoid micro-steps)
|
|
- Use descriptive step names
|
|
- Mention argument usage naturally in descriptions
|
|
- Include verification or error handling
|
|
|
|
**Allowed Tools**:
|
|
|
|
- Only list tools actually needed
|
|
- Omit for unrestricted access
|
|
- Use minimal set for security
|
|
|
|
## Examples
|
|
|
|
```bash
|
|
# Interactive creation
|
|
/claude:create-command
|
|
|
|
# Create from recent git workflow
|
|
/claude:create-command git/sync-upstream
|
|
|
|
# Update existing command with improvements
|
|
/claude:create-command git/commit-push --update
|
|
|
|
# Create project-specific test command
|
|
/claude:create-command test/e2e-debug
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Commands expand to full prompts when invoked
|
|
- Keep focused on one specific workflow
|
|
- Test thoroughly before sharing with team
|
|
- Use `--update` to refine based on real usage
|
|
- Commands run in current working directory context
|