48 KiB
Claude Code Complete Setup Guide
Comprehensive documentation for the Claude Code Setup project Version: 3.0.0 | Last Updated: 2025-10-20 Completeness: ~95% of Claude Code capabilities implemented
Table of Contents
- Overview
- Project Structure
- Core Features
- MCP Servers
- Agents & Subagents
- Slash Commands
- Output Styles
- Hooks System
- Templates
- Configuration
- Memory & Context
- Advanced Features
- Best Practices
- Troubleshooting
Overview
What is This Project?
This is a production-ready Claude Code setup demonstrating comprehensive configuration of all major features, including:
- ✅ 8 MCP servers configured (code navigation, memory, documentation, automation)
- ✅ 8 specialized agents (architecture, code review, debugging, security, testing)
- ✅ 9 slash commands (adr, analyze, review, implement, test, optimize, explain, scaffold)
- ✅ 6 custom output styles (concise, professional, verbose, learning, explanatory, security)
- ✅ 6 event hooks (session lifecycle, bash commands, file operations, stop tracking)
- ✅ Comprehensive templates for extending all features
- ✅ Custom status line and plugin marketplace access
- ✅ Automatic status summaries showing tool usage for every task
Claude Code Capabilities Overview
Claude Code is an AI-powered development assistant that operates through:
Core Mechanisms:
- Tools: File operations (Read, Write, Edit), code search (Grep, Glob), shell execution (Bash)
- MCP Servers: External integrations extending Claude's capabilities
- Agents/Subagents: Specialized AI assistants for specific domains
- Slash Commands: User-invoked workflows and routines
- Output Styles: Customizable response behaviors
- Hooks: Event-driven automation
- Memory: Persistent and temporary context storage
Project Structure
Claude Code Setup/
│
├── .claude/ # Main Claude Code configuration directory
│ │
│ ├── agents/ # Specialized AI agents (8 agents)
│ │ ├── architect.md # System design & technical planning
│ │ ├── code-reviewer.md # Code quality & review
│ │ ├── debugger.md # Bug diagnosis & fixing
│ │ ├── documentation-writer.md # Technical documentation
│ │ ├── project-manager.md # Project coordination
│ │ ├── refactoring-specialist.md # Code improvement
│ │ ├── security-analyst.md # Security analysis
│ │ ├── test-engineer.md # Testing strategy
│ │ └── .AGENT_TEMPLATE.md # Template for new agents
│ │
│ ├── commands/ # Slash commands (8 commands)
│ │ ├── analyze.md # Comprehensive code analysis
│ │ ├── explain.md # Code explanation
│ │ ├── implement.md # Feature implementation
│ │ ├── optimize.md # Performance optimization
│ │ ├── review.md # Code review
│ │ ├── scaffold.md # Project scaffolding
│ │ ├── setup-info.md # Display setup information
│ │ ├── test.md # Test execution
│ │ └── .COMMANDS_TEMPLATE.md # Template for new commands
│ │
│ ├── output-styles/ # Custom output behaviors (6 styles)
│ │ ├── concise.md # Brief responses
│ │ ├── professional.md # Formal tone
│ │ ├── verbose.md # Detailed explanations
│ │ ├── explanatory.md # Educational insights
│ │ ├── learning.md # Interactive learning mode
│ │ ├── security-reviewer.md # Security-focused
│ │ └── .OUTPUT_STYLES_TEMPLATE.md # Template for new styles
│ │
│ ├── skills/ # Agent skills (model-invoked)
│ │ └── .SKILL_TEMPLATE.md # Template for new skills
│ │
│ ├── hooks/ # Event automation (6 hooks)
│ │ ├── session-start.sh # Session initialization
│ │ ├── session-end.sh # Session cleanup
│ │ ├── stop.sh # Stop event logging
│ │ ├── pre-bash.sh # Before bash commands
│ │ ├── post-write.sh # After file writes
│ │ └── user-prompt-submit.sh # After prompt submission
│ │
│ ├── tools/ # Utility scripts
│ │ ├── start-memory.ps1 # PowerShell memory MCP launcher
│ │ └── statusline.sh # Custom status line script
│ │
│ ├── logs/ # Session logs
│ │ ├── session.log # Session activity
│ │ ├── bash.log # Bash command log
│ │ └── writes.log # File write log
│ │
│ ├── settings.json # Main configuration (shared)
│ ├── settings.local.json # Local configuration (personal)
│ ├── statusline.sh # Status line configuration
│ │
│ └── [Documentation Files] # Various guides (see below)
│
├── .mcp.json # MCP servers configuration (9 servers)
├── CLAUDE.md # Project instructions for Claude
├── CLAUDE_TEMPLATE.md # Template for CLAUDE.md files
└── TEMPLATES_SUMMARY.md # Quick reference for all templates
Documentation Files (in .claude/)
- TEMPLATES_README.md - Master guide for all templates
- agents/MCP_USAGE_TEMPLATES.md - MCP usage templates for agents
- CHECKPOINTING_GUIDE.md - Session checkpointing guide
- SETUP_COMPLETE.md - Setup completion summary
- PLUGIN_SETUP.md - Plugin marketplace guide
- STATUS_LINE_SETUP.md - Status line customization
- TEMPLATE_CAPABILITIES_ANALYSIS.md - Template review analysis
Core Features
1. File Operations
Claude Code has direct file access through specialized tools:
Read Tool:
- Read any file by absolute path
- Support for images, PDFs, Jupyter notebooks
- Optional line offset and limit for large files
Write Tool:
- Create new files (overwrites existing)
- Must read file first before writing existing files
Edit Tool:
- Exact string replacement
- Must read file first
- Supports
replace_allfor renaming
Glob Tool:
- Fast file pattern matching
- Returns files sorted by modification time
- Examples:
**/*.js,src/**/*.ts
Grep Tool:
- Built on ripgrep for fast searching
- Supports regex patterns
- Context lines (-A, -B, -C options)
- Multiple output modes (content, files_with_matches, count)
2. Shell Execution
Bash Tool:
- Execute shell commands with timeout (default 2 min, max 10 min)
- Background execution supported
- Parallel execution for independent commands
- Sequential execution with
&&for dependencies
Pre-approved commands (no permission needed):
ls,dir,git status,git diff,git logmkdir,echo,findstr,treenpx,uvx,where
3. Specialized Tools
- WebSearch: Search the web for current information
- WebFetch: Retrieve and process web content
- SlashCommand: Execute custom slash commands
- Task: Launch specialized subagents
- TodoWrite: Manage task lists during sessions
- NotebookEdit: Edit Jupyter notebooks
MCP Servers
Overview
This project has 8 MCP servers configured, providing extensive capabilities beyond Claude's native tools.
1. Serena MCP
Purpose: IDE assistant with code navigation and persistent memory
Command: uvx --from git+https://github.com/oraios/serena serena start-mcp-server
Capabilities:
Code Navigation:
find_symbol- Locate code symbols by name/patternfind_referencing_symbols- Find all references to a symbolget_symbols_overview- Get file structure overviewsearch_for_pattern- Search for patterns in coderename_symbol- Safely rename across codebasereplace_symbol_body- Replace function/class bodyinsert_after_symbol/insert_before_symbol- Add code at specific locations
Persistent Memory:
write_memory- Store information that persists across sessionsread_memory- Recall stored informationlist_memories- Browse all memoriesdelete_memory- Remove outdated information
Storage: .serena/memories/ (survives across sessions)
Best Used For:
- ✅ Architectural Decision Records (ADRs)
- ✅ Code review findings and summaries
- ✅ Lessons learned from implementations
- ✅ Project-specific patterns discovered
- ✅ Technical debt registry
- ✅ Security audit results
- ✅ Performance optimization notes
Current Memory: serena-persistence-test
2. Sequential Thinking MCP
Purpose: Enhanced reasoning and complex problem-solving
Command: npx -y @modelcontextprotocol/server-sequential-thinking
Capabilities:
sequentialthinking- Multi-step reasoning with revision capability- Adjust thought count dynamically
- Branch and revise previous thoughts
- Generate and verify hypotheses
Best Used For:
- Complex architectural decisions
- Multi-step debugging
- Design pattern selection
- Security analysis
3. Database Server MCP
Purpose: Database query support
Command: npx -y @executeautomation/database-server
Note: Requires database connection configuration
4. Context7 MCP
Purpose: Real-time library documentation lookup
Command: npx -y @upstash/context7-mcp
Capabilities:
resolve-library-id- Find library identifier for documentationget-library-docs- Get current framework/library documentation
Best Used For:
- Learning new frameworks
- Getting up-to-date API references
- Finding best practices for libraries
- Code examples from official docs
API Key: Configured in .mcp.json
5. Memory MCP (Knowledge Graph)
Purpose: Temporary in-memory knowledge graph for current session
Command: powershell -ExecutionPolicy Bypass -File .\.claude\tools\start-memory.ps1
Capabilities:
create_entities- Create entities (Features, Classes, Services, etc.)create_relations- Define relationships between entitiesadd_observations- Add details to entitiessearch_nodes- Search the knowledge graphread_graph- View entire graph stateopen_nodes- Retrieve specific entitiesdelete_entities/delete_relations/delete_observations- Remove items
Storage: In-memory only, cleared after session ends
Best Used For:
- ✅ Current conversation context
- ✅ Temporary analysis during current task
- ✅ Entity relationships in current work
- ✅ Cross-file refactoring state
- ✅ Session-specific tracking
Storage Location: .mcp-data\memory\ (managed by PowerShell script)
6. Fetch MCP
Purpose: Web content retrieval and processing
Command: uvx mcp-server-fetch
Capabilities:
fetch- Retrieve URLs and convert to markdown- Support for HTML parsing
- Configurable content length
Best Used For:
- API documentation scraping
- Web content analysis
- Integration documentation
7. Windows MCP
Purpose: Windows desktop automation
Command: uv --directory ./.windows-mcp run main.py
Capabilities:
- Launch applications
- PowerShell execution
- Desktop state capture
- Clipboard operations
- Mouse and keyboard control
- Window management
- Screen scraping
Best Used For:
- GUI automation
- Desktop testing
- Windows-specific operations
8. Playwright MCP
Purpose: Browser automation and testing
Command: npx -y @playwright/mcp
Capabilities:
- Browser navigation and interaction
- Form filling and clicking
- Screenshot capture
- Network request monitoring
- Console message capture
- File uploads
- JavaScript evaluation
Best Used For:
- E2E testing
- Web scraping
- UI automation
- Browser-based workflows
MCP Quick Decision Tree
Question: Should this information exist next week?
- YES → Use Serena
write_memory - NO → Use Memory graph
Question: Am I navigating or editing code?
- YES → Use Serena code functions
Question: Am I building temporary context for current task?
- YES → Use Memory graph
Question: Do I need current library documentation?
- YES → Use Context7
Question: Do I need to automate a browser?
- YES → Use Playwright
Agents & Subagents
Overview
8 specialized agents handle specific domains, each with isolated context and focused expertise.
How Agents Work
Invocation:
- Automatic: Claude invokes based on task description matching
- Manual: User explicitly requests with "Use the [agent-name] agent to..."
Isolation: Each agent operates in its own context window, preventing main conversation pollution.
Configuration: Agents can have custom:
allowed-tools- Restricted tool accessmodel- Specific Claude model (Sonnet, Opus, Haiku)description- Triggers automatic invocation
Available Agents
1. Architect Agent
File: .claude/agents/architect.md
Purpose: System design, architecture planning, technical decisions
Keywords: architecture, design, technical decisions, scalability, system design
Responsibilities:
- System architecture design
- Technology evaluation
- Technical planning
- Architecture review
- Technical documentation
When to Use:
- Designing new systems
- Evaluating technology choices
- Planning major refactors
- Reviewing architecture
- Creating ADRs
2. Code Reviewer Agent
File: .claude/agents/code-reviewer.md
Purpose: Code quality review and best practices enforcement
Keywords: code review, quality, best practices, review
Responsibilities:
- Code quality assessment
- Best practices verification
- Security review
- Performance analysis
- Documentation review
When to Use:
- Reviewing pull requests
- Pre-commit quality checks
- Security audits
- Performance reviews
3. Debugger Agent
File: .claude/agents/debugger.md
Purpose: Bug diagnosis and troubleshooting
Keywords: debug, troubleshoot, error, bug, issue
Responsibilities:
- Error analysis
- Stack trace interpretation
- Root cause identification
- Fix recommendations
- Debugging strategies
When to Use:
- Investigating bugs
- Analyzing errors
- Troubleshooting issues
- Performance problems
4. Documentation Writer Agent
File: .claude/agents/documentation-writer.md
Purpose: Technical documentation creation
Keywords: documentation, docs, readme, comments, docstrings
Responsibilities:
- API documentation
- README files
- Code comments
- User guides
- Architecture docs
When to Use:
- Creating documentation
- Updating docs
- Generating API references
- Writing user guides
5. Project Manager Agent
File: .claude/agents/project-manager.md
Purpose: Project coordination and workflow management
Keywords: project, manage, coordinate, workflow, plan
Responsibilities:
- Task breakdown
- Workflow coordination
- Progress tracking
- Resource allocation
- Timeline planning
When to Use:
- Planning large features
- Coordinating multiple tasks
- Breaking down projects
- Managing workflows
6. Refactoring Specialist Agent
File: .claude/agents/refactoring-specialist.md
Purpose: Code improvement and refactoring
Keywords: refactor, improve, cleanup, optimize code structure
Responsibilities:
- Code structure improvement
- Pattern implementation
- Technical debt reduction
- Code cleanup
- Maintainability enhancement
When to Use:
- Refactoring legacy code
- Improving code structure
- Applying design patterns
- Reducing technical debt
7. Security Analyst Agent
File: .claude/agents/security-analyst.md
Purpose: Security analysis and vulnerability assessment
Keywords: security, vulnerability, threat, audit, security analysis
Responsibilities:
- Vulnerability scanning
- Security best practices
- Threat modeling
- Compliance checking
- Security recommendations
When to Use:
- Security audits
- Vulnerability assessment
- Compliance reviews
- Threat analysis
8. Test Engineer Agent
File: .claude/agents/test-engineer.md
Purpose: Testing strategy and implementation
Keywords: test, testing, unit test, integration test, test coverage
Responsibilities:
- Test strategy
- Test implementation
- Coverage analysis
- Test automation
- Quality assurance
When to Use:
- Writing tests
- Test planning
- Coverage improvement
- Test automation
Agent Usage Examples
# Automatic invocation (based on description matching)
> "I need to design a microservices architecture for our API"
# → Architect agent automatically invoked
# Manual invocation
> "Use the security-analyst agent to review this code for vulnerabilities"
# → Security analyst explicitly invoked
# Parallel agents (use Task tool with multiple calls)
> "I need code review and security analysis"
# → Both code-reviewer and security-analyst invoked in parallel
Slash Commands
Overview
9 slash commands provide explicit workflows for common tasks.
How Commands Work
Invocation: User types /command-name [arguments]
Arguments:
$ARGUMENTS- All arguments as single string$1,$2,$3- Individual arguments$@- All arguments as array
File References: Use @path/to/file to include file content
Bash Execution: Prefix with ! for inline bash commands
Available Commands
1. /adr [list|view|create|update] [adr-number-or-name]
File: .claude/commands/adr.md
Purpose: Manage Architectural Decision Records (ADRs)
Arguments:
[action]- list, view, create, or update[adr-number-or-name]- ADR identifier (optional for list/create)
Features:
- List all architectural decisions
- View specific ADR with full context
- Create new ADRs (invokes architect agent)
- Update/supersede/deprecate existing ADRs
- Track decision lifecycle and relationships
- Store ADRs in Serena persistent memory
Usage:
> /adr list # List all ADRs
> /adr view adr-001 # View specific ADR
> /adr view adr-003-authentication-strategy # View by name
> /adr create # Create new ADR
> /adr update adr-002 # Update/supersede ADR
Allowed Tools: Read(), mcp__serena__list_memories(), mcp__serena__read_memory(), mcp__serena__write_memory(), Task(*)
Storage: ADRs are stored in Serena memory (.serena/memories/) and persist across sessions
Integration: Works with architect agent for ADR creation and formatting
2. /analyze [path]
File: .claude/commands/analyze.md
Purpose: Comprehensive code analysis
Arguments: [path] - File or directory to analyze
Features:
- Code complexity analysis
- Dependency mapping
- Quality metrics
- Architecture review
- Performance profiling
Usage:
> /analyze src/components/
> /analyze src/utils/api.ts
Allowed Tools: Read(), Grep(), Glob(), Bash()
3. /explain [file-or-selection]
File: .claude/commands/explain.md
Purpose: Detailed code explanation
Arguments: [file-or-selection] - What to explain
Features:
- Step-by-step breakdown
- Pattern identification
- Design rationale
- Best practices
- Learning insights
Usage:
> /explain src/auth/middleware.ts
> /explain @src/utils/parser.js
4. /implement [feature-description]
File: .claude/commands/implement.md
Purpose: Feature implementation
Arguments: [feature-description] - What to implement
Features:
- Feature planning
- Code generation
- Pattern following
- Testing included
- Documentation
Usage:
> /implement user authentication with JWT
> /implement payment integration with Stripe
5. /optimize [file-or-function]
File: .claude/commands/optimize.md
Purpose: Performance optimization
Arguments: [file-or-function] - What to optimize
Features:
- Bottleneck identification
- Algorithm optimization
- Memory profiling
- Performance testing
- Recommendations
Usage:
> /optimize src/utils/dataProcessor.ts
> /optimize database queries
6. /review [file-or-path]
File: .claude/commands/review.md
Purpose: Comprehensive code review
Arguments: [file-or-path] - What to review
Features:
- Quality assessment
- Best practices check
- Security review
- Performance analysis
- Improvement suggestions
Usage:
> /review src/api/routes/
> /review @src/components/UserProfile.tsx
7. /scaffold [type] [name]
File: .claude/commands/scaffold.md
Purpose: Generate boilerplate code
Arguments: [type] - What to scaffold, [name] - Name
Features:
- Component generation
- Service scaffolding
- API endpoint creation
- Test file generation
- Configuration setup
Usage:
> /scaffold component UserDashboard
> /scaffold service PaymentService
> /scaffold api /users/:id
8. /setup-info
File: .claude/commands/setup-info.md
Purpose: Display complete setup information
Features:
- Configuration overview
- Agent list
- Command list
- MCP server status
- Hook configuration
Usage:
> /setup-info
9. /test [file-path]
File: .claude/commands/test.md
Purpose: Test execution and management
Arguments: [file-path] - Test file or path
Features:
- Test running
- Coverage analysis
- Test generation
- Failure analysis
- Test strategy
Usage:
> /test
> /test src/utils/__tests__/api.test.ts
> /test --coverage
Creating Custom Commands
Use the template at .claude/commands/.COMMANDS_TEMPLATE.md
Example:
# 1. Copy template
cp .claude/commands/.COMMANDS_TEMPLATE.md .claude/commands/deploy.md
# 2. Edit frontmatter
---
description: Deploy application to production
argument-hint: [environment]
allowed-tools: Bash(git *:*), Bash(npm *:*), Read(*)
model: claude-3-5-sonnet-20241022
---
# 3. Write instructions
Deploy the application to $1 environment...
# 4. Use it
> /deploy production
Output Styles
Overview
6 custom output styles modify Claude's behavior and communication style.
How Output Styles Work
Activation: /output-style [style-name]
Effect: Completely replaces system prompt, changing how Claude responds
Scope: Active for entire conversation until changed
Tool Access: Inherits from conversation settings (not restricted by style)
Available Styles
1. Default Style
Built-in: Yes
Purpose: Standard software engineering assistant
Characteristics:
- Efficient and task-focused
- Technical accuracy
- Concise explanations
- Code-first approach
When to Use: Normal development work
2. Concise Style
File: .claude/output-styles/concise.md
Purpose: Brief, to-the-point responses
Characteristics:
- Minimal explanation
- Direct answers
- Code without commentary
- Short summaries
When to Use: Quick fixes, simple tasks, time pressure
Activation:
> /output-style concise
3. Professional Style
File: .claude/output-styles/professional.md
Purpose: Formal, business-appropriate tone
Characteristics:
- Formal language
- Structured responses
- Detailed documentation
- Business-friendly
When to Use: Client interactions, stakeholder communication, reports
Activation:
> /output-style professional
4. Verbose Style
File: .claude/output-styles/verbose.md
Purpose: Detailed, comprehensive explanations
Characteristics:
- Extensive detail
- Multiple examples
- Thorough rationale
- Educational depth
When to Use: Learning, onboarding, complex topics
Activation:
> /output-style verbose
5. Explanatory Style
File: .claude/output-styles/explanatory.md
Purpose: Educational insights and learning
Characteristics:
- Explains "why" decisions
- Pattern identification
- Learning opportunities
- Best practices focus
When to Use: Understanding codebases, learning patterns, educational context
Activation:
> /output-style explanatory
6. Learning Style
File: .claude/output-styles/learning.md
Purpose: Interactive learning mode
Characteristics:
- Claude asks YOU to code
- Provides guidance, not solutions
- Marks sections with
TODO(human) - Socratic method
When to Use: Skill development, hands-on learning, teaching
Activation:
> /output-style learning
7. Security Reviewer Style
File: .claude/output-styles/security-reviewer.md
Purpose: Security-focused analysis
Characteristics:
- Security-first mindset
- Vulnerability scanning
- Threat modeling
- Compliance checking
When to Use: Security audits, vulnerability assessment, compliance reviews
Activation:
> /output-style security-reviewer
Creating Custom Output Styles
Use the template at .claude/output-styles/.OUTPUT_STYLES_TEMPLATE.md
Example:
---
name: debugging-mode
description: Systematic debugging approach with detailed logging
---
# Debugging Mode Output Style
You are Claude in debugging mode...
## Characteristics
- Step-by-step analysis
- Hypothesis generation and testing
- Detailed logging
- Root cause identification
## Response Format
1. **Problem Analysis**: [Describe the issue]
2. **Hypotheses**: [List possible causes]
3. **Testing**: [Test each hypothesis]
4. **Solution**: [Recommended fix]
Hooks System
Overview
5 event hooks enable automatic execution of scripts at specific points in Claude Code's lifecycle.
How Hooks Work
Event Triggers: Hooks fire automatically when specific events occur
Script Execution: Shell scripts (.sh) or PowerShell (.ps1) execute with current environment
Security: Hooks run with your credentials - review before using
Configuration: Defined in .claude/settings.json under hooks key
Available Hooks
1. session-start Hook
File: .claude/hooks/session-start.sh
Trigger: When Claude Code session begins or resumes
Purpose: Initialize session, setup logging, create directories
Current Implementation:
# Create logs directory if it doesn't exist
mkdir -p .claude/logs
# Log session start
echo "[$(date)] Session started in $(pwd) by $USER" >> .claude/logs/session.log
Use Cases:
- Initialize logging
- Setup environment variables
- Create required directories
- Display welcome messages
2. session-end Hook
File: .claude/hooks/session-end.sh
Trigger: When Claude Code session terminates
Purpose: Cleanup, final logging, backups
Use Cases:
- Final log entries
- Cleanup temporary files
- Create session backups
- Generate reports
3. pre-bash Hook
File: .claude/hooks/pre-bash.sh
Trigger: Before Bash tool executes commands
Purpose: Command validation, logging, permission checks
Use Cases:
- Log commands before execution
- Validate command safety
- Check permissions
- Block dangerous commands
4. post-write Hook
File: .claude/hooks/post-write.sh
Trigger: After Write or Edit tool modifies files
Purpose: Post-processing, formatting, logging
Current Implementation:
# Log file writes
echo "[$(date)] File written: $FILEPATH" >> .claude/logs/writes.log
# Auto-format certain files (commented out by default)
# if [[ $FILEPATH =~ \.(js|ts|tsx)$ ]]; then
# npx prettier --write "$FILEPATH"
# fi
Use Cases:
- Auto-formatting (Prettier, Black, etc.)
- Linting
- Git add
- File logging
- Backup creation
5. user-prompt-submit Hook
File: .claude/hooks/user-prompt-submit.sh
Trigger: After user submits a prompt, before processing
Purpose: Prompt logging, validation, preprocessing
Use Cases:
- Log all user prompts
- Count prompt usage
- Validate input
- Track costs
Hook Configuration
Location: .claude/settings.json
Format:
{
"hooks": {
"PreToolUse": {
"*": "bash .claude/hooks/pre-bash.sh"
},
"PostToolUse": {
"Write": "bash .claude/hooks/post-write.sh",
"Edit": "bash .claude/hooks/post-write.sh"
},
"SessionStart": "bash .claude/hooks/session-start.sh",
"SessionEnd": "bash .claude/hooks/session-end.sh",
"UserPromptSubmit": "bash .claude/hooks/user-prompt-submit.sh"
}
}
Creating Custom Hooks
Example: Auto-commit Hook
# .claude/hooks/post-write.sh
#!/bin/bash
# Auto-commit changed files
if [[ -n "$FILEPATH" ]]; then
git add "$FILEPATH"
git commit -m "Auto-commit: Updated $FILEPATH via Claude Code"
fi
Example: Cost Tracking Hook
# .claude/hooks/user-prompt-submit.sh
#!/bin/bash
# Track prompt count
COUNT_FILE=".claude/logs/prompt_count.txt"
COUNT=$(cat "$COUNT_FILE" 2>/dev/null || echo "0")
echo $((COUNT + 1)) > "$COUNT_FILE"
Templates
Overview
4 comprehensive templates for extending Claude Code functionality.
Available Templates
1. SKILL_TEMPLATE.md
Location: .claude/skills/.SKILL_TEMPLATE.md
Purpose: Create model-invoked capabilities
Features:
- YAML frontmatter with
allowed-tools - Progressive disclosure pattern
- Multi-file organization
- Testing checklist
- Version history
When to Use: Auto-activated capabilities based on context
Example Use Cases:
- PDF processing skill
- Excel analysis skill
- Documentation generation skill
2. COMMANDS_TEMPLATE.md
Location: .claude/commands/.COMMANDS_TEMPLATE.md
Purpose: Create user-invoked slash commands
Features:
- Argument handling ($ARGUMENTS, $1, $2)
- Bash execution (! prefix)
- File references (@ prefix)
- Model selection
- Tool restrictions
When to Use: Explicit workflows and routines
Example Use Cases:
/commit- Create git commits/deploy- Deployment workflow/generate-tests- Test generation
3. AGENT_TEMPLATE.md
Location: .claude/agents/.AGENT_TEMPLATE.md
Purpose: Create specialized subagents
Features:
- YAML frontmatter configuration
- Tool restrictions
- Model selection
- Workflow definitions
- Context management
When to Use: Domain-specific expertise needed
Example Use Cases:
- Research agent
- Implementation agent
- Review agent
4. OUTPUT_STYLES_TEMPLATE.md
Location: .claude/output-styles/.OUTPUT_STYLES_TEMPLATE.md
Purpose: Create custom response behaviors
Features:
- Behavior definition
- Response structure
- Use case guidance
- Testing checklist
When to Use: Need different communication style
Example Use Cases:
- Debugging mode
- Documentation mode
- Teaching mode
Template Usage Guide
See .claude/TEMPLATES_README.md for comprehensive guide including:
- Template comparison matrix
- Quick start guides
- Decision trees
- Best practices
- Troubleshooting
Configuration
Settings Files Hierarchy
Claude Code uses a 5-level hierarchy (highest to lowest priority):
- Enterprise Policies - IT-deployed, cannot be overridden
- Command Line Arguments - Session-specific (
--model,--max-tokens, etc.) - Local Project Settings -
.claude/settings.local.json(personal, not in git) - Shared Project Settings -
.claude/settings.json(team-shared, in git) - User Settings -
~/.claude/settings.json(global personal)
Main Settings File
Location: .claude/settings.json
Key Sections:
Permissions
{
"permissions": {
"allowed": [
"Read(*)",
"Write(*)",
"Edit(*)",
"Glob(*)",
"Grep(*)",
"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(npm test:*)",
"mcp__serena__*",
"mcp__memory__*",
"mcp__context7__*",
"WebSearch",
"WebFetch"
],
"ask": [
"Bash(npm install:*)",
"Bash(npm uninstall:*)"
],
"denied": [
"Bash(rm -rf /:*)",
"Bash(mkfs:*)",
"Bash(dd if=:*)"
]
}
}
MCP Server Configuration
{
"mcpServers": {
"serena": {
"enabled": true
},
"memory": {
"enabled": true
},
"context7": {
"enabled": true
}
}
}
Hooks Configuration
{
"hooks": {
"SessionStart": "bash .claude/hooks/session-start.sh",
"SessionEnd": "bash .claude/hooks/session-end.sh",
"PreToolUse": {
"*": "bash .claude/hooks/pre-bash.sh"
},
"PostToolUse": {
"Write": "bash .claude/hooks/post-write.sh",
"Edit": "bash .claude/hooks/post-write.sh"
},
"UserPromptSubmit": "bash .claude/hooks/user-prompt-submit.sh"
}
}
Status Line
{
"statusLine": {
"enabled": true,
"command": "bash .claude/statusline.sh"
}
}
Plugin Marketplace
{
"extraKnownMarketplaces": [
{
"name": "anthropic-official",
"url": "https://raw.githubusercontent.com/anthropics/skills/main/marketplace.json",
"description": "Official Anthropic Skills Marketplace"
}
]
}
MCP Configuration
Location: .mcp.json (project root)
Format:
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant", "--project", "Claude Code Setup"]
},
"memory": {
"command": "powershell",
"args": ["-ExecutionPolicy", "Bypass", "-File", ".\.claude\tools\start-memory.ps1"]
},
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"],
"env": {
"CONTEXT7_API_KEY": "your-api-key-here"
}
}
}
}
Environment Variables
Key environment variables (set in settings.json or shell):
Authentication:
ANTHROPIC_API_KEY- API key for ClaudeANTHROPIC_AUTH_TOKEN- OAuth token
Model Configuration:
DEFAULT_MODEL- Default Claude modelMAX_TOKENS- Response token limitTHINKING_TOKEN_LIMIT- Extended thinking budget
Features:
DISABLE_TELEMETRY- Disable usage trackingDISABLE_AUTOUPDATER- Disable auto-updates
Network:
HTTPS_PROXY- Proxy serverSSL_CERT_FILE- Custom CA certificate
Memory & Context
Memory System Overview
Claude Code has hierarchical memory across 4 locations:
- Enterprise Policy - Organization-wide instructions
- Project Memory -
./CLAUDE.mdor./.claude/CLAUDE.md(team-shared) - User Memory -
~/.claude/CLAUDE.md(personal, all projects) - Project Memory (Local) - Deprecated
Project Instructions (CLAUDE.md)
Location: CLAUDE.md
Purpose: Provide project context, conventions, and guidelines to Claude
Sections:
- Project overview
- Technology stack
- Code style guidelines
- Testing requirements
- Commit message format
- Development workflow
- Security considerations
- Performance optimization
Best Practices:
- Keep current and updated
- Be specific and concrete
- Use examples liberally
- Structure with clear headings
- Link to external docs
- Review periodically
Import Files: Use @path/to/file syntax (max depth: 5)
Persistent Memory (Serena)
Storage: .serena/memories/
Persistence: Survives across sessions
Management:
# Write memory
mcp__serena__write_memory("adr-001-architecture", content)
# Read memory
mcp__serena__read_memory("adr-001-architecture")
# List all
mcp__serena__list_memories()
# Delete
mcp__serena__delete_memory("adr-001-architecture")
Current Memory: serena-persistence-test
Naming Conventions:
- ADRs:
adr-001-database-choice-postgresql - Reviews:
code-review-2024-10-payment-service - Lessons:
lesson-async-error-handling - Patterns:
pattern-repository-implementation - Debt:
debt-legacy-api-authentication - Security:
security-audit-2024-10-full - Performance:
performance-optimization-query-caching
Temporary Memory (Knowledge Graph)
Storage: In-memory, cleared on session end
Management:
# Create entities
mcp__memory__create_entities([{name, entityType, observations}])
# Create relations
mcp__memory__create_relations([{from, to, relationType}])
# Search
mcp__memory__search_nodes("query")
# Read graph
mcp__memory__read_graph()
Best For: Current session context, temporary analysis
Context Management
File References:
- Include files in prompts with
@path/to/file - Glob patterns supported:
@src/**/*.ts
Directory Context:
- Use
/add-dirto add entire directories - Claude maintains awareness of directory structure
Conversation History:
- Full history maintained in session
- Use
/compactto condense long conversations - Use
/clearto start fresh
Advanced Features
1. Extended Thinking
What: Gives Claude more computation time for complex problems
Activation:
- Use keywords:
think,think hard,think harder,ultrathink - Each level increases computational budget
- Shown as thinking process in UI
When to Use:
- Architecture decisions
- Complex debugging
- Security analysis
- Algorithm optimization
- Design pattern selection
Example:
> "Think hard about the best architecture for this microservices system"
Token Limits: Configure with THINKING_TOKEN_LIMIT environment variable
2. Plan Mode
What: Read-only exploration before making changes
Activation: Toggle with Tab key
Benefits:
- Safe exploration
- No file modifications
- Understanding phase
- Review before action
Workflow:
- Enter plan mode (Tab)
- Explore and understand
- Get approval for plan
- Exit plan mode (Tab)
- Execute changes
When to Use:
- Complex multi-file changes
- Unfamiliar codebases
- Major refactoring
- Architecture changes
3. Checkpointing
What: Rewind conversation and/or code to previous states
Activation: Press ESC ESC or /rewind
Options:
- Code Only - Revert files, keep conversation
- Conversation Only - Revert conversation, keep files
- Both - Complete rollback
Retention: 30 days
When to Use:
- Experimental changes
- Wrong direction
- Need to try alternatives
- Accidental modifications
4. Git Integration
Pre-approved commands:
git statusgit diffgit loggit show
Commit Creation: See Git Workflow in CLAUDE.md
Branch Management: Supported with appropriate permissions
5. Parallel Execution
Independent Commands: Run multiple bash commands in parallel
# Claude executes these simultaneously
git status && npm test && docker ps
Multiple Agents: Invoke multiple agents in parallel with Task tool
File Operations: Multiple Reads in parallel for efficiency
6. Session Resume
Resume Previous: claude --continue or claude --resume
Named Sessions: claude --session [name]
List Sessions: View available sessions to resume
7. Cost Tracking
View Costs: /cost command
Token Usage: Tracked per session
Breakdown:
- Input tokens
- Output tokens
- Thinking tokens (if used)
- Tool calls
Export: Available in settings for monitoring
8. Plugin Marketplace
Access: /plugin command
Sources:
- Official Anthropic marketplace
- Custom marketplaces (configured in settings)
Installation: Browse and install skills/commands/agents
Management: /plugin list, /plugin install [name]
Best Practices
General Guidelines
-
Start Broad, Then Narrow
- Ask high-level questions first
- Progressively dive into specifics
- Use agents for focused deep-dives
-
Use Appropriate Tools
- Agents for domains
- Commands for workflows
- Skills for auto-capabilities
- Output styles for communication
-
Leverage Memory
- Store ADRs in Serena memory
- Use knowledge graph for session context
- Keep CLAUDE.md updated
-
Optimize Performance
- Use concise style for quick tasks
- Leverage extended thinking for complex problems
- Parallel execution when possible
-
Maintain Security
- Review hooks before using
- Restrict sensitive tool access
- Use security-analyst agent for audits
- Never commit secrets
Development Workflows
New Feature Development
# 1. Architecture planning
> "Use the architect agent to design user authentication feature"
# 2. Implementation
> /implement user authentication with JWT
# 3. Testing
> /test src/auth/
# 4. Review
> /review src/auth/
# 5. Documentation
> "Use documentation-writer agent to document authentication"
# 6. Commit
> "Create a git commit for this feature"
Debugging
# 1. Use debugger agent
> "Use the debugger agent to investigate this error: [paste error]"
# 2. Extended thinking for complex issues
> "Think hard about why this race condition occurs"
# 3. Review fix
> /review [fixed file]
# 4. Test
> /test
Code Review
# 1. Review changes
> /review src/
# 2. Security check
> "Use security-analyst agent to check for vulnerabilities"
# 3. Generate suggestions
> "Use refactoring-specialist agent to suggest improvements"
MCP Usage Patterns
Code Navigation
# Find symbol
find_symbol("UserService")
# Find references
find_referencing_symbols("UserService", "src/services/user.ts")
# Get overview
get_symbols_overview("src/services/user.ts")
Persistent Knowledge
# Store ADR
write_memory("adr-001-auth-jwt", "Decision: Use JWT for auth...")
# Recall later
read_memory("adr-001-auth-jwt")
Documentation Lookup
# Resolve library
resolve-library-id("react")
# Get docs
get-library-docs("/facebook/react")
Optimization Tips
-
Model Selection
- Haiku for simple tasks (fast, cheap)
- Sonnet for general development (balanced)
- Opus for complex reasoning (powerful)
-
Token Efficiency
- Use concise style when appropriate
- Leverage Glob/Grep instead of reading all files
- Use Serena symbol tools instead of full file reads
-
Parallel Work
- Multiple file reads in one message
- Parallel agent invocation
- Independent bash commands together
-
Context Management
- Regular
/compactfor long sessions - Use knowledge graph for session state
- Clear when switching major tasks
- Regular
Troubleshooting
Common Issues
Agents Not Activating
Problem: Agent doesn't activate automatically
Solutions:
- Check description has relevant keywords
- Try manual invocation
- Verify agent file is in
.claude/agents/ - Restart Claude to reload agents
- Check YAML frontmatter is valid
Commands Not Found
Problem: /command not recognized
Solutions:
- Verify file is
.claude/commands/[name].md - Filename must match command name
- Restart Claude to reload commands
- Check
/helpto see available commands - Validate frontmatter syntax
MCP Server Failures
Problem: MCP server not connecting
Solutions:
- Check
.mcp.jsonconfiguration - Verify command path is correct
- Test command manually in terminal
- Check logs for error messages
- Ensure dependencies installed (npx, uvx, etc.)
Hook Not Executing
Problem: Hook script doesn't run
Solutions:
- Check hook is configured in
settings.json - Verify script path is correct
- Ensure script has execute permissions
- Check script syntax (bash/PowerShell)
- Look for errors in logs
Permission Denied
Problem: Tool execution blocked
Solutions:
- Check permissions in
settings.json - Add tool to
allowedarray - Use wildcards for patterns
- Restart Claude after changes
- Check for enterprise policies overriding
Debugging Steps
-
Check Logs
- Session log:
.claude/logs/session.log - Bash log:
.claude/logs/bash.log - Write log:
.claude/logs/writes.log
- Session log:
-
Verify Configuration
# Check settings cat .claude/settings.json | jq '.permissions' # Check MCP config cat .mcp.json | jq '.mcpServers' -
Test Components
# Test MCP server manually npx -y @modelcontextprotocol/server-sequential-thinking # Test hook script bash .claude/hooks/session-start.sh -
Use Diagnostic Commands
> /setup-info # Display configuration > /doctor # Diagnose installation > /mcp # Check MCP status
Getting Help
- Built-in Help:
/helpcommand - Setup Info:
/setup-infocommand - Official Docs: https://docs.claude.com/en/docs/claude-code/
- GitHub Issues: https://github.com/anthropics/claude-code/issues
- This Documentation: Review relevant sections above
Appendix
Quick Reference
Key Files
.claude/settings.json- Main configuration.mcp.json- MCP serversCLAUDE.md- Project instructions.claude/agents/- Specialized agents.claude/commands/- Slash commands.claude/output-styles/- Response styles.claude/hooks/- Event automation
Key Commands
/help- Get help/setup-info- Display setup/plugin- Plugin marketplace/output-style [style]- Change style/cost- View costs/rewind- Checkpointing/memory- Edit memory/compact- Condense conversation/clear- Clear history
Key Shortcuts
Tab- Toggle plan modeESC ESC- Access checkpointsCtrl+C- Interrupt Claude@file- Reference file#- Quick memory capture
File Naming Conventions
Agents: kebab-case.md in .claude/agents/
Commands: kebab-case.md in .claude/commands/
Skills: Directory with SKILL.md in .claude/skills/[name]/
Output Styles: kebab-case.md in .claude/output-styles/
Hooks: event-name.sh or event-name.ps1 in .claude/hooks/
Version History
- v3.0.0 (2025-10-20): Complete documentation overhaul, added missing capabilities
- v2.0.0 (2025-10-17): Added output styles, plugins, status line
- v1.0.0 (Initial): Basic setup with agents, commands, MCP
Credits
Based on:
- Official Anthropic Claude Code documentation
- Claude Agent SDK best practices
- Community contributions
- Real-world production experience
Documentation Version: 3.0.0 Last Updated: 2025-10-20 Maintained by: Claude Code Setup Project License: Use and modify freely
For the most current information, always refer to official documentation at: https://docs.claude.com/en/docs/claude-code/
This setup represents ~95% of available Claude Code capabilities. The remaining 5% includes enterprise features (SSO, analytics), headless mode (CI/CD), and specialized network configurations (proxies, certificates) which are optional and environment-specific.