Atlas
A spec-driven framework for running large, multi-repo, AI-assisted projects — so any agent, in any tool, on any day, can open a project cold and have complete clarity about what it is, where it lives, where the work stands, and how work gets shipped.
Atlas is a small, tool-agnostic set of conventions: where each kind of knowledge lives, and how a unit of work travels from idea to shipped. It assumes you drive development with AI agents, but requires no particular agent, IDE, editor, or memory product. Where a concrete tool helps, it's named as a reference implementation playing a role you can swap.
About this repo. This is the formal write-up of the framework. The practice originated as an operational concept (
workspace-architecture) kept in a memory store; this repository is its standalone, tool-agnostic formalization, served as a small documentation site (and anllms.txt). Its official home is https://atlas.paranoid.software. MIT-licensed, public.
Start here
| If you want to… | Go to |
|---|---|
| Understand and adopt the framework | method/README.md — overview + reading order |
| See how this repo is organized | STRUCTURE.md |
The framework in one screen
- The Atlas — one directory that aggregates all of a project's repos by symlink (not by copying), so a single-CWD agent sees the whole territory at once while each repo keeps its own git, CI, and release cadence. → method/01-the-atlas.md
- The stores model — a fixed answer to "where does this knowledge go?": project orientation + standing decisions in an orientation file; universal rules in a shared memory store every agent queries over MCP (required); current state in a regenerable status digest; each with exactly one home. → method/02-stores-model.md
- The SPEC lifecycle — nothing is coded without a small, deliverable spec; every spec
travels
READY → IN PROGRESS → IN REVIEW → SHIPPED → archived. → method/04-spec-lifecycle.md - The discipline — small deliverable specs and independent review before "shipped" (never trust an agent's self-report). → method/05-discipline.md
Roles and reference implementations
Atlas describes each component by the role it plays, then names a concrete tool that fills it. The tools are swappable and optional; the first two roles are required, the last two are strengtheners.
| Role | Reference implementation (optional) | Alternatives |
|---|---|---|
| Primary agent / tool (required) | Claude Code | Cursor, Codex, Cline, … |
| Cross-tool memory store, over MCP (required) | coco (an MCP memory server) | mem0, any cross-tool rule store agents query over MCP |
| Skill / cheat-sheet mechanism | Claude Code skills | any reusable-prompt affordance |
| Forced-discipline mechanism | Claude Code hooks | any event automation |
Optional: versioning the Atlas itself
An Atlas works fine unversioned — it's just a folder of symlinks plus planning files. If you want a git history of its planning artifacts, there's a clean symlink/git recipe that versions the artifacts without touching the member repos. It stays optional. → method/07-optional-git-versioning.md
What this repo is not
- Not tied to any one agent, IDE, or memory-store product. The framework names roles, not products: a primary agent and a shared MCP memory store are required, but which tools fill them are yours to choose (coco, mem0, … are optional examples).
- Not a memory, and not a file-based "project memory." Unlike spec-driven-development approaches that accrete project knowledge into a pile of files, Atlas keeps the durable universal layer in a shared, agent-queryable memory store and keeps project-specifics lean (orientation + status + specs). It defines methodology and discipline — nothing more.
- Not a product description. How a system works lives in its own code and docs; Atlas is about orientation, decisions, status, and the flow of work.
- Not firm-specific. No firm- or product-specific programming patterns — only the tool-agnostic conventions any team can adopt.
Status. First real draft of the framework, rendered tool-agnostically from an operational practice. It is a writing/structuring artifact — nothing here is executable.