How to Use Claude Code on an Existing TypeScript Project
Add Claude Code to a TypeScript repo you already have: a CLAUDE.md that matches your real build, permission rules that block dangerous commands, and a typecheck loop the agent runs itself.
The bottleneck is review capacity, not generation speed.
AI-assisted coding is a review problem wearing a generation problem’s clothes. Producing code was never the slow part of software work; deciding what to build and checking that a change is correct were, and only one of those got faster.
That framing decides how to set the tools up. Everything worth doing is aimed at making the output cheaper to check: small diffs, one task per session, tests written before the change, a typechecker the tool can run itself.
Reach for these tools on work that is mechanical and verifiable. Adding tests for existing behaviour. Migrating call sites from a deprecated API. Converting an untyped module. Implementing a function whose contract you already wrote as a failing test. In each case the specification exists and the verification is automatic, which is the combination these tools handle well.
Skip them on cross-cutting refactors, anything with a security boundary, and database migrations. Not because output quality drops, but because the review cost rises faster than the writing cost falls.
The recurring failure is quiet rather than dramatic. Tests get weakened instead of satisfied. A dependency appears in the diff that nobody chose. The change works but reads nothing like the surrounding code, because the project’s conventions were never written anywhere a tool could read them.
None of those are model problems. They are all fixed by configuration and by reading diffs rather than summaries, which is what the articles here cover.
Start here
Add Claude Code to a TypeScript repo you already have: a CLAUDE.md that matches your real build, permission rules that block dangerous commands, and a typecheck loop the agent runs itself.
A reading order that builds AI Coding knowledge in the sequence it is actually needed.
Add Claude Code to a TypeScript repo you already have: a CLAUDE.md that matches your real build, permission rules that block dangerous commands, and a typecheck loop the agent runs itself.
Failure modes that come up repeatedly with AI Coding, and where each one is solved.
A working loop for running a coding agent on a real codebase — task scoping, branch isolation, tests as the contract, and the review discipline that stops unreviewed code reaching main.
Add Claude Code to a TypeScript repo you already have: a CLAUDE.md that matches your real build, permission rules that block dangerous commands, and a typecheck loop the agent runs itself.
Add Claude Code to a TypeScript repo you already have: a CLAUDE.md that matches your real build, permission rules that block dangerous commands, and a typecheck loop the agent runs itself.
Often more than on a greenfield one, because the mechanical work — writing tests for existing behaviour, migrating a deprecated API, adding types to untyped modules — is exactly the shape these tools handle well.
Write the conventions down in a project instructions file and enforce them with a linter. Anything only enforced by human reviewers in pull requests will not be followed.