| name | claude-cli |
| description | Use claude CLI for interactive AI sessions, scripting with print mode, MCP server management, and plugin configuration. Master session management, tool control, and automation workflows. |
Claude CLI - Command Line Interface
You are a specialist in using the claude CLI (Claude Code). This skill provides comprehensive workflows, best practices, and common patterns for interactive sessions, scripting, MCP management, and automation.
What is Claude CLI?
The claude CLI is the command-line interface for Claude Code that provides:
- Interactive sessions - Default conversational mode for coding and problem-solving
- Print mode - Non-interactive output for pipes, scripts, and automation
- Session management - Continue, resume, and fork conversations
- MCP integration - Configure and manage Model Context Protocol servers
- Plugin system - Extend functionality with marketplace plugins
- Tool control - Fine-grained control over available tools
- Flexible output - Text, JSON, or streaming formats
Core Modes
Interactive Mode (Default)
claude
claude "explain this codebase"
claude --continue
claude -c
claude --resume
claude -r SESSION_ID
claude --resume SESSION_ID --fork-session
Print Mode (Non-Interactive)
claude --print "what is rust?"
claude -p "explain async/await"
echo "explain this code" | claude -p
claude -p "list all rust files" | grep "src/"
claude -p --output-format json "summarize this"
claude -p --output-format stream-json "analyze logs"
Session Management
Continue Last Conversation
claude --continue
claude -c
claude -c --fork-session
Resume Specific Session
claude --resume
claude -r
claude -r abc123-def456-789
claude -r abc123 --fork-session
Custom Session ID
claude --session-id 12345678-1234-1234-1234-123456789abc
Model Selection
Model Aliases
claude --model sonnet
claude --model opus
claude --model haiku
Full Model Names
claude --model claude-sonnet-4-5-20250929
claude --model claude-opus-4-20250514
claude --model claude-haiku-4-20250430
Fallback Model (Print Mode Only)
claude -p --fallback-model haiku "analyze this"
Tool Control
Specify Available Tools
claude -p --tools "Bash,Read,Edit" "refactor code"
claude -p --tools default "write function"
claude -p --tools "" "explain concept"
Allow/Disallow Tools
claude --allowed-tools "Bash(git:*)" "commit changes"
claude --allowed-tools "Bash(npm:*),Read,Edit" "update package"
claude --disallowed-tools "Bash(rm:*)" "clean directory"
claude --disallowed-tools "Write" "analyze code"
claude --allowed-tools "Bash(git:*)" "Bash(cargo:*)" "rust workflow"
System Prompts
Set System Prompt
claude --system-prompt "You are a Rust expert. Focus on idiomatic code."
claude --append-system-prompt "Always explain your reasoning."
Permission Modes
claude --permission-mode acceptEdits
claude --permission-mode bypassPermissions
claude --permission-mode plan
claude --permission-mode default
Dangerous Permissions
claude --dangerously-skip-permissions
claude --allow-dangerously-skip-permissions
MCP Server Management
List MCP Servers
claude mcp list
Add MCP Server
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
claude mcp add --transport sse asana https://mcp.asana.com/sse
claude mcp add --transport stdio myserver npx -y my-mcp-server
claude mcp add --transport stdio airtable \
--env AIRTABLE_API_KEY=YOUR_KEY \
-- npx -y airtable-mcp-server
Add from JSON
claude mcp add-json myserver '{"command":"node","args":["server.js"]}'
claude mcp add-json sse-server '{"url":"https://example.com/sse"}'
Import from Claude Desktop
claude mcp add-from-claude-desktop
claude mcp add-from-claude-desktop --name myserver
Remove MCP Server
claude mcp remove myserver
Get MCP Server Details
claude mcp get myserver
Reset Project MCP Choices
claude mcp reset-project-choices
MCP Configuration
claude --mcp-config config.json
claude --mcp-config '{"myserver":{"command":"node","args":["server.js"]}}'
claude --mcp-config config1.json config2.json
claude --strict-mcp-config --mcp-config config.json
Project-Level MCP Configuration (.mcp.json)
IMPORTANT: Project-specific MCP servers belong in a .mcp.json file at the project root.
.mcp.json File Structure
Create .mcp.json in your project root with this structure:
{
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["-y", "package-name"],
"env": {
"API_KEY": "value"
}
}
}
}
Common Patterns
Node.js MCP server:
{
"mcpServers": {
"myserver": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"API_KEY": ""
}
}
}
}
Python/uvx MCP server:
{
"mcpServers": {
"knowledge_base": {
"command": "uvx",
"args": [
"chroma-mcp",
"--client-type",
"persistent",
"--data-dir",
"/path/to/data"
],
"env": {
"ANONYMIZED_TELEMETRY": "false"
}
}
}
}
Language server integration:
{
"mcpServers": {
"gopls": {
"command": "/path/to/mcp-language-server",
"args": ["--workspace", ".", "--lsp", "gopls", "--", "-mode=stdio"],
"transport": "stdio"
}
}
}
Docker/Podman container:
{
"mcpServers": {
"github": {
"command": "podman",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-token"
}
}
}
}
Multiple servers in one project:
{
"mcpServers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git"]
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
},
"gdrive": {
"command": "gdrive",
"args": ["mcp", "stdio"]
}
}
}
Usage
When Claude CLI runs in a project directory:
claude
claude mcp list
claude mcp reset-project-choices
Key Points:
- Place
.mcp.json at project root
- Claude prompts to approve/reject project servers on first use
- Use for project-specific tools (language servers, project APIs, local databases)
- Separate from global user MCP configuration
- Safe to commit to version control (but NEVER commit secrets in
env)
.gitignore Pattern for Secrets
If your .mcp.json contains secrets, create a template:
{
"mcpServers": {
"myserver": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"API_KEY": "your-api-key-here"
}
}
}
}
.mcp.json
Then developers copy .mcp.json.example to .mcp.json and add their credentials.
Plugin Management
List Available Plugins
claude plugin marketplace
Install Plugin
claude plugin install my-plugin
claude plugin install my-plugin@my-marketplace
Uninstall Plugin
claude plugin uninstall my-plugin
claude plugin remove my-plugin
Enable/Disable Plugin
claude plugin disable my-plugin
claude plugin enable my-plugin
Validate Plugin
claude plugin validate /path/to/plugin/
Load Plugin Directory
claude --plugin-dir /path/to/plugins/
claude --plugin-dir dir1/ dir2/
Settings and Configuration
Settings File
claude --settings /path/to/settings.json
claude --settings '{"verbose":true,"model":"opus"}'
Setting Sources
claude --setting-sources user
claude --setting-sources user,project
claude --setting-sources user,project,local
Additional Directories
claude --add-dir /path/to/data/
claude --add-dir /data/ /cache/ /logs/
Output Formats (Print Mode)
Text Output (Default)
claude -p "summarize file.txt"
JSON Output
claude -p --output-format json "analyze code"
claude -p --output-format json "list issues" | jq '.response'
Streaming JSON
claude -p --output-format stream-json "long analysis"
claude -p --output-format stream-json --include-partial-messages "task"
Input Formats
echo "prompt" | claude -p
cat input.jsonl | claude -p --input-format stream-json
cat input.jsonl | claude -p \
--input-format stream-json \
--output-format stream-json \
--replay-user-messages
Debug and Verbose Modes
Debug Mode
claude --debug
claude --debug "api,hooks"
claude --debug "!statsig,!file"
claude -p --debug "test prompt"
Verbose Mode
claude --verbose
IDE Integration
claude --ide
Maintenance Commands
Check Health
claude doctor
Update
claude update
Install Specific Version
claude install stable
claude install latest
claude install 1.2.3
Setup Authentication
claude setup-token
Migrate Installer
claude migrate-installer
Common Workflows
Workflow 1: Quick Analysis (Print Mode)
claude -p "summarize errors in app.log"
claude -p "extract function names from code.rs" | sort | uniq
Workflow 2: Scripted Automation
result=$(claude -p --output-format json "count TODO comments")
count=$(echo "$result" | jq -r '.response')
echo "Found $count TODOs"
Workflow 3: Restricted Tool Access
claude --allowed-tools "Bash(git:*)" -p "show recent commits"
claude --disallowed-tools "Bash(rm:*)" "Bash(mv:*)" "clean project"
Workflow 4: Custom System Prompt
claude --system-prompt "You are a security-focused code reviewer. \
Look for vulnerabilities, SQL injection, XSS, and auth issues." \
"review authentication.py"
Workflow 5: Session Forking
claude -r abc123 --fork-session
claude -c --fork-session
Workflow 6: MCP Server Setup
claude mcp add --transport stdio mytools npx -y my-tools-server
claude "use mytools to analyze data"
claude mcp remove mytools
Workflow 7: Project-Level MCP Configuration
cat > .mcp.json <<'EOF'
{
"mcpServers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git"]
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}
}
EOF
claude
claude mcp reset-project-choices
Workflow 8: Plugin Workflow
claude plugin install code-analyzer
claude "analyze code quality with code-analyzer"
claude plugin disable code-analyzer
Workflow 9: Batch Processing with Stream JSON
cat prompts.jsonl | claude -p \
--input-format stream-json \
--output-format stream-json > results.jsonl
Workflow 10: Model Fallback for Reliability
claude -p --model sonnet --fallback-model haiku "analyze data"
Workflow 11: Sandboxed Execution
claude -p --dangerously-skip-permissions --tools "Read" "analyze code"
Best Practices
1. Use Print Mode for Scripting
claude -p "count errors" | wc -l
claude "count errors"
2. Specify Tools for Security
claude -p --tools "Read,Grep" "find pattern"
claude --disallowed-tools "Bash(rm:*)" "cleanup task"
3. Use JSON for Parsing
claude -p --output-format json "analyze" | jq '.response'
claude -p "analyze"
4. Fork Sessions for Experimentation
claude -r session-id --fork-session
5. Use Fallback Models for Reliability
claude -p --fallback-model haiku "critical task"
6. Debug with Filtering
claude --debug "api,mcp" "test mcp server"
claude --debug "!statsig,!analytics" "run workflow"
7. Organize MCP Servers
claude mcp list
claude mcp add --transport stdio db-tools npx -y db-mcp-server
claude mcp remove old-server
8. Use System Prompts for Consistency
claude --append-system-prompt "Always explain your reasoning step by step."
Quick Reference
claude
claude -c
claude -r
claude -r SESSION_ID
claude -p "prompt"
claude -p --output-format json "prompt"
claude -p --tools "Bash,Read" "prompt"
claude --model opus
claude --fallback-model haiku
claude --allowed-tools "Bash(git:*)"
claude --disallowed-tools "Bash(rm:*)"
claude mcp list
claude mcp add --transport stdio name cmd
claude mcp remove name
claude plugin install name
claude plugin uninstall name
claude plugin enable name
claude plugin disable name
claude --system-prompt "prompt"
claude --append-system-prompt "text"
claude --debug
claude --debug "category,!exclude"
claude doctor
claude update
claude setup-token
Common Patterns
Pattern 1: Safe Code Analysis
claude -p --tools "Read,Grep" "analyze security vulnerabilities in src/"
Pattern 2: Automated Git Workflow
claude -p --allowed-tools "Bash(git:*)" "review and summarize recent commits"
Pattern 3: JSON Parsing Pipeline
claude -p --output-format json "list all functions" | \
jq -r '.response' | \
grep "pub fn"
Pattern 4: Streaming Analysis
cat large_log.txt | \
claude -p --output-format stream-json "find error patterns" | \
jq -r 'select(.type == "response") | .content'
Pattern 5: Multi-Model Fallback
claude -p --model sonnet --fallback-model haiku "time-sensitive analysis"
Tips and Tricks
- Session Management: Use
--fork-session to experiment without affecting original conversation
- Tool Safety: Always use
--allowed-tools or --disallowed-tools for untrusted prompts
- Automation: Prefer
--output-format json for reliable parsing in scripts
- Performance: Use
--fallback-model haiku for faster responses when quality isn't critical
- Debugging: Use
--debug "!noisy,!category" to exclude verbose logs
- MCP Servers: Test new servers with
claude --strict-mcp-config to isolate issues
- Plugins: Disable unused plugins to reduce startup time
- Print Mode: Always use
-p in scripts to avoid interactive prompts
Integration Examples
With Git
claude -p --allowed-tools "Bash(git:*),Read" "review staged changes and suggest commit message"
With CI/CD
claude -p --tools "Read,Grep" --output-format json "analyze code quality" > report.json
With Logs
tail -f app.log | claude -p --output-format stream-json "detect anomalies"
With Makefiles/Justfiles
# Analyze code quality
analyze:
claude -p --tools "Read,Grep" "run code quality analysis"
# Generate documentation
docs:
claude -p --output-format json "generate API docs from code" | jq -r '.response' > API.md
Summary
Primary use cases:
- Interactive coding sessions (default mode)
- Scripted automation (print mode)
- MCP server integration (global and project-level)
- Plugin management
- Tool-controlled execution
Key advantages:
- Flexible output formats (text, JSON, streaming)
- Fine-grained tool control
- Session persistence and forking
- MCP protocol support (use
.mcp.json for project-specific servers)
- Extensible plugin system
Most common commands:
claude - Start interactive session
claude -p "prompt" - Print mode for scripting
claude -c - Continue last conversation
claude mcp list - Manage MCP servers
claude --allowed-tools "pattern" "prompt" - Restrict tool access
Project-level MCP:
- Create
.mcp.json in project root for project-specific MCP servers
- Automatically loaded when Claude runs in that directory
- Separate from global user configuration