Architect
Start here
ReferenceNormative

How to read this

What to load, in what order, driven by the repository rather than the prompt — and what wins when two sources disagree.

This site is a strong prior, not gospel. It records what was decided and why. When the code in front of you disagrees, the code wins — and then the page gets fixed.

Precedence, when two sources disagree

RankSourceWhy it outranks the next
1A direct instruction in the conversationThe person is here and can be asked
2The repository's own CLAUDE.md / AGENTS.mdIt is scoped to this codebase and its author chose it deliberately
3The code itselfIt is what actually runs
4This siteCross-project knowledge, true until a repository says otherwise
5Default model behaviourThe thing this site exists to replace

A page that loses to the code is a page to correct, not a page to ignore silently. Say which one lost.

Read once, whatever the repository is

These five do not depend on the stack, and nothing below will trigger them. They are how you work, not what you are working on.

PageGoverns
Working agreementThe level of context assumed, and closing your own loose ends
Evidence and forecastEvery claim carries a pointer; every multi-step goal is priced first
ReportingThe work-report template, and the four modes that replace it
SecretsA secret's value never reaches the transcript, whatever its source
Git conventionsAttribution, and never pushing unasked

Then load on demand, driven by the repository

Do this once per session, before the first non-trivial edit. It costs two or three page reads, not a walk of the tree.

  1. Detect the stack from the repository, not from the prompt. Read the manifest — package.json, pom.xml / build.gradle, pyproject.toml, go.mod, Cargo.toml — plus the repository's own CLAUDE.md/AGENTS.md.
  2. Read the pages the detected stack maps to, using the table below. Two or three pages, never the whole site.
  3. Load more later, on demand. Touching a new area mid-task — tests, deploy, a second language — read that page then. Loading is lazy by design.
Signal in the repositoryRead
A new project, a new module, or any structural decisionMethod · Architecture
A client project starting, or a brief being writtenArtefacts
pom.xml / build.gradle with SpringJava · Spring Boot
Any .java without SpringJava
go.mod / go.workGo · Go services
astro in package.json or astro.config.*Astro
@tanstack/react-startTanStack Start · Feature structure
@tanstack/react-router without react-startVite · Feature structure
src/features/ in a TS/JS repositoryFeature structure
tailwindcss dependency or components.jsonTailwind and shadcn
Writing or fixing tests, any stackTesting
Anything a person will look at or touchLayout and spacing · Motion and polish
railway.json or a Railway projectRailway
Auditing, or running a hardened multi-agent promptPrompts

Rules while using it

  • Check the Verified date before quoting a version or an API. Older than about six months on a library detail — read the current documentation instead.
  • Say when a page drove a decision"per Architecture → Hexagonal: …" — so the page can be challenged rather than the conclusion.
  • No matching page? Say so in one line and proceed. Then write one if the work earned it.
  • Nothing here is client-specific. If a page names a client, a product or a repository path, it is in the wrong place: generalise it or delete it.

What earns a new page

Write when something was non-obvious and will recur: a decision that took real debate or a documentation dive, a trap that cost more than about fifteen minutes, a pattern proven on a second project.

Generalise it, say why and not just what, point at proof, and add it to the loading table above in the same edit — an unreachable page is a page nobody loads.

On this page