Create a new Claude Code slash command with proper YAML frontmatter structure. Use when the user wants to add a custom slash command to a plugin. Handles command file creation with description, argument hints, allowed tools, and all advanced features.
80
77%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./plugins/claude-code-dev/skills/create-command/SKILL.mdCreate new Claude Code slash commands with proper configuration and advanced features.
Commands stored in your repository and shared with your team.
Location: .claude/commands/ or plugins/<plugin>/commands/
Shows "(project)" in /help.
Commands available across all your projects.
Location: ~/.claude/commands/
Shows "(user)" in /help.
Commands are markdown files with YAML frontmatter:
---
description: Short description shown in /help
argument-hint: <required-arg> [optional-arg]
---
# Command Name
Instructions for Claude when this command is invoked...| Field | Purpose | Default |
|---|---|---|
description | Brief description of the command | Uses first line from prompt |
argument-hint | Arguments shown in autocomplete | None |
allowed-tools | List of tools the command can use | Inherits from conversation |
model | Specific model string | Inherits from conversation |
disable-model-invocation | Prevent SlashCommand tool from calling | false |
$ARGUMENTSCaptures all arguments passed to the command:
---
description: Fix a GitHub issue
argument-hint: <issue-number> [priority]
---
Fix issue #$ARGUMENTS following our coding standards.
# Usage: /fix-issue 123 high-priority
# $ARGUMENTS becomes: "123 high-priority"$1, $2, etc.Access specific arguments individually:
---
description: Review pull request
argument-hint: <pr-number> <priority> <assignee>
---
Review PR #$1 with priority $2 and assign to $3.
Focus on security, performance, and code style.
# Usage: /review-pr 456 high alice
# $1 = "456", $2 = "high", $3 = "alice"Execute bash commands before the slash command runs using the ! prefix.
IMPORTANT: You MUST include allowed-tools with the Bash tool.
---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
description: Create a git commit
---
## Context
- Current git status: !`git status`
- Current git diff: !`git diff HEAD`
- Current branch: !`git branch --show-current`
- Recent commits: !`git log --oneline -10`
## Your task
Based on the above changes, create a single git commit.Include file contents using the @ prefix:
---
description: Review implementation
---
# Reference a specific file
Review the implementation in @src/utils/helpers.js
# Reference multiple files
Compare @src/old-version.js with @src/new-version.jsOrganize commands in subdirectories. The subdirectory appears in the description but not the command name.
.claude/commands/
├── frontend/
│ └── component.md # Creates /component (project:frontend)
└── backend/
└── api.md # Creates /api (project:backend)| Syntax | Meaning |
|---|---|
<name> | Required argument |
[name] | Optional argument |
[--flag] | Optional flag |
[--option <value>] | Optional flag with value |
"" or omit | No arguments |
---
description: Show project status overview
---
Show a summary of the current project status including:
- Git branch and recent commits
- Open issues and PRs
- Build status---
allowed-tools: Bash(npm:*), Bash(yarn:*)
description: Run tests with coverage
argument-hint: [--watch] [--coverage]
---
Run the test suite with the following options:
- If --watch is passed, run in watch mode
- If --coverage is passed, generate coverage report
Use npm or yarn based on the lock file present.---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
description: Create a conventional commit
argument-hint: [message]
---
## Context
- Current status: !`git status --short`
- Staged changes: !`git diff --cached --stat`
- Recent commits: !`git log --oneline -5`
## Task
Create a git commit following conventional commit format:
- type(scope): description
- Types: feat, fix, docs, style, refactor, test, chore
If $ARGUMENTS is provided, use it as the commit message.
Otherwise, analyze the changes and generate an appropriate message.---
allowed-tools: Bash(docker:*), Bash(kubectl:*)
description: Deploy to environment
argument-hint: <environment> [--dry-run]
model: claude-sonnet-4-20250514
---
Deploy to $1 environment.
## Pre-flight checks
- Verify current branch: !`git branch --show-current`
- Check for uncommitted changes: !`git status --porcelain`
## Process
1. Build Docker image
2. Push to registry
3. Update Kubernetes deployment
4. Verify rollout status
If --dry-run is in $ARGUMENTS, only show what would be done.---
description: Review code changes
argument-hint: [file-path]
---
Review the code for:
- Security vulnerabilities
- Performance issues
- Code style violations
- Best practices
If a file path is provided ($1), focus on that file.
Otherwise, review all changed files:
!`git diff --name-only HEAD~1`
Reference style guide: @.claude/STYLE_GUIDE.mdInclude extended thinking keywords to trigger deeper analysis:
---
description: Analyze architecture deeply
---
Think step by step about the architecture of this codebase.
Consider:
- Design patterns used
- Potential improvements
- Scalability concernsFor commands to be invocable by Claude via the SlashCommand tool:
description frontmatter fielddisable-model-invocation: true to prevent automatic invocation/compact) are NOT supportedSlashCommand:/commit # Exact match only
SlashCommand:/review-pr:* # Prefix match with any arguments| Type | Location |
|---|---|
| Plugin commands | plugins/<plugin>/commands/<name>.md |
| Project commands | .claude/commands/<name>.md |
| Personal commands | ~/.claude/commands/<name>.md |
The filename (without .md) becomes the slash command name.
| Aspect | Slash Commands | Skills |
|---|---|---|
| Complexity | Simple prompts | Complex capabilities |
| Structure | Single .md file | Directory with SKILL.md + resources |
| Discovery | Explicit (/command) | Automatic (context-based) |
| Files | One file only | Multiple files, scripts, templates |
Use slash commands when:
Use Skills when:
0ebe7ae
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.