Claude Code
Dev Workflow
Learn how to configure Claude Code for your team, write powerful CLAUDE.md files, build custom slash commands, and know when to use plan mode vs. direct execution.
Core Concepts — What Makes Claude Code Different
CLAUDE.md — Persistent Memory
Claude Code reads CLAUDE.md at the start of every session. It's how you give Claude project context without repeating it in every prompt. Hierarchy: Global (~/.claude/CLAUDE.md) → Project root (./CLAUDE.md) → Subdirectory.
Slash Commands — Reusable Prompts
Custom slash commands are markdown files in .claude/commands/ (project) or ~/.claude/commands/ (personal). They become /command-name shortcuts that any team member can invoke — no copy-pasting prompts.
Plan Mode — Think Before Acting
Hit Shift+Tab to enter plan mode. Claude analyzes requirements and proposes a step-by-step plan before writing a single line of code. Essential for complex features, migrations, and refactors.
Context Window — Use It Wisely
Every file reference, tool call, and message consumes context. Use /clear when switching tasks. Use /compact to summarize a long session. Use @file to add specific files rather than letting Claude scan everything.
MCP Servers — External Tool Access
Configure MCP servers in your settings to give Claude Code access to databases, GitHub, browser automation, Sentry, and more. Claude Code can act as both MCP client and server simultaneously.
Hooks — Automated Quality Gates
Hooks run shell commands automatically on events like PostToolUse. Run black after every Python file write, or tsc after TypeScript edits. Enforces standards without manual reminders.
CLAUDE.md — Interactive Builder
Toggle sections on the left to see how they compose into a real CLAUDE.md file. A well-configured CLAUDE.md saves tokens on every session by eliminating repetitive context-setting.
~/.claude/CLAUDE.md (applies to all projects). Put project-specific context in ./CLAUDE.md at repo root. Claude merges both automatically.Slash Commands — Click to Explore
Commands live as .md files in .claude/commands/ (project-scoped) or ~/.claude/commands/ (personal). They support frontmatter for tool permissions, model selection, and dynamic arguments via $ARGUMENTS. Skills in .claude/skills/ work similarly but can be auto-invoked by Claude.
Plan Mode vs. Direct Execution
The single most impactful habit you can build. Use Shift + Tab to trigger plan mode. Claude reads your codebase, proposes a full plan, and waits for your approval before touching anything.
Context Window Simulator
Context is your most limited resource. Each scenario below shows what's consuming your context window and what you should do about it. Click a scenario to see the breakdown.
Recommended Team Workflow
A reproducible, token-efficient workflow for integrating Claude Code into a real engineering team. Each step builds on the last.
Run /init in a new project. Claude scans the codebase and generates a starting CLAUDE.md. Review and refine it — add your team's coding standards, the build commands, and any architecture conventions. Commit this to the repo so every team member benefits.
Identify your 3–5 most repeated workflows: code review, security scan, test generation, PR description writing. Create .md files in .claude/commands/ for each. These become team-wide standards. Use $ARGUMENTS for dynamic inputs and frontmatter to set allowed-tools.
Add PostToolUse hooks to your .claude/settings.json. Auto-run your linter on file edits, run type checks after TypeScript changes, format with Prettier after any write. This means Claude's output is always linted — no manual fixes needed.
Use /clear at the start of every new feature or bug fix. Don't carry over conversation history from a different task — it wastes tokens and confuses Claude. Add specific files with @filename rather than letting Claude scan everything.
For new features and refactors, use plan mode (Shift+Tab). Review the plan, ask Claude to adjust it, then approve. For bug fixes and boilerplate, just execute directly.
When you see a context warning from /context, run /compact. This summarizes the session into a compact representation, freeing up space without losing the work done so far. Then continue from where you left off.