Skip to content

Team adoption of coding agents is the spread of one working practice from a few engineers to the team, one loop at a time. Each loop has an owner who onboards teammates at the loop’s current autonomy level. Adoption is measured as effective use: eligible engineers who complete the loop at its evidence boundary while change failures stay at baseline.

This page is for the tech lead who owns the rollout, and for the CTO who asks whether it worked. You gave twelve engineers access in the spring. Two of them run dependency bumps through an agent every week, a senior stopped after one bad pull request, and the rest use it for completions. In the last retro someone said the early adopters “ship much faster”, and nobody could say how it was measured, or what it cost the review queue.

  • A rule for choosing the first loop the team adopts, and a named loop owner instead of a “champion network”.
  • A shared harness every engineer’s agent reads, kept in sync across Claude Code, Codex and Cursor.
  • An onboarding sequence that takes one engineer from access to a counted completion in two real tasks.
  • Separate rules for spreading a loop to more people and climbing it to the next ladder level, with who signs each.
  • The effective-use measure, with a prompt that computes it from merged pull requests, and the failure modes that make adoption numbers lie.

Why adopt by loop instead of by adoption curve?

Section titled “Why adopt by loop instead of by adoption curve?”

Usage no longer tells teams apart. DORA’s 2025 report found that “90% of survey respondents report using AI at work” (Google Cloud, 23 September 2025). The same report’s central finding is the reason to stop counting users: “AI doesn’t fix a team; it amplifies what’s already there.” A team that spreads agent use without tests, review limits and shared context gets more unreviewed change, not more delivery.

A level also belongs to a loop, not to a person or a team. The one map defines a loop as a repeatable class of change with its own trigger, oracle and stop condition, such as dependency bumps, flaky-test repair or feature work in one service. One engineer can run dependency bumps at L4 and payment-provider work at L2 on the same day, and both are correct.

Translate older rollout schemes, then retire them:

Retired schemeWhat it tried to doWhat replaces it
Adoption curve (champions, early adopters, majority, laggards)Pace the rollout by peopleSpread one loop at a time, with an owner and an eligibility list per loop
“Phase 0” shared baselineStop conventions drifting across toolsThe shared harness below, with an exit check
Org-size models (2–10, 10–50, 50+) with fixed weeksSize the calendarLoop count and team count set the pace; pilot design for many teams
Three training tiersTeach tool features by seniorityUpskilling per ladder transition
Active users, sessions per dayProve adoptionEffective use per loop, with guardrails

Build one shared harness before anyone onboards

Section titled “Build one shared harness before anyone onboards”

Onboarding fails when each engineer’s agent reads different context. Before the first teammate joins a loop, commit one instructions file generated from the real repository. The project conversion playbook covers the full setup; this is the minimum.

Run claude at the repository root and paste:

Explore this repository and write a CLAUDE.md at the root. Capture our stack,
the exact install, build, typecheck, lint and test commands, our branch and
PR conventions, and the conventions a new engineer most often gets wrong.
Bullet points only, under 60 lines. Then run each command you listed and
report which pass on the default branch. Finally, list which rules an
automated check could enforce, so they move into CI instead of prose.

On a large monolith, add “use subagents to survey each top-level directory” so the exploration does not exhaust the main session’s context. Claude Code also reads AGENTS.md when a project has no CLAUDE.md, from v2.1.277 for first-party sessions and v2.1.281 on Bedrock, Google Cloud, Foundry, LLM gateways or with telemetry off, both on latest and on stable since stable reached v2.1.287 (checked 2026-10-12). Check your engineers’ versions before relying on it.

The exit check for the harness is mechanical: a fresh clone passes typecheck, lint and tests with exactly the commands the instructions file lists. Teams running more than one tool then need the files to stay in agreement.

Run the sync prompt whenever one of the files changes. Shared skills and hooks follow the same rule: one committed copy, reviewed like code (shared skills).

Pick the loop whose output your code host and CI already judge, so completion is counted by the system, not by the person who ran it.

CriterionGood first loopPoor first loop
VolumeAt least five merged changes a month, so a 30-day window holds evidenceA quarterly migration
OracleA test, type check or contract check decides “done”“Looks right to the reviewer”
Risk classLow or medium: tests, internal tooling, dependency patchesAuthentication, payments, schema migrations on production data
Blast radiusOne service, reversible by revertShared libraries every team imports
PeopleTwo or more engineers do this work weeklyOne specialist owns it alone

Flaky-test repair, dependency bumps and failing-test fixes usually pass all five. Record the loop, its current level and its owner in the repository’s loops.yaml; the adoption roadmap has the register format.

