Skip to content

Control Claude’s behavior during an interactive session with slash commands.

CommandPurpose
/add-dirAdd additional working directories
/agentsManage custom AI subagents for specialized tasks
/bashesList and manage background tasks
/bugReport bugs (sends conversation to Anthropic)
/clearClear conversation history
/compact [instructions]Compact conversation with optional focus instructions
/configOpen the Settings interface (Config tab)
/contextVisualize current context usage as a colored grid
/costShow token usage statistics. See cost tracking guide for subscription-specific details.
/doctorChecks the health of your Claude Code installation
/exitExit the REPL
/export [filename]Export the current conversation to a file or clipboard
/helpGet usage help
/hooksManage hook configurations for tool events
/ideManage IDE integrations and show status
/initInitialize project with CLAUDE.md guide
/install-github-appSet up Claude GitHub Actions for a repository
/loginSwitch Anthropic accounts
/logoutSign out from your Anthropic account
/mcpManage MCP server connections and OAuth authentication
/memoryEdit CLAUDE.md memory files
/modelSelect or change the AI model
/output-style [style]Set the output style directly or from a selection menu
/permissionsView or update permissions
/pluginManage Claude Code plugins
/pr-commentsView pull request comments
/privacy-settingsView and update your privacy settings
/release-notesView release notes
/rename <name>Rename the current session for easier identification
/resume [session]Resume a conversation by ID or name, or open the session picker
/reviewRequest code review
/rewindRewind the conversation and/or code
/sandboxEnable sandboxed bash tool with filesystem and network isolation for safer, more autonomous execution
/security-reviewComplete a security review of pending changes on the current branch
/statsVisualize daily usage, session history, streaks, and model preferences
/statusOpen the Settings interface (Status tab) showing version, model, account, and connectivity
/statuslineSet up Claude Code’s status line UI
/terminal-setupInstall Shift+Enter key binding for newlines (iTerm2 and VSCode only)
/todosList current TODO items
/usageFor subscription plans only: show plan usage limits and rate limit status
/vimEnter vim mode for alternating insert and command modes

Custom slash commands allow you to define frequently used prompts as Markdown files that Claude Code can execute. Commands are organized by scope (project-specific or personal) and support namespacing through directory structures.

/<command-name> [arguments]
ParameterDescription
<command-name>Name derived from the Markdown filename (without .md extension)
[arguments]Optional arguments passed to the command

Commands stored in your repository and shared with your team. When listed in /help, these commands show “(project)” after their description.

Location: .claude/commands/

The following example creates the /optimize command:

Terminal window
# Create a project command
mkdir -p .claude/commands
echo "Analyze this code for performance issues and suggest optimizations:" > .claude/commands/optimize.md

Commands available across all your projects. When listed in /help, these commands show “(user)” after their description.

Location: ~/.claude/commands/

The following example creates the /security-review command:

Terminal window
# Create a personal command
mkdir -p ~/.claude/commands
echo "Review this code for security vulnerabilities:" > ~/.claude/commands/security-review.md

Use subdirectories to group related commands. Subdirectories appear in the command description but don’t affect the command name.

For example:

  • .claude/commands/frontend/component.md creates /component with description “(project:frontend)”
  • ~/.claude/commands/component.md creates /component with description “(user)”

If a project command and user command share the same name, the project command takes precedence and the user command is silently ignored. For example, if both .claude/commands/deploy.md and ~/.claude/commands/deploy.md exist, /deploy runs the project version.

Commands in different subdirectories can share names since the subdirectory appears in the description to distinguish them. For example, .claude/commands/frontend/test.md and .claude/commands/backend/test.md both create /test, but show as “(project:frontend)” and “(project:backend)” respectively.

Pass dynamic values to commands using argument placeholders:

The $ARGUMENTS placeholder captures all arguments passed to the command:

Terminal window
# Command definition
echo 'Fix issue #$ARGUMENTS following our coding standards' > .claude/commands/fix-issue.md
# Usage
> /fix-issue 123 high-priority
# $ARGUMENTS becomes: "123 high-priority"

