Agent skill

command-development

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.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/command-development

SKILL.md

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

markdown
---
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

markdown
# All arguments as single string
Process: $ARGUMENTS

# Positional arguments
File: $1
Options: $2
Mode: $3

File References

markdown
# Include file contents
Review this code: @src/main.ts

# Argument-based reference
Analyze: @$1

Inline Bash Execution

markdown
# Current context
Current branch: !`git branch --show-current`
Recent commits: !`git log --oneline -5`

Naming Conventions

Use verb-noun format:

  • review-pr.md
  • generate-tests.md
  • fix-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

  1. Single responsibility - One task per command
  2. Document arguments - Always use argument-hint
  3. Validate inputs - Check before processing
  4. Restrict tools - Use allowed-tools appropriately
  5. Clear naming - Verb-noun format

Didn't find tool you were looking for?

Be as detailed as possible for better results