Compare · Alternatives

When CLAUDE.md Stops Scaling

A CLAUDE.md (or .cursorrules, or AGENTS.md) in each repo is real shared context, and for one agent on one repo it's genuinely enough — don't buy anything. This page is honest about exactly where that breaks: not for a solo dev, but for a team. And what teams use instead.

The honest version

One agent, one repo? A CLAUDE.md is enough. It's local, versioned with your code, and the agent reads it every run. You don't need First-Tree, and we'd rather say so.
It stops scaling on a team. The file grows past a few hundred lines and degrades; it's one flat file with no ownership; it's vendor-specific (CLAUDE.md, .cursorrules, AGENTS.md — duplicated, drifting); five people edit it five ways; a second repo means several stale copies of one opinion.
That's the line. First-Tree is shared context for agent teams — small Markdown nodes, per-node ownership, PR review, read by any agent. Use both: CLAUDE.md for repo-local execution, First-Tree for team-wide context.

First: when a CLAUDE.md is genuinely enough

We'll start where most comparison pages won't: if you're one developer working in one repository with one agent, a CLAUDE.md is the right tool and you should not buy anything. It lives next to your code, it's versioned by Git, and your agent reads it on every run. The same is true of .cursorrules for Cursor or AGENTS.md for Codex. It is real shared context, it costs nothing, and adding a platform on top would only be overhead.

First-Tree is built for teams running agents across repos — not for the solo, single-repo case. If that's you, keep your CLAUDE.md and come back when your setup grows. The rest of this page is about the point where it does.

Where it stops scaling

A CLAUDE.md is one flat Markdown file. That's a feature at small scale and a constraint at team scale. Four things break, in roughly this order, as a team grows:

  • The file degradesPast a few hundred lines, one flat file is harder for an agent to attend to evenly — the context exists but stops reliably landing.
  • No ownershipIt's a single file with no per-section owner. Nobody is accountable for keeping the auth rules current versus the billing rules.
  • Vendor-specific copiesCLAUDE.md for Claude, .cursorrules for Cursor, AGENTS.md for Codex — the same opinion, duplicated per tool, drifting apart.
  • Per-developer driftFive people edit the file five different ways; add a second repo and you now have several stale copies of one decision.

None of these are bugs in CLAUDE.md — they're the inherent limits of putting team-wide context in a single per-repo, per-vendor file. The fix isn't a better file. It's moving that context up a layer.

