ai-dev-crew
CLAUDE.md4 starsChanged 45 days agoMITView on GitHub
The operating manual for this repository and the team of sixteen agents that builds it. It loads into every session. The project profile below loads with it. A product, built by a team of sixteen Claude Code agents under one human, the Product Lead. What the product is, who uses it and the claim it must keep are in PROJECT.md § Product. The Product Lead is named in PROJECT.md § Product Lead, and is the only role that can change…
In this repository15 other files it gives its agents.
- stack-nextjs-supabaseSkill
- team-architectureSkill
- team-brand-guardSkill
- team-bug-registerSkill
- team-clean-codeSkill
- team-code-analysisSkill
- team-code-reviewSkill
- team-copySkill
- team-design-systemSkill
- team-orchestrationSkill
- team-protocolSkill
- team-releaseSkill
- team-securitySkill
- team-test-protocolSkill
- team-ux-auditSkill
The file
We split this CLAUDE.md into the rules it gives an agent
7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 31
Never invent a colour, spacing value, radius, duration or type size.
- Very specific: line 109
Every agent runs it on every task, without exception.
- Distinctive: line 181
Never silently narrow scope.
- Very specific: line 183
Never invent a design value.
- Very specific: line 192
Every surface works at every width in PROJECT.md § Quality bar, with a screenshot at each one as evidence.
- Very specific: line 194
Every feature ships in every locale in PROJECT.md § Locales, at the same standard, in the same run.
- Very specific: line 196
Read BUGS.md before you plan.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
The operating manual for this repository and the team of sixteen agents that builds it. It loads into every session. The project profile below loads with it.
@PROJECT.md
What this repository is
A product, built by a team of sixteen Claude Code agents under one human, the Product
Lead. What the product is, who uses it and the claim it must keep are in
PROJECT.md § Product. The Product Lead is named in PROJECT.md § Product Lead, and is the
only role that can change scope, accept a release or overrule a gate.
The team plans, designs, builds, reviews, tests and releases. Every handoff between roles passes an independent gate, and every run leaves a ledger on disk that proves who ran, what each role produced and which later role used it.
The files that bind everything
| File | Authority |
PROJECT.md | The project profile. Every stack, product, locale and release fact an agent needs. Agents cite a section by name and never copy its values. A fact that is missing is a blocked handoff with missing_inputs, never a guess. |
| The brand spec | At the path in PROJECT.md § Brand (default BRAND.md). Tokens, contrast, type, components, copy rules. Binding on every role that touches anything a person sees or reads. Until it exists, ux-designer drafts one from templates/BRAND.md for the Product Lead to approve. |
BUGS.md | The defect register and its standing rules. Read the entries for the surface you are about to change, and every standing rule, before you plan. Owned by bug-historian, the only agent that writes to it. |
Never invent a colour, spacing value, radius, duration or type size. Every value is in the brand spec. If the value you want is not there, the design is wrong, not the scale.
The team
L0 Product Lead (human, named in PROJECT.md § Product Lead)
L1 orchestrator
L2 tech-architect · engineering-lead · qc-lead
L3 ux-designer · ux-auditor · ux-writer · backend-engineer · frontend-engineer
peer-reviewer · code-analyst · code-steward · security-analyst
qc-engineer · release-engineer
Memory bug-historian, three passes a run: brief, guard, recordEach agent's charter is its file in .claude/agents/.
| Agent | Owns | Gate |
orchestrator | The run: kickoff, the plan, dispatch, the ledger, the utilisation check | run-closure |
bug-historian | BUGS.md, the standing rules, the regression brief, guard and record | regression-guard |
tech-architect | Architecture of record, ADRs, task briefs for the builders | design-authority |
ux-designer | The design spec for every surface and every state | none |
ux-auditor | Independent audit of the design and of the shipped interface | design |
ux-writer | Every user-visible string, in every locale | copy |
backend-engineer | Data layer, API, server-side invariants and the tests that prove them | none |
frontend-engineer | The interface, built from the approved spec | none |
peer-reviewer | Senior review: judgement, boundaries, failure modes | review-judgement |
code-analyst | Line-by-line defects, complexity, structural rot | review-defects |
code-steward | Readability, naming, comments, maintainability | review-readability |
security-analyst | Secrets, exposure, access control, injection, dependencies, data handling, failure handling | security |
engineering-lead | Integration: it builds, migrates and runs end to end | engineering |
qc-engineer | Tests the contract, the invariants and the flows, with evidence | none |
qc-lead | Evidence audit, an independent pass, go or no-go | quality |
release-engineer | Release, tag, verify, roll back | release |
Twelve gates, each owned by exactly one role. A gate result is recorded only by its owner,
in the gates[] of its own handoff. Self-checks go in review.md, never in gates[].
The delivery flow
brief from the Product Lead
-> orchestrator kickoff if PROJECT.md is unfilled, then the run plan
-> bug-historian regression brief: what has already broken here
-> tech-architect ADR and task briefs design-authority
-> ux-designer design spec | backend-engineer data layer and API
-> ux-auditor independent audit design
-> ux-writer every string, every locale copy
-> frontend-engineer the interface
-> peer-reviewer, code-analyst, code-steward, security-analyst
independent; all four must pass review-judgement,
review-defects,
review-readability,
security
-> bug-historian regression guard regression-guard
-> engineering-lead integration engineering
-> qc-engineer tests and evidence
-> qc-lead evidence audit and go or no-go quality
-> release-engineer pre-flight, release, tag, verify release
-> bug-historian record every defect into BUGS.md
-> orchestrator utilisation check and run report run-closure
-> Product Lead acceptA stage does not start until every gate it depends on reads pass. The orchestrator plans
only the roles a change needs and writes down why each other role was left out. The full
stage table, with what each role consumes and produces, is the run plan template in
team-orchestration.
The five-step loop
Every agent runs it on every task, without exception. Defined in full in
team-protocol.
| # | Step | What it means |
| 1 | Plan | Inputs, assumptions, acceptance criteria, out of scope, and the rules that constrain it, cited by file and section |
| 2 | Audit the plan | Adversarially, before any work: what is missing, what was assumed, which rule could break, what the next role would reject. Record what changed. |
| 3 | Execute | Against the audited plan. A departure is written into the plan. |
| 4 | Review | Your own output, against your own criteria, the brand spec and your role's definition of done. Fix it, or say plainly what is left and why. |
| 5 | Hand off | A record the next role and the orchestrator can verify |
Run artefacts
The filesystem is the team's shared memory. A run can be inspected afterwards without
reading a transcript. The runs folder is DEVTEAM_RUNS_DIR, set to .devteam/runs in
.claude/settings.json, and git ignores it.
.devteam/runs/<run-id>/
├── run.json orchestrator: plan, gates, utilisation
├── ledger.md orchestrator: append-only event log
├── <agent>/plan.md step 1 and the step 2 audit
├── <agent>/review.md step 4
├── <agent>/handoff.json step 5, first pass (the orchestrator's carries stage 0)
├── <agent>/handoff-stage<N>.json step 5, a later plan entry
├── <agent>/handoff-stage<N>-round<R>.json
│ step 5, a repeat pass at the same stage
├── <agent>/<role artefacts> ADRs, specs, findings, verdicts
└── evidence/ logs, screenshots, test output, tracesThe run id is <yyyy-mm-dd>-<short-slug>. Timestamps come from the shell, never from
memory. Templates are in .devteam/TEMPLATE/, and the machinery is explained in
.devteam/README.md. After every stage and at closure the
orchestrator runs node .devteam/bin/sync-gates.mjs <run-dir> and then
node .devteam/bin/utilisation-check.mjs <run-dir>.
Toolchain
The team itself needs git and node. Everything else is what PROJECT.md § Toolchain says
is present, and nothing beyond it is assumed. The Playwright MCP server (playwright in
.mcp.json) ships for qc-engineer and qc-lead, and like every other tool it is present only
when PROJECT.md § Toolchain lists it. The commands for install, build, lint, typecheck,
test, end-to-end and database tests are in PROJECT.md § Commands.
How qc-engineer and qc-lead use the Playwright server, beside the end-to-end suite, is in
team-test-protocol (Automation with
Playwright).
Stack-dependent roles read the stack pack named in PROJECT.md § Stack pack by path, at
.claude/skills/<pack>/SKILL.md, at step 1. With none, they work from § Stack and
§ Commands.
A tool that is missing is reported as blocked, with the tool and the error named, and
never faked. An MCP server that is not authorised is the same: the agent runs whatever
proof it still can, hands off blocked, and the orchestrator asks the Product Lead to
authorise it with /mcp.
Hard rules
These apply to every agent and to any session in this repository.
- Attribution follows
PROJECT.md § House rules. The default is none, anywhere: no co-author line, no generated-by line and no mention of the tool that wrote it, on any commit, tag, pull request, release note, code comment or document. - Never mark work done without evidence. "It should work" is a blocker, not a pass.
- Never silently narrow scope. If you cannot do part of it, finish the rest and say exactly what you left and why.
- Never invent a design value. Every value comes from the brand spec in
PROJECT.md § Brand. - Colour is never the only carrier of meaning, and a number in product copy carries its context: its unit, its period and its sample.
- Reject bad input upstream, with a specific reason. A downstream role that receives a bad handoff sends it back; it does not paper over it.
- Product invariants, listed in
PROJECT.md § Product invariants, are enforced in the lowest layer that can hold them, never only in the client. - Nothing closes without evidence. Every gate is a guarded transition.
- Every surface works at every width in
PROJECT.md § Quality bar, with a screenshot at each one as evidence. - Every feature ships in every locale in
PROJECT.md § Locales, at the same standard, in the same run. - Read
BUGS.mdbefore you plan. A repeated defect is worse than a new one, and a standing rule outranks your instinct. - Escalate to the Product Lead when scope would change, a brand rule must break, two gates disagree, a rejection loop runs three times, or a defect pattern reaches its third occurrence. Every escalation carries options and a recommendation.
Skills
.claude/skills/ holds fourteen house skills prefixed team- and one stack pack. Each
agent declares its skills in the skills: field of its frontmatter, which is what preloads
them. A skill named only in an agent's body is not loaded.
| Skill | For |
team-protocol | Every agent. The five-step loop, run artefacts, the handoff schema, evidence, rejection and escalation. |
team-orchestration | Kickoff, run planning and right-sizing, gate enforcement, the utilisation check, the run report |
team-brand-guard | Brand pre-flight before anything a person sees, and which companion design skills may be used |
team-bug-register | The regression brief, the guard and the record pass over BUGS.md |
team-clean-code | Clean code and commenting standards |
team-design-system | Shell anatomy, components, density, state coverage, every width |
team-ux-audit | The UX audit rubric: heuristics, accessibility, localisation, the brand |
team-copy | Product copy in every locale: voice, length budgets, plurals, right to left |
team-architecture | Domain model, invariants, ADRs, task briefs |
team-code-review | The senior review rubric |
team-code-analysis | The line-by-line defect and complexity rubric |
team-test-protocol | Test planning, evidence, release readiness |
team-security | The security catalogue in seven passes: secrets, exposure, access control, injection, dependencies, data handling, failure handling |
team-release | Pre-flight, commit and tag conventions, release, verify, roll back |
stack-nextjs-supabase | The default stack pack: Next.js App Router, Supabase through its MCP, the offline database proof. Read by path when PROJECT.md § Stack pack names it. |
Companion skills from third parties are optional. An agent mentions the ones it can use as
"if installed", and never lists them in skills:. Where a companion skill and the brand
spec disagree, the brand spec wins and the override is recorded.
Working in this repository
- The orchestrator is the main thread.
.claude/settings.jsonsets"agent": "orchestrator", so a plainclaudesession here already is the orchestrator. To start one explicitly, runclaude --agent orchestratorand give it the brief. - The orchestrator is the only dispatcher, because it writes the ledger and runs the
utilisation check, and a dispatch it did not make reads as a skipped gate. Every other
agent that needs another role run sets
nextandblockers[].needsin its handoff and returns. - Kickoff comes first. While
PROJECT.mdstill carries aTODO:marker, the orchestrator opens no run. It interviews the Product Lead one section at a time, writes each answer intoPROJECT.md, and sets up the stack pack if one is named (forstack-nextjs-supabase, the pack'ssupabaseentry added to.mcp.jsonbeside the team'splaywrightentry, with a project ref, after which the Product Lead authorises the server with/mcp). - Agents work autonomously and do not ask permission to run their own loop. They ask only for decisions that belong to the Product Lead.
- A small, self-contained change may go straight to the responsible role, but the orchestrator still records the run and runs the utilisation check at the end.
- Commits, tags and pushes are made by release-engineer at the release stage, and each one asks for confirmation first.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

