Claude Code is Anthropic’s AI coding agent for the terminal, and it’s become the tool I use most in my day-to-day consulting work.
It reads your codebase, edits files, runs commands, and works through multi-step engineering tasks while you review and approve what it does. This site, the theme, the build tooling, most of the recent features, is maintained with it, so this is written from daily production use, not a weekend test drive.
What is it?
Claude Code is a command line agent: you run claude inside a project, describe what you want in plain language, and it explores the code, proposes changes, and executes them with your permission. Unlike a chat window you paste snippets into, it operates directly on your working directory, reading files, editing them in place, running your test suite, and committing when you tell it to.
If you’ve read my OpenAI Codex CLI article, this is the same category of tool. In my experience Claude Code is the more capable agent for sustained, multi-file work on real codebases, which is why it’s the one that stuck.
Install
Two official options. The native installer:
curl -fsSL https://claude.ai/install.sh | bash
Or through npm if you already live in the Node ecosystem:
npm install -g @anthropic-ai/claude-code
Then start it inside a project:
cd ~/Sites/your-project
claude
Authentication & What It Costs
On first run you’ll be prompted to log in. There are two routes, and this matters:
- Claude subscription (Pro or Max), usage is included in the flat monthly price. This is the route I recommend for individuals; heavy agent use on a Max plan would cost multiples more as API tokens.
- Anthropic Console (API), pay-as-you-go token billing against an API key. Makes sense for teams, CI pipelines, and anything headless.
You can switch between them anytime with the /login command inside a session.
CLAUDE.md: The Setup Step That Actually Matters
The single highest-leverage thing you can do is give the agent persistent project context. Claude Code reads a CLAUDE.md file from your project root into every session, architecture notes, build commands, code conventions, things it should never touch. Generate a starting point from your actual codebase with:
/init
…then edit it like documentation, because that’s what it is. A global ~/.claude/CLAUDE.md layers personal preferences on top across every project. Mine holds deployment rules and formatting preferences; each project’s file holds the architecture. The difference between an agent with a good CLAUDE.md and one without is the difference between a colleague and a temp.
Permissions
By default Claude Code asks before it edits files or runs commands, and you approve each action. That’s the right default while you build trust. As you settle in:
- Shift+Tab cycles permission modes, including auto-accepting edits and a read-only planning mode
- A per-project
.claude/settings.jsoncan allowlist specific commands (your test runner,git status, linters) so routine actions stop prompting --dangerously-skip-permissionsexists for sandboxed environments; the name is accurate, treat it accordingly
Headless Mode for Scripts
The -p flag runs a prompt non-interactively and prints the result, which turns Claude Code into a scriptable Unix tool:
claude -p "Summarize the uncommitted changes in this repo"
git diff | claude -p "Review this diff for security issues"
Add --output-format json when another program consumes the result. I use this pattern in build scripts and content pipelines constantly.
Day-to-Day Commands Worth Knowing
claude --continue, resume your most recent session with context intact/compact, condense a long conversation to reclaim context window/model, switch models mid-session (heavier model for architecture, faster one for grunt work)claude mcp add, connect MCP servers, which is how you give the agent access to external tools and services/help, everything else
How It Fits Real Client Work
Where it earns its keep for me: legacy WordPress cleanups where the first task is “figure out what this theme even does,” multi-file refactors that would be an afternoon of careful find-and-replace, writing and running WP-CLI migrations, and debugging with real command output in the loop instead of me pasting fragments into a chat window. I also build Claude API integrations into WordPress for clients, the agent and the API are different products on the same models, and it helps to know both sides.