Skip to main content
setup guideclaude codedeveloper tools

How to set up Claude Code for a real engineering team

A practical playbook for rolling out Claude Code beyond a single developer — CLAUDE.md, hooks, permissions, MCP servers, and the review workflows that actually scale.

Mark Lighty · Editor in Chief · · Updated May 27, 2026

Claude Code works out of the box for a single developer. Rolling it out to a team is a different problem. The difference between teams getting transformative leverage and teams getting underwhelming results is almost never the model — it’s the operating manual the team wraps around it. This is the playbook for that operating manual, written from the perspective of getting a real engineering team to compounding leverage rather than one-off wins.

What “real team usage” actually means

Before the steps, the framing. Solo Claude Code usage is autonomous in a narrow sense — you tell the agent what to do, you review the output, you commit. Team usage adds three constraints that change the engineering investment required:

  1. The agent’s behavior has to match the team’s conventions. Otherwise you spend more time correcting the agent than you save.
  2. PRs from the agent have to flow through the same review gates as human PRs. Otherwise quality drift compounds invisibly.
  3. The setup has to be shareable across engineers. Otherwise leverage is bottlenecked at the engineer who configured their own environment.

Most of the rollout work is making these three things true. The model does the actual coding; the setup determines whether the coding is useful.

Step 1: Install and authenticate

npm install -g @anthropic-ai/claude-code, then claude to authenticate. Each engineer authenticates with their own Pro/Max account, or the team’s API console for billing consolidation. Both work; the per-engineer Pro/Max accounts are simpler operationally and the cost transparency is roughly the same.

The early decision to make is whether engineers are running Claude Code on their own machines (the default), in a remote dev environment, or in a hybrid pattern. Remote dev environments make standardization easier but add latency to the agent loop; local installs are faster but require each engineer to configure their environment correctly. Most teams start local and only move to remote when standardization becomes the blocker.

Step 2: Write a CLAUDE.md

This is the highest-leverage 30 minutes you’ll spend on the rollout. The default behavior of Claude Code without a CLAUDE.md is competent-generic — it writes reasonable code that doesn’t know anything about your codebase’s preferences. The default behavior with a well-tuned CLAUDE.md is dramatically more useful — the agent follows your conventions, avoids your anti-patterns, and produces work that fits the codebase as if a familiar engineer wrote it.

Drop a CLAUDE.md in the repo root that covers:

  • Project overview — what this codebase is, in three sentences. Don’t be ambitious; the model needs grounding, not poetry.
  • Stack — languages, frameworks, key libraries. Versions matter when they affect API shape.
  • Conventions — how you name things, structure tests, format commits, organize directories.
  • Anti-patterns — what not to do. This is the under-invested section. List the libraries you don’t use, the patterns you’ve migrated away from, the refactors you don’t want. Negative examples are as load-bearing as positive ones.
  • Common workflows — “to add a new endpoint, follow this pattern.” “To add a new test, use this fixture.” “When you change the database schema, also update X.” This is where teams undershoot most, and it’s the section that delivers the most leverage.
  • Tools and commands — the actual shell commands the agent should know about. npm test to run tests. npm run lint to lint. npm run typecheck for type checking. Each one needs to be documented or the agent will guess.

Claude reads this on every session. Done well, it eliminates the vast majority of one-off corrections you’d otherwise type. Done poorly or skipped entirely, you’ll spend 5-10 minutes per session correcting the agent toward your conventions — and the team will conclude the tool doesn’t work.

Step 3: Set permissions to reduce friction

By default, Claude Code asks permission for write operations and many bash commands. This is the right default for trust-building but becomes friction at scale.

For trusted read-only commands, add an allowlist in ~/.claude/settings.json (per-engineer) or in the project’s .claude/settings.json (team-wide) so engineers aren’t permission-prompt-fatigued. Common entries that should be auto-approved:

{
  "permissions": {
    "allow": [
      "Bash(npm test*)",
      "Bash(npm run lint*)",
      "Bash(npm run typecheck*)",
      "Bash(git status)",
      "Bash(git diff*)",
      "Bash(git log*)",
      "Bash(rg *)",
      "Read(*)"
    ]
  }
}

Write operations and shell commands that mutate state should stay gated. The principle: every command that reads state should be approved by default; every command that changes state should require approval the first time. This dramatically reduces the per-prompt friction while keeping the destructive-action checkpoint intact.

Step 4: Wire up hooks (the underrated feature)

Hooks let you run commands on tool events — pre-edit checks, post-edit type checking, notifications when work completes, automatic test runs. They’re configured in .claude/settings.json and they’re the difference between “the agent finished, now I need to check its work” and “the agent finished and the test suite has already run.”

The pattern that pays off most for engineering teams: a Stop hook that runs your test suite, lint, and typecheck when Claude finishes a task. The agent gets feedback automatically; the engineer gets a green/red signal without typing anything.

