# Groundwork > How a product goes from a pile of requirements to screens that match them. > One model of what the product is, plus checks that fail when the code disagrees > with it, plus a written record of who agreed what. Release b155517c3eaff44615027b9f0d74299d7138c775. Every plan names the release it came from and hashes every file it asks for, and asks you to leave a manifest saying what you installed. You are probably here because someone asked you to set up a repo, or to build a screen. Fetch the plan you need and follow it. Everything below is plain text or JSON. Nothing needs a browser. ## Setting up a repo Tiers are cumulative: tier 3 includes 1 and 2. Pick by what the team will be asked to account for later, not by how much code there is. - [Tier 1: Prototypes & landing pages](https://ntent.app/r/tier/1.json) : 1 person, weeks. Asked: Nothing - [Tier 2: A product with a fixed scope](https://ntent.app/r/tier/2.json) : 1 to 3 people, months. Asked: "Are we on track?" - [Tier 3: Apps with a shared design system](https://ntent.app/r/tier/3.json) : 3 to 8 people, a year or more. Asked: "Who agreed to that?" - [Tier 4: Products built for the long term](https://ntent.app/r/tier/4.json) : 4+ people, years. Asked: "Why is it like this?" Some things are true of a product whatever its tier, and each adds steps to any tier plan. Append `?with=` and a comma-separated list of these to a plan URL: - ai : A model’s output reaches a user. Adds eval-types, eval-judge, eval-report, eval-harness. - signin : People sign in, and what they see depends on who they are. Adds contract, access. - paid : Some of it is paid for. Adds contract, entitlements. - locales : It ships in more than one language. Adds check-locale-keys. For example https://ntent.app/r/tier/1.json?with=ai is a spike whose model output reaches a user. ## Doing a job - [Agree on the product model](https://ntent.app/r/task/agree-one-model.json) : Bring requirements and call notes into one agreed source. - [Create the screen list](https://ntent.app/r/task/screens-from-the-model.json) : Turn the agreed model into a list of screens and journeys. - [Build a screen](https://ntent.app/r/task/build-a-screen.json) : Build a screen from the agreed fields, stages, and rules. - [Handle a change during the build](https://ntent.app/r/task/model-or-code.json) : Decide where a change belongs: the model, the design system, or the code. - [Add an automated check](https://ntent.app/r/task/add-a-check.json) : Turn an agreed rule into a check the whole team can run. - [Report project progress](https://ntent.app/r/task/check-progress.json) : Prepare a clear progress update with coverage and named gaps. ## Everything, one by one - [Full registry](https://ntent.app/r/registry.json) : every artefact with metadata, a content URL and a sha256 - Raw content for any of them: https://ntent.app/r/f/ - constitution (tier 1, file) : Shared project instructions - symlink-claude (tier 1, command) : Shared instructions for coding agents - pre-commit (tier 1, file) : Pre-commit checks - hooks-path (tier 1, snippet) : Git hook setup - check-env (tier 1, file) : Environment variable checks - decisions (tier 1, snippet) : Decision log - eslint-rules (tier 2, file) : Design convention lint rules - check-probes (tier 2, file) : Lint rule probes - rules-probe (tier 2, file) : Probe fixtures - waivers (tier 2, file) : Reviewed rule exceptions - check-tokens (tier 2, file) : Design token checks - check-api-routes (tier 2, file) : API route checks - verify-fixtures (tier 2, file) : Real data validation - error-to-surface (tier 2, file) : Message placement rules - error-to-surface-test (tier 2, file) : Message rule tests - access (tier 2, snippet) : Access rules - contract (tier 2, file) : Product intent model - check-contract-coverage (tier 2, file) : Contract coverage - check-contract-coverage-test (tier 2, file) : Contract coverage tests - doctor (tier 2, file) : Project health check - session-status (tier 2, file) : Session status report - path-scoped-rules (tier 3, file) : Rules by file path - check-locale-keys (tier 3, file) : Translation key checks - check-stray-components (tier 3, file) : Shared component checks - entitlements (tier 3, snippet) : Product entitlements - source-policy (tier 3, snippet) : Source priority - rule-provenance (tier 3, snippet) : Rule approvals - post-commit (tier 4, file) : Automatic build log - build-log-queue (tier 4, snippet) : Build log queue - build-log-ignore (tier 4, snippet) : Keep the queue out of git - generated-header (tier 4, snippet) : Generated file markers - eval-types (with ai, file) : Evaluation thresholds - eval-report (with ai, file) : Evaluation scoring and report - eval-harness (with ai, file) : Model output evaluation tests - eval-judge (with ai, file) : Evaluation judge prompts - import-boundaries (tier 3, snippet) : Import boundaries - graduating-warning (tier 4, snippet) : Gradual rule rollout - session-state (tier 4, snippet) : Session handoff - research-protocol (tier 4, snippet) : Research instructions - prompt-actor-responsibilities (tier 2, prompt) : Find out what one role actually does - prompt-entity-stages (tier 2, prompt) : Get the stages and what blocks each one - prompt-screen-inventory (tier 2, prompt) : Turn responsibilities into a screen list - prompt-map-journey (tier 2, prompt) : Turn a journey into a screen sequence - prompt-build-screen (tier 2, prompt) : Build a screen - prompt-refine-screen (tier 2, prompt) : Refine what came back - prompt-validate-screen (tier 2, prompt) : Check a screen against the model - prompt-reuse-component (tier 2, prompt) : Stop the assistant rebuilding what exists - prompt-open-questions (tier 2, prompt) : Find what is not decided yet - prompt-coverage (tier 2, prompt) : Ask where the gaps are ## Rules that apply to all of it 1. Write files verbatim. Do not reformat, rename or improve them. The one exception is a step carrying a `customise` line, which names the edits that step expects and is the only licence to change a file. 2. A check is a gate only if it can be cleared offline from a fresh clone. Anything needing a token or the network prints and does not block. 3. Never report a step as done without running its verify line. For a gate, that means having watched its probe turn it red first — the red gate. 4. If the repo already has a working version of something, leave it and say so. 5. Hash what you fetch against the step that asked for it. A mismatch means the plan is stale: fetch it again, do not write.