The Team That Wrote It
The actual configuration from this repo: the agents, skills, and conventions that wrote the article. Shown as-is.
The Claude Code configuration for brandondohman-dot-com: the agents, skills, and conventions that produce copy in Brandon's voice and ship it as on-brand pages in the Next.js app.
Everything here is plain markdown. Claude Code reads it on session start: skills/ load on demand, agents/ are spawnable subagents, settings.local.json holds project settings. State the system reads and writes lives outside this directory, in product-playbook/ and voice-docs/.
Design rules
The system is built on four rules. Adding or changing anything should preserve them.
- Generator ≠ reviewer. Whatever produces work never approves it.
design-leadbuilds;design-criticreviews. A draft is written in the main thread; four separate critics check it. Reviewers return findings and never edit. - The standard is a file. "Good" is defined in
brandon-voice(voice) andbrandon-brand(design). The same file feeds both the drafting and the review, so improving the standard improves both ends at once. - State lives on disk. Trackers, blueprints, the corpus map, the design brief. A context reset loses the conversation, not the work. Read the relevant files at the start of work; keep them current.
- Ground in real material. No invented stories, quotes, or numbers.
voice-researchandcorpus-mapexist so every claim traces to a real source.
Two operational habits follow from these:
- Fix the check, not just the output. When bad work passes a reviewer, the standard gets the fix, and the prior version is snapshotted in
method-archive/. - Conserve the main thread. High-volume, low-residue work (reading the corpus, screenshotting routes) goes to a subagent that returns a verdict. Decisions and drafting stay in the main thread.
Pipelines
A human signs off between phases. No command chains the full pipeline.
Writing:
/voice-pass → draft → story-critic + voice-critic + clarity-critic + naive-reader → review → approved copy
Building:
/design → locked direction → /code (design-lead builds → design-critic reviews, loop ≤3) → /deploy → live
Corpus maintenance (supports writing):
/corpus-map → corpus-cataloger (parallel, full-read) → voice-docs/corpus-map.md
Skills (skills/)
Loaded on demand. Some are standards, some are slash-command workflows, some both.
| Skill | Type | Purpose |
|---|---|---|
brandon-voice | standard | Voice rubric: stance, signature moves, cadence, hard rules (zero em-dash, zero "delve", lead with the claim, second-person). Feeds drafting and the voice review. |
brandon-brand | standard | Fixed neobrutalism design language: palette, type, geometry, shadows, primitives, don'ts. Auto-loads on design/build/review. |
voice-pass | workflow | Per-page voice pass: diagnose, lock objective, prep interview brief, interview, draft, review. Interactive, page-by-page. |
design | workflow | Lock a visual direction before code (intake a Brandon design or have design-lead propose options). |
code | workflow | Build a page/component from a locked design + approved copy, then run the design-critic loop. |
deploy | workflow | Preview to Vercel, verify the served route, production on explicit go. |
corpus-map | workflow | Build/re-sync voice-docs/corpus-map.md. disable-model-invocation: true (run it explicitly). |
cc-architect | meta | Build and improve skills, agents, and commands. |
agent-browser | tool | Browser automation: navigation, DOM, console, screenshots. Used by the build reviewers. |
Agents (agents/)
Each runs in its own context window and returns a verdict, not its raw reading. Critics review only; they never edit.
| Agent | Role | Output | Model / effort |
|---|---|---|---|
voice-research | Reads the corpus, returns a sourced interview brief (real stories, lines, numbers, guided questions). | Interview brief | inherit / high |
voice-critic | Holds a draft against brandon-voice. Hard-rule breaks, fabrication, AI-tells. | pass/fail + located fixes | inherit / high |
story-critic | Judges structure: coherence, beats, unresolved referents, closers, over/under-told sections. | pass/fail + located fixes | inherit / high |
clarity-critic | Reads cold as a sharp outsider: dead analogies, fake-concrete pith, fancy-where-plain. | lands/doesn't + findings | inherit / high |
naive-reader | Reads as a curious beginner: undefined terms, ambiguous input-vs-output, skipped steps. | blocking + curious questions | inherit / high |
corpus-cataloger | Reads assigned corpus files in full, returns structured catalog entries. Never invents. | catalog entries | opus / high |
design-lead | Builds pages/components in app/ within the fixed brand. The only agent that writes site code. | code + decisions note | inherit / xhigh |
design-critic | Screenshots the rendered page, scores against brandon-brand. Never edits or deploys. | { score, threshold_met, violations[] } | inherit / xhigh |
Writing-team mapping: researcher = voice-research; voice editor = voice-critic; structure editor = story-critic; plain readers = clarity-critic (sharp outsider) + naive-reader (beginner). All four review seats are independent of the writer and of each other.
Build loop: design-lead builds → page is served → design-critic scores it. If threshold_met is false or there are blocker/major violations, the fix list goes back. Capped at 3 cycles. Recurring findings get folded into brandon-brand or app/globals.css.
State on disk (read/written, not in .claude/)
product-playbook/:
voice-pass-tracker.md: per-page voice + story-critic status; which copy is canonical.part-NN-blueprint.md: locked scope for a playbook section, set before drafting.design-brief.md: locked design direction feeding/designinto/code.ideas.md: candidate-page backlog.
voice-docs/:
corpus-map.md: catalog of Brandon's real material. Source manifest, topic index, real-stories ledger (with where-used), claims/stats ledger (with verification status). Built by/corpus-map; makes grounding a lookup, and surfaces reuse of scarce real stories.
method-archive/
Dated snapshots of skill files taken before a change to the method, each with a README stating what changed and why. Serves as the revert point and the baseline arm for A/B-testing a rubric change before it's kept.
Example: 2026-06-09-stay-with-the-reader/ holds the voice rubric before a fix for drafts that passed every critic and still read as AI.
Extending the system
Build new skills/agents/commands with cc-architect. When adding anything, hold the four design rules: generator separate from reviewer, standard in a file, state on disk, grounded in real material. Keep agent scope to a single role and have it return a verdict, not a dump.