slash-commands — Claude Code skill: build your own slash commands
A reference for writing slash commands: quick prompts, bash output and file references inside one markdown file.
npx skills add parcadei/Continuous-Claude-v3 --skill slash-commands -a claude-codeWhat slash-commands does
The skill covers user-triggered prompts written as /command-name and the file format behind them. Frontmatter holds description for /help, plus optional allowed-tools and argument-hint. Arguments arrive as $1, $2, or all at once through $ARGUMENTS.
Bash runs before the prompt loads when you prefix a command with ! in backticks, like !git status, and the output lands in context. That only works if frontmatter declares allowed-tools: Bash(...) — skip the declaration and the command fails. Files come in with @: @.claude/STYLE_GUIDE.md, or a glob such as @src/**/*.util.ts.
Project commands live in .claude/commands, personal ones in ~/.claude/commands. Subdirectories create namespaces: frontend/component.md shows up as /component with a project:frontend tag. A comparison table sets commands against skills — a command is a single .md file you invoke by name, a skill is a directory with SKILL.md that gets discovered on its own. Reach for a command when the prompt is short and you type it often.
What it helps with
- turn a prompt you retype daily into one call
- pull
git statusoutput into a command - point a review at a style guide file
- pass a PR number and priority as arguments
- group commands into namespaced subdirectories
Example prompts for the agent
- create a
/optimizeslash command in.claude/commandsthat looks for performance bottlenecks - add
git diff --stagedoutput to my commit command and suggest a message - explain slash commands vs skills for a short template prompt
How to install slash-commands
1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill slash-commands -a claude-code2Manually: put the files in place
~/.claude/skills/slash-commands/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/slash-commands/
1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill slash-commands -a codex2Manually: put the files in place
.agents/skills/slash-commands/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill slash-commands -a cursor2Manually: put the files in place
.cursor/skills/slash-commands/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install parcadei/Continuous-Claude-v3 slash-commands2Manually: put the files in place
.github/skills/slash-commands/SKILL.md1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill slash-commands -a gemini-cli2Platform CLI
gemini skills install https://github.com/parcadei/Continuous-Claude-v3 --path .claude/skills/slash-commandsManually: put the files in place
.devin/skills/slash-commands/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill slash-commands -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about slash-commands
How do I install slash-commands in Claude?
Run npx skills add parcadei/Continuous-Claude-v3 --skill slash-commands -a claude-code. The skill file then sits at ~/.claude/skills/slash-commands/SKILL.md.
What does slash-commands do?
It documents how to create and use custom slash commands: the file format, arguments, bash execution with !, and file references with @.
How is a slash command different from a skill?
A command is one .md file you invoke explicitly by name. A skill is a directory with SKILL.md that gets picked up automatically.
Source text
SKILL.md · MIT
---
name: slash-commands
description: Create and use Claude Code slash commands - quick prompts, bash execution, file references
allowed-tools: [Read, Write, Bash]
user-invocable: false
---
# Slash Commands Reference
Create and use user-triggered prompts with `/command-name` syntax.
## When to Use
- "How do I create a slash command?"
- "What slash commands are available?"
- "Add bash to my command"
- "Use file references in commands"
- "Slash commands vs skills"
## Built-in Commands
| Command | Purpose |
|---------|---------|
| `/clear` | Clear conversation history |
| `/compact` | Compact conversation with focus |
| `/config` | Open settings interface |
| `/cost` | Show token usage |
| `/agents` | Manage sub-agents |
| `/mcp` | Manage MCP servers |
| `/memory` | Edit CLAUDE.md files |
| `/model` | Select AI model |
| `/review` | Request code review |
| `/resume` | Resume session |
| `/help` | Get usage help |
## Creating Commands
### Project Commands
```bash
mkdir -p .claude/commands
cat > .claude/commands/optimize.md << 'EOF'
---
description: Analyze code for performance issues
---
Review this code for:
- Performance bottlenecks
- Memory leaks
- Caching opportunities
EOF
```
### Personal Commands
```bash
mkdir -p ~/.claude/commands
cat > ~/.claude/commands/review.md << 'EOF'
---
description: Security-focused code review
---
Check for vulnerabilities:
- Input validation
- SQL injection
- XSS risks
EOF
```
## Command File Format
```yaml
---
description: Brief description for /help
allowed-tools: [Bash, Read, Write] # Optional
argument-hint: "[file] [type]" # Optional
---
Your markdown instructions here.
Use $1, $2 for arguments or $ARGUMENTS for all.
```
## Bash Execution
Run bash before loading prompt with `!` prefix:
```yaml
---
allowed-tools: Bash(git:*), Bash(grep:*)
description: Git commit helper
---
Current status: !`git status`
Staged changes: !`git diff --staged`
Recent commits: !`git log --oneline -5`
Based on these changes, suggest a commit message.
```
**Rules:**
- Must declare `allowed-tools: Bash(...)` in frontmatter
- Use backticks: `` !`command` ``
- Output is included in Claude's context
## File References
Include files with `@` prefix:
```markdown
Review against @.claude/STYLE_GUIDE.md
Compare:
- @src/old.js
- @src/new.js
Refactor files matching @src/**/*.util.ts
```
## Arguments
```yaml
---
argument-hint: "[pr-number] [priority]"
---
Review PR #$1 with priority: $2
# Or use all arguments:
Fix issue #$ARGUMENTS
```
**Usage:**
```bash
/review-pr 456 high
# $1 = "456", $2 = "high"
```
## Namespacing
Organize with subdirectories:
```
.claude/commands/
├── frontend/
│ └── component.md → /component (project:frontend)
└── backend/
└── endpoint.md → /endpoint (project:backend)
```
## MCP Slash Commands
MCP servers expose prompts as commands:
```bash
/mcp__github__list_prs
/mcp__github__pr_review 456
/mcp__jira__create_issue "Bug" high
```
## Slash Commands vs Skills
| Aspect | Slash Commands | Skills |
|--------|----------------|--------|
| Invocation | Explicit: `/command` | Auto-discovered |
| Files | Single .md file | Directory with SKILL.md |
| Use Case | Quick prompts | Complex workflows |
**Use slash commands for:** Frequently typed prompts, simple templates
**Use skills for:** Complex workflows, multiple files, auto-discovery
## Example: Complete Git Commit Command
```yaml
---
description: Generate semantic commit message
allowed-tools: Bash(git:*), Read
argument-hint: "[type]"
---
# Semantic Commit Generator
Staged files: !`git diff --name-only --cached`
Diff preview:
!`git diff --cached | head -100`
Generate a conventional commit message.
Type: $1 (feat/fix/docs/style/refactor/perf/test/chore)
Format: `<type>(<scope>): <subject>`
```
**Usage:** `/commit feat`
© parcadei · MIT · parcadei/Continuous-Claude-v3