diff --git a/agents/index.html b/agents/index.html
new file mode 100644
index 0000000..ee4d1f3
--- /dev/null
+++ b/agents/index.html
@@ -0,0 +1 @@
+
AI For Dummies — Agents and treesSubagent workflow
One branch
per hand.
Agents work when roles, files, and evidence are bounded. A worktree gives each worker its own checkout while the orchestrator protects intent.
The tree
Split at
the seam.
MAIN / ORCHESTRATOR├── agent/ui → components + visual states · ├── agent/tests → acceptance + regressions · └── agent/docs → guide + examples · merge after each leaf returns a diff and evidence
FRAMEOrchestrator
Owns scope, task graph, boundaries, and integration.
HAND OFFWorker
Owns one coherent slice and one worktree.
PROVEVerifier
Re-runs gates and reports remaining gaps.
Handoff
Context that
can travel.
01BriefGoal, owned files, dependencies, non-goals, acceptance.
02IsolationOne branch and worktree per independent change.
03EvidenceCommands, result, changed files, screenshots, gaps.
diff --git a/chapters.css b/chapters.css
new file mode 100644
index 0000000..a3f95a0
--- /dev/null
+++ b/chapters.css
@@ -0,0 +1 @@
+:root{--ink:#122534;--paper:#f6f3ed;--line:#d0d5d2;--muted:#65717a;--blue:#215675;--gold:#ebbf58;--red:#a7483f}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:16px/1.6 Arial,sans-serif}main{max-width:1400px;margin:auto;padding:0 5vw}.top{display:flex;justify-content:space-between;gap:20px;padding:24px 0;border-bottom:1px solid var(--line);font:700 11px monospace;letter-spacing:.08em;text-transform:uppercase}.top a{color:var(--ink);text-decoration:none}.hero{padding:100px 0 70px;max-width:950px}.eyebrow{color:var(--red);font:700 11px monospace;letter-spacing:.12em;text-transform:uppercase}.hero h1{margin:16px 0;font-size:clamp(52px,9vw,126px);line-height:.9;letter-spacing:-.07em}.hero h1 em,h2 em{font:400 .9em Georgia,serif;color:var(--red)}.hero p{max-width:680px;color:var(--muted);font-size:20px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:100px}.card{min-height:220px;padding:28px;background:var(--paper)}.card b{color:var(--red);font:24px monospace}.card h2{margin:18px 0 8px;font-size:25px;letter-spacing:-.04em}.card p{margin:0 0 14px;color:var(--muted)}.card a{color:var(--blue);font-weight:700}.model,.pipeline,.practice{display:grid;grid-template-columns:1fr 2fr;gap:50px;padding:80px 0;border-top:1px solid var(--line)}.model h2,.pipeline h2,.practice h2{margin:0;font-size:clamp(34px,5vw,70px);line-height:.95;letter-spacing:-.06em}.panel{padding:28px;background:var(--ink);color:var(--paper)}.panel strong{display:block;color:var(--gold);font:700 12px monospace;letter-spacing:.1em}.panel code{display:block;margin-top:18px;color:#d6e1e4;font:14px/1.8 ui-monospace,monospace;white-space:pre-wrap}.steps{display:grid;gap:1px;background:var(--line)}.steps article{display:grid;grid-template-columns:70px 1fr;gap:20px;padding:20px;background:var(--paper)}.steps b{color:var(--red);font:20px monospace}.steps strong{display:block}.steps span{color:var(--muted)}.links{display:flex;flex-wrap:wrap;gap:10px;margin:28px 0 70px}.links a{padding:10px 13px;color:var(--ink);border:1px solid var(--ink);text-decoration:none;font:11px monospace;text-transform:uppercase}.links a:hover{color:var(--paper);background:var(--ink)}footer{padding:30px 0 70px;color:var(--muted);font-size:13px}@media(max-width:800px){.grid,.model,.pipeline,.practice{grid-template-columns:1fr}.hero{padding:65px 0 45px}.model,.pipeline,.practice{gap:25px;padding:55px 0}}@media(max-width:520px){main{padding:0 16px}.top span{display:none}.hero h1{font-size:56px}.hero p{font-size:17px}.card{min-height:0}.steps article{grid-template-columns:45px 1fr}}
diff --git a/index.html b/index.html
index 143efa1..32b9dd0 100644
--- a/index.html
+++ b/index.html
@@ -31,6 +31,6 @@
pnpm typecheck; echo "typecheck=$?"02 · BEHAVIORUnit and contract
Tests that repeat. Run before claiming done.
pnpm test; echo "test=$?"
cd services/api && go test ./...03 · INTEGRATIONReal UI and API
Drive the actual UI, API, or browser. Slower and flakier — only this catches mobile overflow and a missing 404.
pnpm check:ui; echo "ui=$?"
TURBO_FORCE=true pnpm e2eFOUR WAYS A GREEN REPORT IS FALSE1Pipe a gatetail, grep, or head hide the real exit code — a pipeline returns the last command's status.
2Swallow a rejectionA silent .catch(() => {}) hides a panic, an upstream limit, or a partial failure.
3Trust the cacheTurbo caches results. A gate that "passes" may not have run — use TURBO_FORCE=true.
4Skip the third layerLint and unit can both be green while the page breaks on mobile and the API never returns 404.
RUN IT YOURSELF · two labs, under 10 minutes each
-
-
+
+