enabling AI's Full Potential: Bridging the Gap from Sandbox to Production Lovable and Cursor are impressive AI coding tools, but both suffer from a lack of context that prevents seamless handoff from prototype to production. A developer proposes a solution: three files at the repo root—CLAUDE.md, .cursorrules, and AGENTS.md—that agents read automatically to enforce naming conventions, tech stack decisions, and project rules. This approach bridges the gap between sandbox agents and file-system agents, enabling production-ready AI-assisted development. Lovable will ship you a working prototype in a coffee break. Cursor can refactor a 200-file real codebase in an afternoon. Both are genuinely impressive, both enable something real, and both have the same blind spot: context. The sandbox agent forgets your stack the second you close the tab. The file-system agent reads your repo and invents its own conventions. Neither one carries your engineering decisions from prototype to production — because the context they need isn't in the model, it isn't in the prompt, and it isn't on the splash page of the tool. It lives in the repo, in files most projects never write. Here's how to actually fix that. COMPARE: sandbox agent vs file-system agent — what each one does well, what each one forgets, and the gap between them There are two families of AI coding tool, and they solve different jobs. Sandbox agents — Lovable, Bolt, v0, Rork. You describe an app, they generate it in a hosted environment. Fast, pretty, complete with a deploy URL. The catch: the codebase is theirs, the conventions are theirs, and the moment you want a real backend, real auth, a real billing integration, you're rewriting. File-system agents — Cursor, Claude Code. They read your actual repo, edit your actual files, run against your real test suite. capable, but they're only as good as the map you give them. Open a fresh project and they'll happily invent a routing convention that conflicts with the one in your head, name a component three different ways, and reach for a library you stopped using last year. Neither is wrong. They solve different jobs. The thing nobody does well is the handoff. A language model doesn't have a codebase. It has a sliding window. Everything it knows about your project has to fit in that window, every turn, and whatever doesn't fit, it has to guess at. The things an agent will guess at, in order of how badly they go wrong: Button.tsx vs button.tsx vs Btn.tsx . The model picks one per file and changes its mind halfway through. variant or intent ? size="md" or size="medium" ? Without a reference, every component becomes a coin flip.You can put all of this in a prompt. You can paste it into every chat. You'll forget. The model will forget faster. The right home for this is a file the agent reads on its own, every session, before it touches a line of code. CONCEPT: three files at the repo root — CLAUDE.md, .cursorrules, AGENTS.md — read automatically by the major file-system agents There's a small, boring set of files that turn a file-system agent from a clever intern into something that ships to production. You write them once, they sit at the repo root, and any agent that knows how to read a repo which is all of them, now picks them up automatically. CLAUDE.md — read first by Claude Code. Plain markdown. Project overview, tech stack with rationale, naming conventions, the commands an agent should know pnpm dev , pnpm test , pnpm db:push , and the rules you want enforced. There is no required schema, which is the whole problem and the whole point. .cursorrules — same job, different file name, picked up by Cursor. Same content, mostly. Cursor merges it with its own rules and applies them on every edit. AGENTS.md — the emerging cross-tool standard. A growing handful of agents now read this — the OpenAI Codex CLI, Goose, and a long tail of editors and plugins starting to pick it up. You don't need to maintain three. Most teams keep CLAUDE.md and .cursorrules synced, and watch AGENTS.md converge. The cost is half an hour, once. Here's a CLAUDE.md that's actually useful — the kind that ships a kit to production: Project overview This is a SaaS dashboard. Users sign up, create a workspace, and manage projects inside it. Auth is email + password with optional OAuth Google . Billing is two tiers, handled by our payment provider. Tech stack - Web: TypeScript. The framework handles routing, data fetching, and server actions. Server state stays on the server where possible. - Database: Postgres. ORM migrations live in /db/migrations. - Auth: session cookies, httpOnly, sameSite=lax. - Billing: Checkout for upgrades, customer portal for downgrades. - Email: transactional templates in /emails. Conventions - Components in /components, one file per component, named after the component Button.tsx exports Button . No default exports. - Server actions live in /app/actions, named