Other high-leverage hooks:

  • PreToolUse(Write|Edit) — run a quick syntax check or schema validator before writes land.
  • PostToolUse(Write|Edit) — auto-format edits using your project’s formatter.
  • Stop — run tests + lint + typecheck; surface failures to the engineer.
  • SessionStart — print a summary of recent changes, open PRs, or in-flight tasks so the agent has fresh context.

Hooks are the under-marketed part of Claude Code’s surface, and they’re where serious teams generate compounding leverage. The setup cost is one-time; the value compounds across every session.

Step 5: Wire up MCP servers for your real systems

Claude Code is much more useful when it can actually look at your systems, not just your codebase. MCP (Model Context Protocol) servers let you expose your databases, CI logs, ticketing system, monitoring dashboards, and anything else the agent might need.

Common MCP servers worth wiring up early:

  • Your ticketing system — Linear, Jira, GitHub Issues. The agent can read tickets and PR descriptions.
  • Your database (read-only) — query the schema, look at sample data, understand the data shape before writing migration code.
  • Your error monitoring — Sentry, Rollbar, Honeycomb. The agent can pull a stack trace before debugging.
  • Your CI — the agent can read recent build logs when tests fail.

The MCP ecosystem has thousands of community-maintained servers as of mid-2026; most popular SaaS tools have one. The setup cost is low; the leverage is real.

Step 6: Code review pattern that scales

The biggest mistake teams make is letting Claude-generated PRs go straight to main. The agent is competent, not infallible — and the failure modes are different from human failure modes. Treat agent PRs like junior-engineer PRs:

  • Small commits, narrative PR descriptions. The agent is good at writing PR descriptions if you tell it to. Insist on them.
  • One human reviewer who actually reads the diff. Skim-and-approve is the slow-motion failure mode here. The agent is too productive to babysit a slow review process, but the review still has to happen.
  • Tests required, no “I’ll add them later.” The agent can write tests; insist that it does for non-trivial changes.
  • Block direct-to-main from the agent unless you’ve explicitly authorized that engineer to do it. Some teams (especially small ones with high trust) authorize direct-to-main; that’s defensible but should be a deliberate decision, not a default.

A good review pattern for agent PRs: the engineer who ran the agent owns the PR; a different engineer reviews. This avoids the failure mode of “the agent and the engineer who ran it both miss the same bug because they share a mental model.”

Step 7: Iterate on CLAUDE.md weekly

Every time someone has to correct Claude on something, the question to ask is: “should that have been in CLAUDE.md?” Most of the time the answer is yes. The teams getting the most leverage from Claude Code treat CLAUDE.md as a living document that grows weekly for the first month and monthly thereafter.

A simple discipline: any time a correction repeats twice, it goes into CLAUDE.md. This is the rule that produces compounding leverage — the agent gets noticeably more useful per week as the operating manual matures.

Step 8: Decide on the multi-engineer pattern

Two patterns work; pick deliberately.

Pattern A: each engineer runs their own Claude Code session, independently. Simpler. Per-engineer state. The downside is that learnings (good prompts, useful agents.md additions, MCP server configurations) don’t propagate automatically.

Pattern B: shared session conventions, with periodic cross-pollination. Engineers run their own sessions but share patterns via a team channel, a shared CLAUDE.md, and a quarterly review of what’s working. More leverage; more discipline required.

For teams under 10 engineers, Pattern A is fine. Above 10, Pattern B starts to pay off.

What you’ll get if you do this

Engineers who were skeptical will start saying “I can’t go back.” PR cycle time drops 30-50% for the kind of work the agent is well-suited to (well-scoped tickets, refactors, test additions, documentation updates). The senior engineers will use Claude Code for autonomous overnight work; the mid-level engineers will use it for daily acceleration; the junior engineers will use it as a teaching tool.

The trade-off is that you now own a new artifact — the CLAUDE.md, the .claude/settings.json, the MCP servers, the hooks. It’s the cheapest senior-engineering-time multiplier available, but it requires ongoing investment. Teams that treat it as a one-time setup get diminishing returns; teams that treat it as part of the engineering practice get compounding ones.

What to revisit quarterly

  • Is the CLAUDE.md still accurate? Conventions change. Anti-patterns evolve. The operating manual needs to track.
  • Are the MCP servers still healthy? External APIs change; older MCP servers can break silently.
  • Is the review pattern producing the right quality? If agent PRs are getting waved through, the pattern needs a tighter constraint.
  • Are the hooks doing what they should? Hooks fire on every relevant event; one slow hook can drag every session.

Claude Code is a force multiplier, not a magic wand. The teams getting the most value treat it that way — and invest in the practice around it accordingly.

About the author

Mark Lighty

Editor in Chief

Mark Lighty is the Editor in Chief of AI Runs My Company. He's an independent operator and software engineer who builds production AI agent systems across legal-tech, growth, and outbound automation, and writes here about the patterns separating working deployments from demos. He works daily with Claude Code, the Anthropic API, MCP-based tool surfaces, Clay-style enrichment workflows, and the agent-orchestration patterns this site covers.

Get in touch

Pitch a tool, send a correction, or just say hi — we read everything.

Contact us