What First-Tree is (and isn't)

First-Tree is not a replacement for your repo-local file, and it isn't a framework. It's a context tree: a Git repository where every directory is a domain and every file is a small Markdown node capturing a decision, a constraint, or who owns what. Instead of one flat file per repo, your team's shared context becomes many small nodes, organized by concern, that any agent reads — Claude Code, Codex, Cursor — with no lock-in to one vendor's file format.

Crucially, each node has an owner declared in its frontmatter, and changes go through pull request review like any other code. So the three things a flat file can't give you — per-node ownership, review, and one source of truth across repos and tools — come for free from the workflow you already use.

CLAUDE.md → First-Tree

DimensionCLAUDE.md / .cursorrules / AGENTS.mdFirst-Tree
ShapeOne flat file per repoMany small Markdown nodes, by domain
Best forOne agent, one repo (genuinely enough)A team of agents across repos
OwnershipNone — whole file, no ownerAn owner per node (declared in frontmatter)
Changes reviewedInformal, whoever editsVia pull request, by node owner
VendorOne file per tool (drifting copies)One source, read by any agent
At a few hundred linesDegrades — attention thins outStays scoped — agent reads only its nodes
Second repoAnother stale copy to maintainSame nodes, no duplication
Lock-inVendor-specific formatNone — plain Git, any agent, any language

Use them together — different layers

This isn't a rip-and-replace. CLAUDE.md and First-Tree sit at different layers, and the clean split is by purpose:

  • CLAUDE.md staysRepo-local, execution-level instructions: the build command, the test runner, the one gotcha specific to this service.
  • First-Tree takes the restCross-cutting, team-wide context: decisions and their rationale, constraints, cross-domain relationships, ownership.
  • The litmus testIf an agent needs it to design a task, it belongs on the tree. If only to execute one in this repo, it stays in CLAUDE.md.

In practice your CLAUDE.md gets shorter and points at the tree for anything shared. The file keeps doing what it's good at; the tree absorbs what made the file degrade. Because the tree is plain Git, your per-repo file and your shared nodes both live under the same review, history, and ownership.

The dividing line: a CLAUDE.md is for one repo; First-Tree is shared context for agent teams.

Keep the file for repo-local execution. When the same opinion starts living — and drifting — across several repos and several agents' config files, that's the signal to move it onto the tree: one set of owned, reviewed nodes every agent reads, instead of N stale copies. Open source and free.

The bigger picture

Per-repo agent files were the first version of shared context, and they worked — which is exactly why teams hit their ceiling. The durable version of the same idea keeps the small, local file and adds a shared, owned, reviewed layer above it. That's the foundation of running real AI agent teams, and how agentic coding holds up once more than one person and one agent are involved.

See also: writing a good CLAUDE.md, First-Tree vs the Claude Agent SDK (the SDK builds the agent; the tree gives it your team's context), and First-Tree vs Pydantic AI.

FAQ

Common questions.

Is a CLAUDE.md file enough for shared context?

For one developer on one repo, yes — and you should not buy anything. A CLAUDE.md (or .cursorrules, or AGENTS.md) checked into the repo is the right tool: it's local, versioned with the code, and the agent reads it on every run. It stops being enough when you scale to a team: the file grows past a few hundred lines and the agent stops attending to all of it, there's no per-section ownership, you keep a separate vendor-specific copy for each tool, and several people edit it several different ways. That's when teams move shared context out of one flat file and into First-Tree.

CLAUDE.md vs .cursorrules vs AGENTS.md — which should I use?

If you're standardized on one agent, use that agent's file: CLAUDE.md for Claude Code, .cursorrules for Cursor, AGENTS.md for Codex and others. The problem isn't choosing one — it's that a team rarely uses just one. The moment a second tool enters, you maintain duplicated copies of the same opinion in different files, and they drift. First-Tree is the layer above all of them: small Markdown nodes any agent reads, so Claude Code, Codex, and Cursor share one source of truth instead of three drifting copies.

Do I need First-Tree if I already have a CLAUDE.md in every repo?

Not necessarily. If it's one person and a handful of repos, per-repo CLAUDE.md files are fine — keep them. You start to feel the gap when the same opinion lives (and drifts) across several repos, when nobody owns a given section, and when reviewing changes to that context is informal. First-Tree adds per-node ownership (declared in each node's frontmatter), PR review on context changes, and one set of nodes every repo's agents read — so you stop maintaining stale copies of the same decision.

What's the alternative to .cursorrules for a team?

A shared context tree. Instead of a .cursorrules file per repo per tool, First-Tree stores your team's decisions, constraints, and ownership as many small Markdown nodes organized by domain, in one Git repo. Any agent — Cursor, Claude Code, Codex — reads the relevant nodes. You keep the same Git review and history you already use, and you stop duplicating the same rules into a vendor-specific file in every repo.

Can I use CLAUDE.md and First-Tree together?

Yes, and most teams do. Keep a short CLAUDE.md (or .cursorrules / AGENTS.md) in each repo for repo-local, execution-level instructions — build commands, the test runner, the one gotcha specific to that service. Point it at First-Tree for the cross-cutting, team-wide context that would otherwise bloat the file or get duplicated across repos. The litmus test: if an agent needs it to design a task, it belongs on the tree; if only to execute one in this repo, it stays in CLAUDE.md.

Get Started

Shared context for agent teams.

First-Tree is the open-source layer above your per-repo agent files: many small Markdown nodes, organized by domain, owned per-node, reviewed via PR, and read by any agent — Claude Code, Codex, Cursor. Keep your CLAUDE.md; point it here when the team outgrows one flat file.