Access specific arguments individually using positional parameters (similar to shell scripts):

Terminal window
# Command definition
echo 'Review PR #$1 with priority $2 and assign to $3' > .claude/commands/review-pr.md
# Usage
> /review-pr 456 high alice
# $1 becomes "456", $2 becomes "high", $3 becomes "alice"

Use positional arguments when you need to:

  • Access arguments individually in different parts of your command
  • Provide defaults for missing arguments
  • Build more structured commands with specific parameter roles

Execute bash commands before the slash command runs using the ! prefix. The output is included in the command context. You must include allowed-tools with the Bash tool, but you can choose the specific bash commands to allow.

For example:

---
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 (staged and unstaged changes): !`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 in commands using the @ prefix to reference files.

For example:

# Reference a specific file
Review the implementation in @src/utils/helpers.js
# Reference multiple files
Compare @src/old-version.js with @src/new-version.js

Slash commands can trigger extended thinking by including extended thinking keywords.

Command files support frontmatter, useful for specifying metadata about the command:

FrontmatterPurposeDefault
allowed-toolsList of tools the command can useInherits from the conversation
argument-hintThe arguments expected for the slash command. Example: argument-hint: add [tagId] | remove [tagId] | list. This hint is shown to the user when auto-completing the slash command.None
descriptionBrief description of the commandUses the first line from the prompt
modelSpecific model string (see Models overview)Inherits from the conversation
disable-model-invocationWhether to prevent SlashCommand tool from calling this commandfalse

For example:

---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
argument-hint: [message]
description: Create a git commit
model: claude-3-5-haiku-20241022
---
Create a git commit with message: $ARGUMENTS

Example using positional arguments:

---
argument-hint: [pr-number] [priority] [assignee]
description: Review pull request
---
Review PR #$1 with priority $2 and assign to $3.
Focus on security, performance, and code style.

Plugins can provide custom slash commands that integrate seamlessly with Claude Code. Plugin commands work exactly like user-defined commands but are distributed through plugin marketplaces.

Plugin commands are:

  • Namespaced: Commands can use the format /plugin-name:command-name to avoid conflicts (plugin prefix is optional unless there are name collisions)
  • Automatically available: Once a plugin is installed and enabled, its commands appear in /help
  • Fully integrated: Support all command features (arguments, frontmatter, bash execution, file references)

Location: commands/ directory in plugin root

File format: Markdown files with frontmatter

Basic command structure:

---
description: Brief description of what the command does
---
# Command Name
Detailed instructions for Claude on how to execute this command.
Include specific guidance on parameters, expected outcomes, and any special considerations.

Advanced command features:

  • Arguments: Use placeholders like {arg1} in command descriptions
  • Subdirectories: Organize commands in subdirectories for namespacing
  • Bash integration: Commands can execute shell scripts and programs
  • File references: Commands can reference and modify project files
Terminal window
/command-name
Terminal window
/plugin-name:command-name
Terminal window
/command-name arg1 arg2

MCP servers can expose prompts as slash commands that become available in Claude Code. These commands are dynamically discovered from connected MCP servers.

MCP commands follow the pattern:

/mcp__<server-name>__<prompt-name> [arguments]

MCP commands are automatically available when:

  • An MCP server is connected and active
  • The server exposes prompts through the MCP protocol
  • The prompts are successfully retrieved during connection

MCP prompts can accept arguments defined by the server:

# Without arguments
> /mcp__github__list_prs
# With arguments
> /mcp__github__pr_review 456
> /mcp__jira__create_issue "Bug title" high

Server and prompt names are normalized:

  • Spaces and special characters become underscores
  • Names are lowercase for consistency

Use the /mcp command to:

  • View all configured MCP servers
  • Check connection status
  • Authenticate with OAuth-enabled servers
  • Clear authentication tokens
  • View available tools and prompts from each server

To approve all tools from an MCP server, use either the server name alone or wildcard syntax:

  • mcp__github (approves all GitHub tools)
  • mcp__github__* (wildcard syntax, also approves all GitHub tools)

To approve specific tools, list each one explicitly:

  • mcp__github__get_issue
  • mcp__github__list_issues

See MCP permission rules for more details.

The SlashCommand tool allows Claude to execute custom slash commands programmatically during a conversation. This gives Claude the ability to invoke custom commands on your behalf when appropriate.

To encourage Claude to use the SlashCommand tool, reference the command by name, including the slash, in your prompts or CLAUDE.md file. For example:

> Run /write-unit-test when you are about to start writing tests.

This tool puts each available custom slash command’s metadata into context up to the character budget limit. You can use /context to monitor token usage and follow the operations below to manage context.

SlashCommand tool only supports custom slash commands that:

  • Are user-defined. Built-in commands like /compact and /init are not supported.
  • Have the description frontmatter field populated. The description is used in the context.

For Claude Code versions >= 1.0.124, you can see which custom slash commands SlashCommand tool can invoke by running claude --debug and triggering a query.

To prevent Claude from executing any slash commands via the tool:

Terminal window
/permissions
# Add to deny rules: SlashCommand

This also removes the SlashCommand tool and command descriptions from context.

To prevent a specific slash command from becoming available, add disable-model-invocation: true to the slash command’s frontmatter.

This also removes the command’s metadata from context.

The permission rules support:

  • Exact match: SlashCommand:/commit (allows only /commit with no arguments)
  • Prefix match: SlashCommand:/review-pr:* (allows /review-pr with any arguments)

The SlashCommand tool includes a character budget to limit the size of command descriptions shown to Claude. This prevents token overflow when many commands are available.

The budget includes each custom slash command’s name, arguments, and description.

  • Default limit: 15,000 characters
  • Custom limit: Set via SLASH_COMMAND_TOOL_CHAR_BUDGET environment variable

When the character budget is exceeded, Claude sees only a subset of the available commands. In /context, a warning shows “M of N commands”.

Slash commands and Agent Skills serve different purposes in Claude Code:

Quick, frequently used prompts:

  • Simple prompt snippets you use often
  • Quick reminders or templates
  • Frequently used instructions that fit in one file

Examples:

  • /review → “Review this code for bugs and suggest improvements”
  • /explain → “Explain this code in simple terms”
  • /optimize → “Analyze this code for performance issues”

Comprehensive capabilities with structure:

  • Complex workflows with multiple steps
  • Capabilities requiring scripts or utilities
  • Knowledge organized across multiple files
  • Team workflows you want to standardize

Examples:

  • PDF processing Skill with form-filling scripts and validation
  • Data analysis Skill with reference docs for different data types
  • Documentation Skill with style guides and templates
AspectSlash CommandsAgent Skills
ComplexitySimple promptsComplex capabilities
StructureSingle .md fileDirectory with SKILL.md + resources
DiscoveryExplicit invocation (/command)Automatic (based on context)
FilesOne file onlyMultiple files, scripts, templates
ScopeProject or personalProject or personal
SharingVia gitVia git

As a slash command:

.claude/commands/review.md
Review this code for:
- Security vulnerabilities
- Performance issues
- Code style violations

Usage: /review (manual invocation)

As a Skill:

.claude/skills/code-review/
├── SKILL.md (overview and workflows)
├── SECURITY.md (security checklist)
├── PERFORMANCE.md (performance patterns)
├── STYLE.md (style guide reference)
└── scripts/
└── run-linters.sh

Usage: “Can you review this code?” (automatic discovery)

The Skill provides richer context, validation scripts, and organized reference material.

Use slash commands:

  • You invoke the same prompt repeatedly
  • The prompt fits in a single file
  • You want explicit control over when it runs

Use Skills:

  • Claude should discover the capability automatically
  • Multiple files or scripts are needed
  • Complex workflows with validation steps
  • Team needs standardized, detailed guidance

Both slash commands and Skills can coexist. Use the approach that fits your needs.

Learn more about Agent Skills.


To find navigation and other pages in this documentation, fetch the llms.txt file at: https://code.claude.com/docs/llms.txt