Claude Code Plugins

Community-maintained marketplace

Feedback

Create effective Claude Code slash commands with proper YAML frontmatter and argument handling. Use when writing new slash commands, improving existing commands, or learning command best practices.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name write-command
description Create effective Claude Code slash commands with proper YAML frontmatter and argument handling. Use when writing new slash commands, improving existing commands, or learning command best practices.

Slash Command Creator

Create slash commands that users explicitly invoke with /command-name.

Command vs Skill

Aspect Slash Command Skill
Activation Manual /command Automatic (context)
Location .claude/commands/<name>.md .claude/skills/<name>/SKILL.md
Best for On-demand actions Recurring workflows

File Structure

.claude/
└── commands/
    ├── my-command.md
    └── subdir/
        └── nested-command.md

Creation Process

1. Initialize

Run the init script to create proper structure:

python3 scripts/init_command.py <command-name>

Options:

  • --path, -p: Output directory (default: .claude/commands)
  • --no-args: Create without argument template

2. Edit the Command

Update the generated file with your instructions.

3. Test

Restart Claude Code, then run /<command-name>.

Command Template

---
name: command-name
description: Brief description of what this command does
arguments:
  - name: required_arg
    description: Something required
    required: true
  - name: optional_arg
    description: Something optional
    required: false
---

# Command Title

[What this command does]

## Process

### 1. [Step Name]
[Instructions with code examples]

### 2. [Step Name]
[Instructions]

## Example Usage

/command-name value1 value2

YAML Frontmatter

Required Fields

Field Format
name lowercase, hyphens (must match filename)
description Brief action description

Optional Fields

Field Description
arguments Array of argument definitions
allowed-tools Pre-approved tools list

Arguments

Define arguments as array:

arguments:
  - name: issue-id
    description: GitHub issue number
    required: true
  - name: branch
    description: Branch name (default: main)
    required: false

Accessing Arguments

Syntax Usage
$ARGUMENTS Entire input string
$1, $2 Positional parameters

Example: /deploy app prod$1=app, $2=prod

Body Guidelines

Do:

  • Use imperative form ("Run" not "You should run")
  • Provide concrete code examples
  • Break into numbered steps
  • Show example usage

Don't:

  • Include "When to use" (goes in description)
  • Be vague about commands
  • Make it too long

Special Features

Bash Execution

!npm run build
!python scripts/process.py

File References

Review this:
@src/index.ts

Validation Checklist

  • Name matches filename (kebab-case)
  • Description is clear and actionable
  • Arguments have descriptions and required flags
  • Body uses imperative form
  • Includes example usage