| name | command-development |
| description | This skill guides creating slash commands for Claude Code—reusable Markdown-based prompts with YAML configuration. Use when building custom commands, designing command workflows, or extending Claude Code functionality. |
Command Development
Overview
Commands are reusable prompts defined as Markdown files with optional YAML frontmatter.
Critical: Commands are instructions FOR Claude, not messages TO users.
Command File Structure
---
description: Brief help text shown in /help
allowed-tools: Bash(git:*), Read
model: sonnet
argument-hint: [file-path] [options]
---
Instructions for Claude here.
Analyze the file at $1 and provide...
File Locations
| Location | Scope |
|---|---|
.claude/commands/ |
Project (shared via git) |
~/.claude/commands/ |
Personal (all projects) |
plugin/commands/ |
Plugin distribution |
Frontmatter Fields
| Field | Purpose |
|---|---|
description |
Help text for /help command |
allowed-tools |
Restrict tool access (e.g., Bash(git:*)) |
model |
Specify model: haiku, sonnet, opus |
argument-hint |
Document expected arguments |
disable-model-invocation |
Prevent programmatic calls |
Dynamic Features
Arguments
# All arguments as single string
Process: $ARGUMENTS
# Positional arguments
File: $1
Options: $2
Mode: $3
File References
# Include file contents
Review this code: @src/main.ts
# Argument-based reference
Analyze: @$1
Inline Bash Execution
# Current context
Current branch: !`git branch --show-current`
Recent commits: !`git log --oneline -5`
Naming Conventions
Use verb-noun format:
review-pr.mdgenerate-tests.mdfix-issue.md
Organization
.claude/commands/
├── review-pr.md # Flat for <15 commands
├── git/ # Namespaced for 15+
│ ├── commit.md # Becomes /git-commit
│ └── push.md # Becomes /git-push
└── testing/
└── run-tests.md # Becomes /testing-run-tests
Best Practices
- Single responsibility - One task per command
- Document arguments - Always use
argument-hint - Validate inputs - Check before processing
- Restrict tools - Use
allowed-toolsappropriately - Clear naming - Verb-noun format