Case study 03 · Platforms and design systems
Code standards that made AI-generated code cheap to accept
We turned the team's standards into checks that run before every commit and in CI. Throughput rose roughly 50%, estimated from ticket cycle time.
50%
Team throughput up roughly 50%, estimated from ticket cycle time
Tests stopped being written by hand
the team generated them with Claude Code, and that matters because tests are the first thing dropped under deadline pressure
The story in 5 steps
Stack
- Claude Code
- pre-commit hooks
- CI
- ESLint
- TypeScript
- Figma
01 · Context
By 2026 the team used Claude Code every day for components, tests and integrations, and design was connected to Figma.
By 2026 the team used Claude Code every day for components, tests and integrations, and design was connected to Figma. Throughput rose by roughly 50%, estimated from ticket cycle time, and the team stopped writing tests by hand.
AI moves work from writing code to reviewing it, and it does not reduce the total. If review is already the bottleneck, generating more code makes things worse, so review had to get cheaper before AI arrived.
We started with the rules: engineering standards written as executable checks, enforced before every commit and again in CI, with a separate set for each codebase, because a backend and a component library need different rules.
02 · Could not change
A convention with no owner is a suggestion: it holds while someone has time to review carefully, and it stops the first week nobody does.
A convention with no owner is a suggestion: it holds while someone has time to review carefully, and it stops the first week nobody does.
Conventions fade on disciplined teams too, because nothing enforces the agreement. On a system of nineteen repositories, with four developers in a team of twelve, "we agreed to do it this way" has a half-life of about a quarter. I had already seen where that leads: the same queue helper copied into seven repositories, because nothing stopped it.
With AI in the workflow, a soft standard gets weaker still: generated code arrives faster than a person can carefully read it, and the standard becomes decoration.
The requirement was to make the standards mechanical, checked by tools, so that accepting code would cost less than writing it.
03 · What we did
Rules written as code
We wrote the standards as checks that the tooling runs, so none of them depended on anyone remembering a style guide. They included:
- No
any, with a prescribed way of declaring types - A component may not exceed 200 lines
- Every API call must have a request type and a response type
A different set per codebase
The web app, the backend and the component library each had their own set of rules. One set for both a backend and a design system would be loose enough to be useless for one or strict enough to be routinely bypassed in the other.
Deciding which rules mattered in which codebase was part of my job as Technical Lead.
Three severity levels, by stage
The same rule had a different severity at each stage:
| Stage | Severity | Why |
|---|---|---|
| While developing | warning | tells you without interrupting the work |
| Pre-commit hook | error | stops the problem before it becomes shared |
| CI | error | the gate nobody can skip |
Escalating the severity by stage keeps a rule present the whole way through and makes it block only where blocking is cheap. Most teams pick one severity and get one of two failures: if it is too strict, people fight the tooling or switch it off, and if it is too soft, the rule gradually stops being followed. This is the part of the setup I would recommend to any team.
Which checks run where follows the same logic. Formatting and linting run in the hook because they are fast and local, and types and tests run in CI because they are slow and definitive. A hook that takes thirty seconds gets bypassed within a week.
AI in daily use
With the checks in place, Claude Code went into daily use for components, tests and integrations, and design was connected to Figma.
The order mattered because generated code is cheap only when accepting it is cheap, and that requires something other than a person to check the boring half.
04 · Result
Team throughput up roughly 50%, estimated from ticket cycle time
- Team throughput up roughly 50%, estimated from ticket cycle time
- Tests stopped being written by hand: the team generated them with Claude Code, and that matters because tests are the first thing dropped under deadline pressure
- The standards were enforced the same way no matter who reviewed the code, or whether anyone did
In hindsight, the most valuable rule was the 200-line limit on components, more than the type rules or the API contracts. It pays back over years, because it forces decomposition the moment something starts to sprawl, while splitting it is still easy.
05 · Differently
The 50% figure is an estimate from ticket cycle times, not a controlled measurement.
The 50% figure is an estimate from ticket cycle times, not a controlled measurement.
In July 2025, METR ran a randomized controlled trial with 16 experienced developers working on 246 real tasks in repositories they had worked in for years. The developers predicted that AI would make them 24% faster, and afterwards they reported being 20% faster. Measured, they were 19% slower, a gap of 39 percentage points between how fast they felt and how fast they were.
METR has since revised the study's design and treats the result as historical, partly because in a follow-up many developers declined to take part if they had to work without AI. The main finding still stands as a warning: speed that people report themselves is unreliable, including when the report is flattering.
The team's setup differed from the study's in ways that plausibly matter. METR measured individual developers in codebases they had known for five years, using AI ad hoc in an editor with early-2025 tools. This team was building a product in active development, with rules enforced automatically and 2026 tooling. Those differences are reasons to think the 50% might be real, but they do not prove it.
I would measure cycle time properly: three months before and three months after, from data the team already had. It was available, and I estimated instead.
Related services
The services that draw on this work.
- How we can workA developer in your teamCoding standards turned into automated checks, and three developers trained from one specialism into full-stack work.
- AIApp audit and rescueOn a team that writes code with Claude Code, the pre-commit hook and CI enforce rules such as these: no component over 200 lines, no TypeScript any, and a request and response type on every API call.
- Web developmentReact SPA architectureOn the same marketplace, build rules made every API call declare its request and response types and kept each component at 200 lines or fewer.
- Cloud and DevOpsCI/CD and code standardsRules across the nineteen repositories of a US marketplace, among them a ban on the any type, no component longer than 200 lines, and a typed request and response on every API call. Both the pre-commit hook and CI check them.
- Cloud and DevOpsAutomated and end-to-end testingOn a US marketplace for truck services, once the rules were enforced in CI, the team stopped writing tests by hand and generated them with Claude Code.
- AIAI in your engineering teamA US marketplace with a team of twelve, where throughput rose by roughly 50% once the rules ran before commit and in CI. The figure is estimated from ticket cycle time.
- AIAI agents and LLM integrationA language model in daily engineering work: Claude Code writes integrations, components and tests for a US marketplace, and nothing it writes is accepted until the team’s automated checks pass.
- Design systemsFigma to codeA team of twelve at a US marketplace for truck services, where by 2026 design was connected to Figma and the team used Claude Code every day.
- How we can workTechnical leadershipEngineering standards set for each codebase and enforced in CI, and only then AI brought into the team’s daily work. The team’s throughput went up about 50%, which we estimated by comparing ticket cycle times.
Case study 03
Working on a similar problem? We reply within one business day.
The first call takes 30 minutes, and you’re under no obligation.