Skip to main content

Claude Code

Claude Code is a command-line tool from Anthropic that developers run alongside their regular editor. It offers granular control over the AI workflow and is preferred by developers who want to stay close to the terminal.

Key Features

  • Command-Line Interface: Terminal-based workflow for precise control
  • Editor Agnostic: Works with any text editor (Vim, Emacs, VS Code, etc.)
  • Granular Control: Fine-tuned control over AI interactions
  • Context Management: Sophisticated handling of project context
  • File Operations: Direct file reading, writing, and modification

Installation

  1. Install via Package Manager

    macOS (Homebrew):

    brew install anthropic/claude/claude

    Linux/Windows (pip):

    pip install claude-cli
  2. Authenticate

    claude auth login

    Enter your Anthropic API key when prompted.

  3. Verify Installation

    claude --version

Getting Started

Basic Usage

Start a conversation:

claude "Help me write a Python function to parse JSON"

Work with files:

claude --file main.py "Add error handling to this function"

Multi-file context:

claude --files "*.py" "Refactor this codebase to use async/await"

Interactive Mode

claude -i

This starts an interactive session where you can have ongoing conversations with Claude about your code.

Advanced Features

Context Management

Include specific files:

claude --context src/utils.py src/main.py "How can I optimize this code?"

Exclude files:

claude --files "*.py" --exclude "test_*.py" "Review my code for bugs"

Directory context:

claude --dir ./src "Analyze the architecture of this project"

Output Control

Save to file:

claude "Generate a README for this project" --output README.md

Append to file:

claude "Add unit tests" --append tests.py

Diff mode:

claude --diff "Improve error handling in this function"

Best Practices

Effective Command Structure

Be specific with file patterns:

# Good
claude --files "src/**/*.py" "Add type hints to all functions"

# Better
claude --files "src/models/*.py" "Add Pydantic models for data validation"

Context Management

Use project-specific configs:

# Create .claude-config in your project root
{
"include_patterns": ["src/**/*.py", "tests/**/*.py"],
"exclude_patterns": ["**/__pycache__/**", "*.pyc"],
"max_context_size": 50000
}

Workflow Integration

Git integration:

# Review changes before commit
git diff | claude "Review these changes for potential issues"

# Generate commit messages
git diff --cached | claude "Generate a concise commit message"

Common Use Cases

Code Review

claude --files "*.py" "Review this code for security vulnerabilities"

Documentation

claude --file api.py "Generate comprehensive docstrings for all functions"

Refactoring

claude --dir ./legacy "Modernize this code to use current Python best practices"

Testing

claude --file calculator.py "Generate comprehensive unit tests"

Configuration

Global Config

Located at ~/.claude/config.json:

{
"api_key": "your-api-key",
"model": "claude-3-sonnet",
"max_tokens": 4096,
"temperature": 0.1,
"default_include": ["*.py", "*.js", "*.ts"],
"default_exclude": ["node_modules/**", "*.pyc", "__pycache__/**"]
}

Project Config

Create .claude-config in your project root:

{
"include_patterns": ["src/**/*", "docs/**/*"],
"exclude_patterns": ["build/**", "dist/**"],
"custom_instructions": "Always include type hints in Python code"
}

Command Reference

CommandDescription
claude "prompt"Basic AI interaction
claude -f file.py "prompt"Include specific file
claude --files "*.py" "prompt"Include files by pattern
claude --dir ./src "prompt"Include directory
claude -iInteractive mode
claude --diff "prompt"Show changes as diff
claude --output file.txt "prompt"Save output to file
claude --append file.txt "prompt"Append to file
claude --model claude-3-opus "prompt"Use specific model

Integration with Editors

Vim Integration

Add to your .vimrc:

" Send current file to Claude
nnoremap <leader>c :!claude --file % "Improve this code"<CR>

" Send selection to Claude
vnoremap <leader>c :!claude "Explain this code"<CR>

VS Code Integration

Use the terminal or create custom tasks in tasks.json:

{
"label": "Claude Review",
"type": "shell",
"command": "claude",
"args": ["--file", "${file}", "Review this code"]
}

Troubleshooting

Common Issues

API rate limits: Use --delay flag to add delays between requests Large context: Use --max-context to limit context size File encoding: Ensure files are UTF-8 encoded

Performance Tips

  • Use specific file patterns instead of including entire directories
  • Set reasonable context limits for large projects
  • Use .claude-ignore files to exclude unnecessary files
warning

Claude Code requires an Anthropic API key and usage is billed per token. Monitor your usage to avoid unexpected charges.

Next Steps