A loop owner replaces the old “champion”: accountable for one loop’s evidence, not for evangelizing a tool. Pick someone peers respect who explains well, not the loudest early adopter.

  • Runs the loop first and records the rough edges in the loop’s entry.
  • Pairs with each teammate on their first task in the loop.
  • Curates the shared harness for the loop: instructions, skills and the onboarding task list.
  • Reports measured results in team meetings: completions, accepted changes and failures, never anecdotes.
  • Carries friction back to the tech lead, classified, so the team fixes the most frequent class first.

Cap the owner’s support time and rotate the role when the loop reaches its next level.

Onboarding is two real tasks from the backlog, not a workshop on a toy project. It ends when the engineer counts toward effective use.

  1. Access and policy. A managed account, the team’s usage policy accepted, and a working setup that reads the shared harness. In Codex, that includes trusting the repository (accept the prompt on the first codex run there). Nobody on the loop gets production credentials through the agent.

  2. Read the loop, not the tool manual. The engineer reads the loop’s loops.yaml entry and its adoption card: which tasks are eligible, what counts as done, and which paths are excluded.

  3. First task, paired. The owner and the engineer take one eligible task from the backlog and run it at the loop’s current level. The task ends at the evidence boundary: a merged pull request with required checks green.

  4. Second task, solo. The engineer runs a second eligible task alone. The owner reviews the pull request the same way as any other in the loop, not more strictly.

  5. Counted. Add the engineer to eligible.txt with their onboarding-complete date. They count in the denominator of effective use for this loop in every window that starts on or after that date, and in the numerator for any such window in which they have a completion. Counting from the window start keeps a late joiner from deflating a window they could not have completed, and it means the two onboarding PRs never count as completions. Developer onboarding time turns steps 1–3 into a timed fixture for new hires.

What the newcomer learns depends on the loop’s level, not on their seniority:

Loop levelWhat the newcomer doesWhat a human reads before mergeWhat the owner checks on task one
L2 PairedSteers the agent live and answers permission promptsThe newcomer reads every edit as it happensThe task stayed inside the eligible paths
L3 Review managerStarts an unattended run in a worktree or sandbox, then reviews the diffA reviewer reads every diffThe run used the shared harness and the local tests passed before the PR
L4 Spec managerWrites or accepts the spec and acceptance criteria, then reads the evidence bundleThe spec and the evidence bundle; code only for high and critical risk classesTests and CI files are untouched, and the bundle matches the acceptance criteria

When does a loop spread, and when does it climb?

Section titled “When does a loop spread, and when does it climb?”

A loop changes in two independent ways. Spreading adds people at the same level. Climbing moves the loop to the next rung of the ladder. Change one per measurement window, never both, or you cannot tell which change caused a failure.

ChangeGo whenStop or roll back whenWho signs
Spread to the next group of engineersEffective use among current eligible engineers is stable for one window, and follow-up fixes and change failures are at or below baselineTime to first review rises past the team’s cap, or follow-up fixes rise above baselineTech lead
Climb L2 → L3Runs finish unattended in isolated checkouts and reviewers can keep up with every diffReviewers start approving without reading; the review queue grows week on weekTech lead
Climb L3 → L4Protected tests, an evidence bundle on every PR, and a sampled audit that passesA sampled PR changed its own tests, or the loop’s revert rate risesTech lead, with the code owner for the paths involved
Climb L4 → L5Low-risk classes auto-merge by rule, and the rollback path fired in a drillAny loop-caused incident in the windowTech lead and the CTO who owns the risk-class policy

The mechanics of each climb (worktrees, protected tests, evidence gates, auto-merge rules) are on the adoption roadmap. The people side of moving review from diffs to evidence is in trust transfer.

How does the pace change with the number of teams?

Section titled “How does the pace change with the number of teams?”
ShapeHow many loops move at onceWhat coordinates them
One teamOne loop spreading or climbing at a timeThe tech lead and one loop owner
Several squads sharing a codebaseOne loop per squad, each with its own ownerOne shared harness core; per-squad loop entries in loops.yaml
Many teamsPilot loops on two or three teams against matched teams that continue as beforeA signed decision rule from pilot design, then the organization-wide roadmap

How do you measure adoption without counting seats?

Section titled “How do you measure adoption without counting seats?”

Measure effective use per loop, with the definition from measuring effective workflow use:

effective use (loop, window) = eligible engineers with ≥ 1 completion at the evidence boundary
÷ eligible engineers with access and onboarding completed

The evidence boundary is a merged pull request with required checks green that was not reverted, or fixed by a follow-up change, within 14 days. Pair the number with guardrails from metrics frameworks: the 14-day follow-up fix rate, change failure rate and time to first review, each against the pre-rollout baseline for the same task type. DORA’s 2025 report (Google Cloud, 23 September 2025) is why the guardrail is not optional: “we observe a positive relationship between AI adoption on both software delivery throughput and product performance”, and in the next sentence, “AI adoption does continue to have a negative relationship with software delivery stability.” Report per loop and per team, never per engineer.

