A governance starter kit for AI-agent-driven projects.
The four-file governance chain (PRODUCT, DESIGN, AGENTS, GLOSSARY) plus the hooks works for any project type and any design register. The root templates ship one example combo (a brand landing page in the cinema register); browse registers/ and project-types/ for other combos and adapt.
This kit is not a generator. It is what disciplines a project that uses Claude Code (or Codex, or Cursor, or Copilot CLI) to build, redesign, or maintain a real surface.
Three months of building real surfaces with AI agents surfaced one consistent failure: the project passes every individual rule in the spec and still feels generic. A landing page collapses back to gradient hero and three-card feature row. A web app collapses back to shadcn defaults with no brand discipline. A CLI collapses back to the framework's auto-generated --help output. A design system collapses back to unstyled-Radix-with-no-tokens.
The cause: rules without enforcement. The fix: a chain of governance files that work together, each carrying a specific job, plus a literal yes/no checklist the agent runs at the end of every pass.
The chain answers four questions an agent needs to ground its work:
| File | The question it answers |
|---|---|
PRODUCT.md |
Who is this for, and what must it not look or sound like? |
DESIGN.md |
What are the visual tokens, motion patterns, and self-review gate? |
AGENTS.md |
How do I run, build, deploy, and what are my boundaries? |
GLOSSARY.md |
What are the canonical names for products, formats, audiences, and CTAs? |
Plus two Claude Code hooks that fire context-budget reminders so the session-summary workflow does not run out of room.
The kit assembles the chain. Each individual file pattern exists somewhere on GitHub. The integration around governing AI-agent-driven projects across multiple project types and registers does not.
The kit ships defaults for one example combo at the root. Real projects pick a different combo by browsing two sets of profiles.
registers/ ships five opinionated profiles. Each describes voice, color strategy, typography, motion register, surface treatment, anti-references, and a "when to choose" guide.
| Register | Aesthetic |
|---|---|
cinema.md (root default) |
Golden amber on dark canvas, oversize display serif italic, 3D heroes, Lenis-smoothed scroll, GSAP scrub |
editorial.md |
Magazine-grade typography, ruled separators, mono microlabels, restrained color, plenty of white space |
brutalist.md |
High-contrast geometric blocks, mono-driven typography, raw HTML feel, deliberate ugliness, hard edges |
minimal.md |
Linear/Notion-style restraint, flat surfaces, generous spacing, single accent, body-font-led |
terminal.md |
Terminal-native dark, monospace dominance, ASCII art, command-line aesthetic |
See docs/choosing-a-register.md for the decision guide.
project-types/ ships four opinionated profiles. Each describes the typical shape, stack defaults, core surfaces, AGENTS.md variant specifics, and self-review gate adjustments.
| Project type | Shape |
|---|---|
landing-page.md (root default) |
Single brand surface, marketing routes, no auth, Vercel auto-deploy |
web-app.md |
Multi-page SaaS / dashboard with auth + database, more aggressive boundaries |
cli-tool.md |
Terminal-distributed package, semver discipline, cross-platform CI |
design-system.md |
Component library or design tokens, accessibility, visual regression, Changesets |
See docs/choosing-a-project-type.md for the decision guide.
The two axes are independent. A web-app can ship in any of the five registers; a CLI tool usually ships in terminal but can ship in minimal if the buyer is non-technical. Pick the project type first (it sets the boundaries and verification chain), then pick the register (it sets the visual language).
claude-project-kit/
├── README.md this file
├── template-README.md the post-fork README to install at your project root
├── LICENSE MIT
│
├── CLAUDE.md one-liner @AGENTS.md (the doorbell pattern)
├── AGENTS.md build, structure, style, testing, git, boundaries, definition of done
│ (the landing-page variant; see project-types/ for others)
├── PRODUCT.md register, users, brand personality, anti-references, design principles
│ (project-type-agnostic schema; example values)
├── DESIGN.md OKLCH tokens, typography, motion canon, components, self-review gate
│ (the cinema register; see registers/ for others)
├── GLOSSARY.md domain vocabulary lock for product, formats, audiences, CTAs, voice
│
├── registers/ five design register profiles
│ ├── cinema.md
│ ├── editorial.md
│ ├── brutalist.md
│ ├── minimal.md
│ └── terminal.md
│
├── project-types/ four project-type profiles
│ ├── landing-page.md
│ ├── web-app.md
│ ├── cli-tool.md
│ └── design-system.md
│
├── .claude/
│ └── settings.json.example autoCompactWindow=850000 + hooks wiring (copy to ~/.claude/)
│
├── hooks/
│ ├── graphify-precompact.sh macOS notification before context compacts
│ └── graphify-stop.sh in-terminal reminder on session end
│
└── docs/
├── self-review-gate.md the 10-item checklist explained per item
├── anti-references-pattern.md why naming bad brands steers generation
├── context-budget-tuning.md the math behind autoCompactWindow=850000
├── choosing-a-register.md decision guide across the five registers
└── choosing-a-project-type.md decision guide across the four project types
Every governance file in the kit ships as a populated template, anchored to a fictional brand called Lumen Studio. Customize the placeholders for your brand before using.
gh repo clone ndreddy007-sudo/claude-project-kit your-project
cd your-projectOr copy the files into an existing project:
cp /path/to/claude-project-kit/{CLAUDE,AGENTS,PRODUCT,DESIGN,GLOSSARY}.md ./
cp -r /path/to/claude-project-kit/{docs,hooks,.claude,registers,project-types} ./
mv template-README.md README.mdRead docs/choosing-a-project-type.md and pick from landing-page, web-app, cli-tool, design-system. Then read docs/choosing-a-register.md and pick from cinema, editorial, brutalist, minimal, terminal.
The root templates ship the landing-page-plus-cinema combo. If your combo differs:
- Open the matching
registers/<chosen>.mdand adapt yourDESIGN.mdtoken block, typography, motion, and surface treatment to match. - Open the matching
project-types/<chosen>.mdand adapt yourAGENTS.mdbuild commands, boundaries, testing, and definition of done to match.
Replace Lumen Studio and the example placeholders throughout PRODUCT.md, DESIGN.md, and GLOSSARY.md. The structure stays; the content is yours.
The order of customization matters:
PRODUCT.mdfirst. Your register, users, brand personality, anti-references, design principles. Decide what the brand is and is not before deciding how it looks.DESIGN.mdsecond. Your tokens, typography, motion, components. Pull the values from the chosenregisters/<chosen>.md. The self-review gate at the bottom stays as-is; that is the kit's enforcement layer.GLOSSARY.mdthird. Your product name, format names, audience names, CTA verbs.AGENTS.mdlast. Pull the section contents from the chosenproject-types/<chosen>.md. Your build commands, project structure, boundaries.
If you run a vault-discipline workflow (an Obsidian vault, a session running-note in 00_inbox/, a periodic graphify or wiki-compile pass), the hooks fire reminders so the wrap workflow does not run out of context.
# Set your inbox path
export VAULT_INBOX="$HOME/path/to/your/vault/inbox"
# Copy the example settings, then edit absolute paths
cp .claude/settings.json.example ~/.claude/settings.json
$EDITOR ~/.claude/settings.jsonUpdate the command paths in the hooks block to the absolute path where you cloned this kit. See docs/context-budget-tuning.md for the threshold math.
When you start a pass:
- Open
PRODUCT.mdand confirm the brief. - Open
DESIGN.mdand read the relevant sections. - Author the change.
- Run the self-review gate in
DESIGN.md(the 10-item checklist, adapted per project type). - Fix any "no" answers.
- Rerun the gate.
- Ship only when all 10 items pass.
The gate adds about 10 minutes per pass and prevents the AI failure modes per project type: gradient hero on a landing page, shadcn-default on a web-app dashboard, auto-generated --help on a CLI, unstyled-Radix-with-no-tokens on a design system. See docs/self-review-gate.md for each item explained.
| Existing pattern | What this kit does instead |
|---|---|
| Single-file kits (only AGENTS.md or only DESIGN.md) | Four-file governance chain, each owning a specific job |
| General-purpose Claude Code starters | Multiple project types (landing, web-app, cli, design system), each with its own boundaries and verification chain |
| AI-generated templates with no register choice | Five opinionated registers (cinema, editorial, brutalist, minimal, terminal) with anti-references per register |
| Hook recipes scattered across blog posts | Hooks integrated with the chain, with documented autoCompactWindow=850000 rationale |
.cursorrules plus copilot-instructions.md plus CLAUDE.md |
One-line @AGENTS.md doorbell so every agent reads the same rules, no duplication |
| Rules without enforcement | A 10-item self-review gate the agent runs as a literal yes/no checklist before shipping |
The integration is the value. Each piece is replaceable; the assembled chain is what stops a project from collapsing back to template.
The docs/ folder explains the why, not just the how. Five explainers:
docs/self-review-gate.mdwalks through every one of the 10 items: what it asks, what failure looks like, what passes look like, and how to verify it programmatically when possible.docs/anti-references-pattern.mdexplains why naming bad brands steers generation more than naming good ones, and how to write anti-references that actually constrain the agent's output.docs/context-budget-tuning.mdshows the math behind the 850k threshold and how to tune for your own session profile.docs/choosing-a-register.mdis the decision guide across the five registers, with an interview, a project-type-to-register table, and cross-cutting anti-references.docs/choosing-a-project-type.mdis the decision guide across the four project types, with edge cases, the AGENTS.md diff table, and the boundaries that change per type.
- Not a generator. It does not produce code from a prompt; it disciplines a project that does.
- Not a Next.js boilerplate. The landing-page variant assumes Next.js + Tailwind v4; the web-app, cli-tool, and design-system variants ship their own stack defaults. None of the variants ships the stack itself.
- Not opinionated on every choice. The kit ships a default combo at root (landing-page plus cinema); five registers and four project types are alternatives, each opinionated within itself, none mandatory.
- Not Cursor-specific or Codex-specific. The doorbell pattern (
CLAUDE.mdis@AGENTS.md) means every agent that readsAGENTS.mdnatively (Codex, Cursor, Copilot CLI, Claude Code) gets the same rules.
The kit assembles patterns from several public sources:
@anthropic/impeccableClaude Code skill (the canonical PRODUCT.md schema, design-register definitions, the four color strategies)@google/design.mdopen spec (the YAML front-matter token format)- GitHub's 2,500-repo AGENTS.md analysis (the six-section structure)
paperclipai/paperclip(the read-this-first pointer pattern)- VoltAgent/awesome-design-md (canonical DESIGN.md examples and naming conventions)
- The cinema register vocabulary draws on Linear, Klim Type Foundry, Vercel as anti-template aesthetic anchors
- The terminal register vocabulary draws on Fly, Railway, Supabase developer pages
- The editorial register vocabulary draws on Klim, Are.na, Pentagram
If you ship something like this kit, please link back. If a pattern in this kit improves, please open a PR.
MIT. Use it, fork it, ship with it. Attribution is appreciated but not required.