Appearance
One briefing file — AGENT_SYSTEM.md — synthesized once per plan, read by every agent first. Enforced by a hook. One source of truth; one orientation cost; one consistent baseline.
Pattern
Shared Briefing Document
The failure mode
Three agents. Same codebase. Three different mental models.
Each agent rediscovers independentlyN paraphrases
Agent Agreps →"auth is the core layer"
Agent Bgreps →"data is the core layer"
Agent Cgreps →"invents its own convention"
Conventions drift within a single plan. Same source, three paraphrases, three incompatible outputs. Agent C's code doesn't integrate with Agent A's.
Shared briefing, read first1 synthesis
Agent Areads →AGENT_SYSTEM.md
Agent Breads →AGENT_SYSTEM.md
Agent Creads →AGENT_SYSTEM.md
One baseline. All agents start aligned. Paraphrase is impossible when everyone reads the same bytes. Convention drift can't happen mid-plan.
How it's built
Synthesized once. Written before any agent spawns.
The planner reads the raw sources and writes one consolidated briefing.
Raw sources
05-tdd.output.md
CLAUDE.md
ARCHITECTURE.md
CONSTRAINTS.md
PATTERNS.md
→
👤
PLANNER
→
📘
AGENT_SYSTEM.md
one file · one plan
Raw sources are authored for humans, spread across files. The briefing is the distilled agent-consumable version, written once per plan.
The hook that makes it mandatory
Agents can't skip it. Write/Edit is blocked until it's read.
Reading the briefing isn't a convention. It's a gate.
Agent spawn
receives task with requiredReads[0] = AGENT_SYSTEM.md
Agent tries
Edit("src/auth.py") → BLOCKED by context-gate.sh
Agent reads
Read("AGENT_SYSTEM.md") → logged
Agent tries
Edit("src/auth.py") → ALLOWED
PreToolUse:Write/Edit — the gate fires before any write, blocks until the briefing is logged as read. Not a suggestion. Not documented best practice. A hook.
What the briefing contains
Six required sections. Missing one = rejected.
AGENT_SYSTEM.md
agent-system-gate.sh
✓Project Overview
What is being built and why.
✓Architecture
Key files, module boundaries, entry points. Enough to orient without opening files.
✓Conventions
Naming patterns, file structure, code style in use.
✓Constraints
What must never change, what's off-limits.
✓Vocabulary
Project-specific terms, abbreviations, domain concepts.
✓Current State
What phase we're in, what's complete, what's in progress.
Missing section → agent-system-gate.sh rejects the write. Structural validation, not prose review.
Why these sections
They cover the Core Four axes of any agent conversation.
Context-pollution happens when any one of the four is left implicit. AGENT_SYSTEM.md makes all four explicit before the agent starts.
CONTEXT
which files to read; what not to change
MODEL
which Claude variant; which thinking mode
PROMPT
role, constraints, expected output format
TOOLS
which tools available; any restrictions
The irreducible axes of any agent conversation. If the briefing under-specifies one of them, agents improvise — and the improvisation is where drift starts.
Don't confuse with
Briefing vs Task description.
Scope
Shared baseline — true across ALL tasks
One task — true for this task only
Contents
Architecture, conventions, constraints
Which files, which symbols, acceptance criteria
Lifetime
Whole plan
One task run
Function
Orients the agent
Directs the agent
Agents read both. Neither substitutes for the other — orientation without direction is ungrounded; direction without orientation invents its own context.
The discipline
Orientation is a shared resource, not private work.
N agents rediscovering the same architecture is N paraphrases and N inconsistencies. One briefing, written once, consumed N times, enforced by a hook — and the plan produces coherent output instead of a composite of conflicting mental models.