To make the count mechanical, label each pull request with its loop (loop:flaky-test-repair) and with agent-assisted from the PR template. The window is the 30 days ending 14 days ago, so every completion has had 14 days to be reverted or fixed. Export 44 days of merged pull requests in a terminal at the repository root:

Terminal window
# GNU date (Linux); on macOS use: date -v-44d +%F
SINCE=$(date -d '44 days ago' +%F)
gh pr list --state merged --search "merged:>=$SINCE" --limit 1000 \
--json number,title,author,labels,mergedAt,body,statusCheckRollup > merged-prs.json

Save the prompt below as prompts/effective-use.txt, list the eligible engineers in eligible.txt (one login loop onboarded-YYYY-MM-DD line per engineer and loop, since each loop has its own eligibility list), and run it read-only:

Terminal window
claude -p "$(cat prompts/effective-use.txt)" --tools "Read" --strict-mcp-config > effective-use.md

--tools "Read" removes every other built-in tool and --strict-mcp-config skips the project’s MCP servers, so the agent itself has no tool that edits files or runs commands. Hooks in your settings files still run, so add --setting-sources user (or run it in a clean checkout) if the project defines hooks. --setting-sources user still loads your user-level and plugin hooks; --safe-mode also disables hooks, plugins and MCP servers (Claude Code 2.1.283).

To check the output, pick three completions and three excluded PRs at random and confirm each against the code host. If one of the six is wrong, fix the labels or the prompt before you report the number.

Standardize review before the loop spreads

Section titled “Standardize review before the loop spreads”

Before a loop spreads past its first engineers, agree what a reviewer checks, and make the pull request carry it. At L3 the reviewer still reads every diff; at L4 the reviewer reads the spec and the evidence bundle, and reads code only for high and critical risk classes. Let a review agent run first, against the same standard: /code-review in Claude Code, /review or codex review in Codex, or the Cursor agent with the standard attached. Agent PR review covers wiring it into CI. A human still owns the merge.

Every check the prompt marks as enforceable goes into CI before the loop spreads. A check a person has to remember erodes first.

Treat each objection as a gap in the loop’s evidence and close it with a check, not an argument.

ObjectionThe evidence gap behind itWhat to do
“I’m faster without it.”No measured comparison on this person’s tasksRun a matched pilot on their own tasks; skeptics and seniors has the pilot log and an honest reading of METR’s results
“Agent code is bad.”The loop has no oracle the agent cannot editPut the senior in charge of the loop’s checks; the loop climbs only when those checks hold
“It doesn’t understand our codebase.”The engineer’s agent is not reading the shared harnessAsk the agent to quote the first rule in CLAUDE.md or AGENTS.md; if it cannot, the file is not loading. In Codex, check that the repository is trusted: its path has trust_level = "trusted" in ~/.codex/config.toml
“Our current way works.”Nobody has seen both workflows on the same taskRun the old workflow alongside the loop for one window and compare the two on the guardrails
“This will replace my job.”No stated view of the roleSay what the team’s work becomes, specifying and verifying behavior; see craft and career

Do not mandate the tool on day one. Forced adoption produces sessions that exist to satisfy a dashboard and pollutes the effective-use denominator.

  • Adoption stops after the first engineers. The usual cause is a missing harness or no owner in each squad, so every new person starts from zero. Recover by running the harness exit check on a fresh clone and naming one owner per loop.
  • Conventions drift across tools. CLAUDE.md, AGENTS.md and the Cursor Rules disagree, so results depend on who drives. Run the sync prompt, make one file the source of truth, and add a CI check that fails when the pointer files change without it.
  • One bad agent PR burns credibility. Revert it, add the check that would have caught it to CI, and pause spreading for one window. Do not pause the whole team: the other loops’ evidence is still valid.
  • The loop owner becomes a help desk. Answers live in chat, so questions repeat. Move each repeated answer into the instructions file or a shared skill, and rotate the owner.
  • The review queue grows. Spreading added authors faster than reviewers. Set a per-team cap on open agent pull requests with the review queue limits and stop spreading until time to first review returns to baseline.
  • Numbers nobody measured. “It feels faster”, or a speed-up figure nobody can trace, dies at the first “measured how?”. Reconstruct a 12-week baseline from the code host and report effective use with its guardrails, or report nothing.
  • Spread and climb in the same window. Failures rise and nobody can say why. Roll back the climb, keep the spread, and change one thing per window from then on.
  • Training content goes stale. Teach the loop’s gates and evidence, which change slowly, and assign someone to track tool changes (keeping current).

Start from the team rollout hub if you have not converted the repository yet. The next step after the first loop spreads is the repository roadmap.