* docs(dialog-pattern): add generic entity-dialog spec Introduceert docs/patterns/dialog.md als bron-of-truth voor elke create/edit/detail-dialog in Scrum4Me, ongeacht het achterliggende dataobject. Bevat 14 secties: uitgangspunten, stack, component- architectuur, layout, validatie, drielaagse demo-policy, submission, dialog-gedrag, theming, footer, triggers/URL-state, per-entiteit profile-template, out-of-scope, en een verificatie-checklist. Registreert het patroon in CLAUDE.md "Implementatiepatronen"-tabel zodat Claude (en mensen) de spec verplicht raadplegen voor elke nieuwe dialog. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(dialog-pattern): convert task spec + add pbi/story entity-profiles Reduceert docs/scrum4me-task-dialog.md van 507 naar ~140 regels: alle gedeelde regels verhuisd naar docs/patterns/dialog.md, dit document bevat nu alleen Task-specifieke velden, URL-pattern, status-veld, server actions, triggers en bewuste out-of-scope-keuzes. Voegt twee nieuwe entity-profielen toe voor bestaande dialogen: - docs/scrum4me-pbi-dialog.md (PbiDialog: state-based, code+title-rij, PbiStatusSelect, geen delete in v1) - docs/scrum4me-story-dialog.md (StoryDialog: state-based, header met status/priority badges, inline activity-log, demo-readonly-fallback, inline-delete-confirm i.p.v. AlertDialog) Beide profielen documenteren expliciet de "Bekende gaps t.o.v. generieke spec" zodat opvolgende PR's de afwijkingen kunnen rechtzetten of bewust kunnen accorderen. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Added pdevelopment docs * docs(plans): add docs-restructure plan for AI-optimized lookup Audit of existing 39 doc files (~10.700 lines) and a phased restructure proposal aimed at minimising the tokens an AI agent has to read to find the right reference. Captures resolved decisions on language (English), ADR template (Nygard default with MADR escape-hatch), index generator (node script), and folder taxonomy. Proposal status — fase 1 to follow. * docs(adr): add ADR scaffolding (templates, README, meta-ADR) Set up docs/adr/ as the canonical home for architecture decisions: - templates/nygard.md — default four-section format (Status, Context, Decision, Consequences) for one-way-door decisions. - templates/madr.md — MADR v4 with YAML front-matter and explicit Considered Options for decisions where rejected alternatives matter. - README.md — naming convention (NNNN-kebab-case), template-selection guidance (Nygard default; MADR for auth, queue mechanics, agent integration), status lifecycle, and ADR roster. - 0000-record-architecture-decisions.md — meta-ADR establishing the practice itself, in Nygard format. Backfilling existing implicit decisions (base-ui-over-radix, float sort_order, demo-user three-layer policy, etc.) is fase 6 of the docs-restructure plan. * feat(docs): add docs index generator + initial INDEX.md scripts/generate-docs-index.mjs walks docs/**/*.md, parses YAML front-matter (or first H1 fallback) and a Nygard-style ## Status section, then writes docs/INDEX.md with grouped tables for ADRs, Specs, Plans (with archive subsection), Patterns, and Other. Pure Node 20 (no external deps); idempotent — running it twice produces byte-identical output. Excludes adr/templates/, the ADR README, INDEX.md itself, and any *_*.md sidecar file. Wire-up: - package.json: docs:index → node scripts/generate-docs-index.mjs Initial run indexed 35 docs across the existing structure; the generated INDEX.md is committed so the table is reviewable in the PR before hooking generation into a pre-commit step. * chore: ignore Obsidian vault and personal sidecar files Add .obsidian/ (Obsidian vault config) and _*.md (personal sidecar notes) to .gitignore so the docs/ tree can serve as canonical source of truth while still being usable as an Obsidian vault for personal authoring. The docs index generator already excludes the same _*.md pattern from INDEX.md. * docs(plans): add PBI bulk-create spec for docs-restructure Machine-parseable spec for an executor that calls the scrum4me MCP (create_pbi → create_story → create_task) to seed the docs-restructure work into the DB. - Section 1 (Context) is the PBI description; serves as task-context via mcp__scrum4me__get_claude_context. - Section 2 lists the 6 resolved decisions (English, MD3+styling merged, solo-paneel merged, .Plans archived, Nygard ADR default, node index script). - Section 3 records what already shipped on this branch so the executor doesn't duplicate the ADR scaffolding or index generator. - Section 4 carries the structured YAML graph: 1 PBI, 8 stories (one per phase), 39 tasks. product_id is REPLACE_ME — fill before running. - YAML validated with PyYAML; field schema sanity-checked. * docs(junk-cleanup): remove stub patterns/test.md * docs(junk-cleanup): archive .Plans/ to docs/plans/archive/ * docs(front-matter): add YAML front-matter to docs/ root * docs(front-matter): add YAML front-matter to patterns/ * docs(front-matter): add YAML front-matter to plans + agent files * docs(index): regenerate INDEX.md after front-matter pass * docs(naming): drop scrum4me- prefix from doc filenames * docs(naming): lowercase API.md and MD3 filenames * docs(naming): rename plan file to kebab-case ASCII * docs(naming): rename middleware.md to proxy.md (next 16) * docs(naming): polish CLAUDE.md doc-index after renames * docs(taxonomy): scaffold topical folders under docs/ * docs(taxonomy): move spec files into docs/specs/ * docs(taxonomy): move design/api/qa/backlog/assets into folders * docs(taxonomy): move agent-instruction-audit into decisions/ * docs(split): break architecture.md into 6 topical files * docs(split): merge solo-paneel-spec into specs/functional.md * docs(split): merge md3-color-scheme into design/styling * docs(trim): extract branch/commit rules into runbook * docs(trim): extract MCP integration into runbook * docs(adr): add 0001-base-ui-over-radix * docs(adr): add 0002-float-sort-order * docs(adr): add 0003-one-branch-per-milestone * docs(adr): add 0004-status-enum-mapping * docs(adr): add 0005-iron-session-over-nextauth * docs(adr): add 0006-demo-user-three-layer-policy * docs(adr): add 0007-claude-question-channel-design * docs(adr): add 0008-agent-instructions-in-claude-md + update README index * docs(index): regenerate after ADR 0001-0008 * docs(glossary): add docs/glossary.md * chore(docs): regenerate INDEX.md in pre-commit hook * docs(readme): link INDEX + glossary + agent instructions * feat(docs): add doc-link checker script * chore(docs): wire docs:check-links and docs npm scripts * ci(docs): block merge on broken doc links * docs(links): fix broken cross-references after restructure --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
499 lines
23 KiB
Markdown
499 lines
23 KiB
Markdown
---
|
||
title: Docs-restructuur — geoptimaliseerd voor AI-lookup
|
||
status: proposal
|
||
audience: maintainer, ai-agent
|
||
language: nl
|
||
last_updated: 2026-05-02
|
||
related:
|
||
- CLAUDE.md
|
||
- AGENTS.md
|
||
- README.md
|
||
- docs/decisions/agent-instructions-history.md
|
||
---
|
||
|
||
# Plan — Docs-restructuur voor AI-lookup
|
||
|
||
> Doel van dit plan: de huidige documentatie- en instructielaag van Scrum4Me omzetten naar een structuur die een AI-agent (Claude Code, Codex, een MCP-worker) in zo min mogelijk tokens en tool-calls het juiste document laat vinden, lezen en toepassen — zonder dat de mens-leesbaarheid eronder lijdt.
|
||
|
||
Dit is een **proposal**, niet een afgerond ontwerp. Lees het, markeer wat je niet wil, en ik werk het uit naar een uitvoerbaar migratieplan met file-per-file diff.
|
||
|
||
---
|
||
|
||
## 1. Waarom dit plan
|
||
|
||
Een AI-agent doet voor élke beslissing typisch dit:
|
||
|
||
1. Leest `CLAUDE.md` (of `AGENTS.md`) volledig in context.
|
||
2. Scant `docs/` met `ls`/`grep`/`glob` om relevante bestanden te kiezen.
|
||
3. Leest één of meerdere docs volledig — vaak meer dan nodig, omdat doc-grenzen vaag zijn.
|
||
4. Vindt cross-refs (`zie docs/X#Y`) en herhaalt stap 3.
|
||
|
||
Elke stap kost tokens en latency. Als de bestandsboom, naamgeving of inhoud onduidelijk is, leest de agent te veel of het verkeerde — en maakt vervolgens beslissingen op verouderde of irrelevante informatie.
|
||
|
||
**Concrete kosten in deze repo (gemeten 2026-05-02):**
|
||
|
||
| Plek | Bestanden | Regels totaal | Grootste bestand |
|
||
|---|---:|---:|---|
|
||
| Root (CLAUDE.md, README.md, AGENTS.md, Brainstorm.md) | 4 | 679 | CLAUDE.md (340) |
|
||
| `docs/` (root, exclusief subdirs) | 13 | 5.873 | architecture.md (1.247) |
|
||
| `docs/patterns/` | 11 | 1.013 | dialog.md (387) |
|
||
| `docs/plans/` | 8 | 2.121 | M10-qr-pairing-login.md (885) |
|
||
| `.Plans/` (parallelle plan-historie) | 3 | ~600 | — |
|
||
| **Totaal** | **39** | **~10.700** | — |
|
||
|
||
Bij elke turn die met `CLAUDE.md` start, wordt minimaal 340 regels orientation in de context geladen — vóór er één regel code is gelezen. De agent kan vervolgens uit ~9.000 regels documentatie het juiste fragment moeten kiezen op basis van bestandsnamen alleen, want er is geen front-matter en geen index.
|
||
|
||
---
|
||
|
||
## 2. Wat ik aantrof — review per laag
|
||
|
||
### 2.1 Root-niveau orientation
|
||
|
||
| Bestand | Wat het doet vandaag | Probleem |
|
||
|---|---|---|
|
||
| `CLAUDE.md` (340 r) | Doel, doc-index, twee start-tracks, tech stack, UI-conventies, patroon-index, env vars, conventies, branch/commit-strategie, scrum-terminologie, MCP, deployment, DoD | Té breed: oriëntatie + harde regels + referentie-tabellen + procedures. Alles wordt elke turn geladen. |
|
||
| `AGENTS.md` (38 r) | Codex-variant van CLAUDE.md | Duplicatie: 80% overlapt met CLAUDE.md (access-control, doc-sync, verificatie). Twee waarheden die uit elkaar kunnen lopen. |
|
||
| `README.md` (285 r) | Portfolio-pitch, stack, setup, routes, dev-flow | Mensgericht (recruiters, GitHub-bezoekers). Goed dat het bestaat — niet aanraken. |
|
||
| `Brainstorm.md` (16 r) | Stukjes Prisma-schema, JSON-snippet en HTML-DOM-dump zonder context | **Dood bestand**, weghalen of verplaatsen naar `docs/scratch/`. |
|
||
|
||
### 2.2 `docs/` root
|
||
|
||
| Bestand | Regels | Waar het thuishoort |
|
||
|---|---:|---|
|
||
| `architecture.md` | 1.247 | `docs/architecture/` — splitsen (zie §4) |
|
||
| `functional.md` | 650 | `docs/specs/functional.md` |
|
||
| `backlog.md` | 751 | `docs/backlog/index.md` |
|
||
| `product-backlog.md` | 454 | `docs/backlog/product-historical.md` (referentie, zie noot in CLAUDE.md) |
|
||
| `personas.md` | 138 | `docs/specs/personas.md` |
|
||
| `styling.md` | 670 | `docs/design/styling.md` |
|
||
| `md3-color-scheme.md` | 941 | `docs/design/styling.md` (overlapt deels met `styling.md` — kandidaat voor merge) |
|
||
| `test-plan.md` | 454 | `docs/qa/api-test-plan.md` |
|
||
| `pbi-dialog.md` | 120 | `docs/specs/dialogs/pbi.md` |
|
||
| `story-dialog.md` | 163 | `docs/specs/dialogs/story.md` |
|
||
| `task-dialog.md` | 127 | `docs/specs/dialogs/task.md` |
|
||
| `solo-paneel-spec.md` | 771 | `docs/specs/solo-panel.md` |
|
||
| `api.md` | 520 | `docs/api/rest-contract.md` |
|
||
| `decisions/agent-instructions-history.md` | 173 | `docs/decisions/agent-instructions.md` (ADR-stijl) |
|
||
| `erd.svg`, `icons.html` | — | `docs/assets/` |
|
||
|
||
**Patroon dat opvalt:** alles met prefix `` — dat prefix is overbodig, je staat al in `docs/` van de Scrum4Me-repo. Verwijderen scheelt visuele ruis bij `ls`.
|
||
|
||
**Inconsistente capitalization:** één bestand `md3-color-scheme.md` (snake + UpperCamel), de rest kebab. Eén bestand `api.md` (UPPER), de rest lowercase.
|
||
|
||
### 2.3 `docs/patterns/`
|
||
|
||
11 patronen, elk 25–390 regels. Goed als concept, maar:
|
||
|
||
- `test.md` bevat letterlijk het woord "test" — junkfile, weghalen.
|
||
- Geen front-matter; agent moet titel + intro lezen om te weten of het patroon van toepassing is.
|
||
- Naamgeving inconsistent: `iron-session.md`, `qr-login.md`, `claude-question-channel.md` — sommige domeinspecifiek, andere generiek. Geen prefix die laat zien of het een **rule** (verplicht), **recipe** (voorbeeldcode) of **explainer** is.
|
||
|
||
### 2.4 `docs/plans/`
|
||
|
||
- 8 plans. Eén heeft een filename met spaties en em-dash: `tweede-claude-agent-planning.md` — breekt grep/glob/git-workflows op sommige shells, en is moeilijk te linken. Omnoemen naar `tweede-claude-agent-planning.md`.
|
||
- ST-1109-pbi-status.md verwijst naar `~/.claude/plans/welke-rioriteiten-heeft-een-mighty-shell.md` (ook nog typo "rioriteiten") — externe locatie die niet in de repo zit en die de agent niet kan lezen.
|
||
- `MEMORY.md` wordt op meerdere plaatsen genoemd maar bestaat niet in de repo.
|
||
|
||
### 2.5 `.Plans/` (root)
|
||
|
||
3 historische planfiles uit april 2026, parallel aan `docs/plans/`. Twee waarheden voor "waar staan plannen". Voorstel: archiveren naar `docs/plans/archive/` of weghalen.
|
||
|
||
### 2.6 Cross-referenties en dode links
|
||
|
||
- CLAUDE.md verwijst naar `docs/architecture.md#demo-user-policy` — die anchor bestaat (regel 1068 `## Demo-user policy (ST-1110)`), dus dit is OK; maar er bestaat geen lint die garandeert dat dit zo blijft als de header verandert.
|
||
- ST-1109-pbi-status.md verwijst naar `~/.claude/plans/welke-rioriteiten-heeft-een-mighty-shell.md` — externe locatie buiten de repo, plus typo "rioriteiten". Een agent kan die niet lezen.
|
||
- README.md verwijst niet naar CLAUDE.md/AGENTS.md (mensbezoekers vinden de agent-instructie laag niet).
|
||
- Geen enkel doc heeft een "Zie ook"-blok aan de onderkant. Cross-navigatie tussen patroon ↔ spec ↔ plan moet de agent zelf reconstrueren.
|
||
|
||
### 2.7 Wat er níet is (en zou moeten)
|
||
|
||
- **Geen index/manifest.** Een agent die `glob "docs/**/*.md"` doet, krijgt 30+ paden zonder context.
|
||
- **Geen front-matter.** Geen status (draft/active/deprecated), audience, last-updated, related.
|
||
- **Geen ADR-laag.** Beslissingen zoals "waarom geen Radix maar @base-ui/react", "waarom float sort_order", "waarom one-branch-per-milestone" zitten verstrooid in CLAUDE.md, README en losse plans. Een `docs/decisions/`-folder met ADR-format zou ze vindbaar maken.
|
||
- **Geen glossary.** Domeintermen (PBI, Story, Sprint, Solo, Todo, demo-token) zijn alleen impliciet gedefinieerd in de functional spec.
|
||
- **Geen "lookup-hints" in de doc-index.** CLAUDE.md zegt *waarvoor* je een doc gebruikt, niet *wanneer je het NIET hoeft te lezen*.
|
||
|
||
---
|
||
|
||
## 3. Doelen voor de nieuwe structuur
|
||
|
||
In volgorde van belangrijkheid:
|
||
|
||
1. **Eén goedkope orientation-laag.** Een agent moet ≤150 regels lezen om te weten waar hij verder moet kijken.
|
||
2. **Voorspelbare paden.** `docs/<topic>/<entity-or-feature>.md` zonder uitzonderingen.
|
||
3. **Machine-leesbare metadata.** YAML-front-matter op élk doc met minimaal `status`, `audience`, `last_updated`, `related`.
|
||
4. **Per-doc lookup-hint.** Eén zin "Lees dit als …" bovenaan; één zin "Niet hiervoor lezen: …" om verkeerd ophalen te voorkomen.
|
||
5. **Splitsing van regels (verplicht) en uitleg (referentie).** Regels in een korte rule-doc; voorbeeldcode en rationale in een aparte recipe/explainer.
|
||
6. **Eén bron-van-waarheid per onderwerp.** Geen Codex-vs-Claude-duplicatie; AGENTS.md wordt een 10-regelige verwijzing naar CLAUDE.md.
|
||
|
||
---
|
||
|
||
## 4. Voorgestelde doelstructuur
|
||
|
||
```
|
||
/ (repo-root)
|
||
├── README.md (mens, portfolio — ongewijzigd)
|
||
├── CLAUDE.md (agent-orientation, ≤150 regels — zie §5)
|
||
├── AGENTS.md (10 regels: "alles in CLAUDE.md geldt ook voor jou")
|
||
├── docs/
|
||
│ ├── INDEX.md (NIEUW — manifest met front-matter van alle docs)
|
||
│ ├── glossary.md (NIEUW — PBI, Story, Sprint, demo-token, …)
|
||
│ │
|
||
│ ├── architecture/
|
||
│ │ ├── overview.md (uit huidige architecture.md §1–§3)
|
||
│ │ ├── data-model.md (uit §Datamodel + §Prisma Schema)
|
||
│ │ ├── auth-and-sessions.md (uit §Authenticatieflow)
|
||
│ │ ├── qr-pairing.md (uit §QR-pairing flow)
|
||
│ │ ├── claude-question-channel.md (uit §Vraag-antwoord-kanaal)
|
||
│ │ └── project-structure.md (uit §Projectstructuur)
|
||
│ │
|
||
│ ├── specs/
|
||
│ │ ├── functional.md (huidige functional.md)
|
||
│ │ ├── personas.md
|
||
│ │ ├── solo-panel.md
|
||
│ │ └── dialogs/
|
||
│ │ ├── pbi.md
|
||
│ │ ├── story.md
|
||
│ │ └── task.md
|
||
│ │
|
||
│ ├── design/
|
||
│ │ ├── styling.md (samengevoegd uit styling + MD3-color)
|
||
│ │ └── color-tokens.md (alleen het token-overzicht)
|
||
│ │
|
||
│ ├── api/
|
||
│ │ ├── rest-contract.md (huidige api.md)
|
||
│ │ └── error-codes.md (afgesplitst — vandaag verspreid)
|
||
│ │
|
||
│ ├── patterns/ (RULES — kort en bindend)
|
||
│ │ ├── 00-conventions.md (server-action, prisma-client, route-handler — kort)
|
||
│ │ ├── dialog.md
|
||
│ │ ├── sort-order.md
|
||
│ │ ├── zustand-optimistic.md
|
||
│ │ ├── iron-session.md
|
||
│ │ ├── proxy.md (was middleware.md — nieuwe naam)
|
||
│ │ ├── qr-pairing.md
|
||
│ │ └── claude-question-channel.md
|
||
│ │
|
||
│ ├── recipes/ (NIEUW — uitgewerkte voorbeeldcode bij rules)
|
||
│ │ └── … (één recipe per pattern dat code-snippets had)
|
||
│ │
|
||
│ ├── runbooks/ (NIEUW — operationele procedures)
|
||
│ │ ├── deploy-vercel.md (uit CLAUDE.md §Deployment)
|
||
│ │ ├── env-vars.md (uit CLAUDE.md §Env vars + .env.example)
|
||
│ │ └── local-dev.md (huidige README §setup, geëxtraheerd)
|
||
│ │
|
||
│ ├── decisions/ (NIEUW — ADR-stijl)
|
||
│ │ ├── 0001-base-ui-over-radix.md
|
||
│ │ ├── 0002-float-sort-order.md
|
||
│ │ ├── 0003-one-branch-per-milestone.md
|
||
│ │ ├── 0004-status-enum-mapping.md
|
||
│ │ └── 0005-agent-instructions.md (was decisions/agent-instructions-history.md)
|
||
│ │
|
||
│ ├── backlog/
|
||
│ │ ├── index.md (huidige backlog.md)
|
||
│ │ └── product-historical.md (huidige product-backlog.md)
|
||
│ │
|
||
│ ├── plans/
|
||
│ │ ├── M9-active-product-backlog.md
|
||
│ │ ├── M10-qr-pairing-login.md
|
||
│ │ ├── M11-claude-questions.md
|
||
│ │ ├── ST-1109-pbi-status.md
|
||
│ │ ├── ST-1110-demo-readonly.md
|
||
│ │ ├── ST-1111-claude-job-trigger.md
|
||
│ │ ├── ST-1114-copilot-reviews.md
|
||
│ │ ├── tweede-claude-agent-planning.md (rename — geen spaties/em-dash)
|
||
│ │ └── archive/ (uit `.Plans/` aan repo-root)
|
||
│ │ ├── 2026-04-27-claude-md-workflow-update.md
|
||
│ │ ├── 2026-04-27-insert-milestone-tool.md
|
||
│ │ └── 2026-04-27-m8-realtime-solo.md
|
||
│ │
|
||
│ ├── qa/
|
||
│ │ └── api-test-plan.md
|
||
│ │
|
||
│ └── assets/
|
||
│ ├── erd.svg
|
||
│ └── icons.html
|
||
│
|
||
└── .Plans/ (WEG — naar docs/plans/archive/)
|
||
└── Brainstorm.md (WEG — junk, of naar docs/scratch/)
|
||
└── docs/patterns/test.md (WEG — junk)
|
||
```
|
||
|
||
**Prefix `` overal weg.** Je staat in de Scrum4Me-repo.
|
||
**Alle bestandsnamen kebab-case, lowercase.** Geen `api.md`, geen `MD3_…`.
|
||
|
||
---
|
||
|
||
## 5. CLAUDE.md herontwerp
|
||
|
||
CLAUDE.md wordt strikt **router + harde regels** — geen referentie-tabellen, geen voorbeelden, geen rationale.
|
||
|
||
Voorgestelde nieuwe inhoud (max ~150 regels):
|
||
|
||
```markdown
|
||
# CLAUDE.md — Scrum4Me
|
||
|
||
## 1. Wat is Scrum4Me
|
||
(2 zinnen — link naar README voor de pitch)
|
||
|
||
## 2. Eerst lezen, altijd
|
||
- docs/INDEX.md — manifest van alle docs
|
||
- docs/glossary.md — bij twijfel over een term
|
||
|
||
## 3. Hoe je werk vindt
|
||
Twee tracks (A: MCP, B: manueel) — verkort tot 10 regels.
|
||
Detail: docs/runbooks/sprint-flow.md
|
||
|
||
## 4. Hardstop-regels (nooit overtreden)
|
||
- demo-user heeft geen schrijfrechten (3-laagsdekking)
|
||
- @base-ui/react, niet Radix
|
||
- nooit bg-blue-500, altijd MD3-tokens
|
||
- één commit = één verantwoordelijkheid
|
||
- één branch per milestone, push pas na user-approval
|
||
- denormalized FKs uit DB-parent, niet uit client-input
|
||
(elk punt → 1 regel + link naar pattern/decision)
|
||
|
||
## 6. Stack op één regel per laag
|
||
(geen versie-uitleg, link naar docs/architecture/overview.md)
|
||
|
||
## 7. Snelreferentie patronen
|
||
| Wanneer | Lees |
|
||
|---|---|
|
||
| Server Action schrijven | docs/patterns/server-action.md |
|
||
| Drag-and-drop reorder | docs/patterns/sort-order.md |
|
||
| …(max 10 rijen)…|
|
||
|
||
## 8. Verificatie vóór hand-off
|
||
`npm run lint && npm test && npm run build`
|
||
```
|
||
|
||
Alles wat nu in CLAUDE.md §Conventies, §Branch & PR Strategy, §Commit Strategy, §MCP-integratie, §Deployment staat → verhuist naar:
|
||
- `docs/runbooks/branch-and-commit.md` (regels + voorbeelden samen)
|
||
- `docs/runbooks/deploy-vercel.md`
|
||
- `docs/runbooks/mcp-integration.md`
|
||
- `docs/decisions/0003-one-branch-per-milestone.md` (waarom)
|
||
|
||
CLAUDE.md houdt in §4 alleen de éénregelige regel + link.
|
||
|
||
**Effect:** elke turn 150 r in plaats van 340 r aan orientation-context. De agent leest aanvullende docs alleen wanneer de huidige taak ze raakt.
|
||
|
||
---
|
||
|
||
## 6. Front-matter spec
|
||
|
||
Élk markdown-bestand in `docs/` (en `CLAUDE.md`, `AGENTS.md`) krijgt bovenaan:
|
||
|
||
```yaml
|
||
---
|
||
title: <korte titel>
|
||
status: draft | active | deprecated
|
||
audience: ai-agent | maintainer | contributor | external
|
||
language: nl | en
|
||
last_updated: 2026-05-02
|
||
applies_to: [feature-of-module-of-milestone-keys] # optioneel
|
||
related:
|
||
- docs/<andere>.md
|
||
- CLAUDE.md
|
||
when_to_read: <één zin>
|
||
do_not_read_for: <één zin — voorkomt mis-fetch>
|
||
---
|
||
```
|
||
|
||
**Waarom dit voor AI-lookup helpt:**
|
||
|
||
- `status: deprecated` → agent slaat het over zonder te lezen.
|
||
- `applies_to: [M10, qr-login]` → grep op milestone-key → directe hit.
|
||
- `when_to_read` / `do_not_read_for` → agent kan beslissen op de eerste 20 regels of dit doc nuttig is, zonder de hele 800-regelige spec in te lezen.
|
||
- `related` → expliciete graaf in plaats van impliciete cross-refs.
|
||
|
||
`docs/INDEX.md` wordt automatisch gegenereerd uit deze front-matter (klein script in `scripts/build-docs-index.ts` — onderdeel van het migratieplan).
|
||
|
||
---
|
||
|
||
## 7. AGENTS.md herontwerp
|
||
|
||
```markdown
|
||
# AGENTS.md
|
||
|
||
This repo's source of truth for agent instructions is **CLAUDE.md**.
|
||
Codex, Cursor, Continue, and any other coding agent: read CLAUDE.md first.
|
||
The same product, security, and verification rules apply regardless of which agent runs.
|
||
|
||
Repo-specific addendum (only if your agent does NOT speak markdown well):
|
||
- The "This is NOT the Next.js you know" note also applies to you.
|
||
- Run `npm run lint && npm test && npm run build` before handing work back.
|
||
```
|
||
|
||
Geen duplicatie van access-control of doc-sync — die regels staan exclusief in CLAUDE.md / `docs/patterns/` / `docs/decisions/`.
|
||
|
||
---
|
||
|
||
## 8. Migratie in fases
|
||
|
||
Elke fase is een eigen branch + PR. Geen big-bang. Volgorde gekozen zodat agents tijdens de migratie nog steeds werken.
|
||
|
||
### Fase 1 — Junk weg, front-matter erbij (laag risico)
|
||
|
||
- `docs/patterns/test.md` weghalen.
|
||
- `Brainstorm.md` weghalen of `docs/scratch/brainstorm-2026-05.md`.
|
||
- `.Plans/` → `docs/plans/archive/`.
|
||
- Front-matter toevoegen aan élk bestaand bestand (zonder verplaatsen). Status default = `active`.
|
||
- `docs/INDEX.md` genereren via script.
|
||
|
||
**Voor commit:** alle bestaande paden werken nog. Geen risico voor lopende sessies of CI.
|
||
|
||
### Fase 2 — Naamgeving normaliseren
|
||
|
||
- `` prefix overal weg via `git mv` (1 commit per groep — backlog/specs/personas/styling/dialogs).
|
||
- `api.md` → `api/rest-contract.md`.
|
||
- `md3-color-scheme.md` → `design/md3-color-scheme.md`.
|
||
- `tweede-claude-agent-planning.md` → `plans/tweede-claude-agent-planning.md`.
|
||
- `middleware.md` → `proxy.md` (volgt Next.js 16 hernoeming).
|
||
- Per `git mv`: in dezelfde commit zoek-en-vervang alle interne links + CLAUDE.md doc-index.
|
||
|
||
### Fase 3 — Folder-taxonomie
|
||
|
||
- Maak `docs/architecture/`, `docs/specs/`, `docs/design/`, `docs/api/`, `docs/runbooks/`, `docs/decisions/`, `docs/backlog/`, `docs/qa/`, `docs/assets/`.
|
||
- Verplaats per groep met `git mv`. Eén commit per groep.
|
||
- Update CLAUDE.md doc-index per stap.
|
||
|
||
### Fase 4 — Splits monolithische docs
|
||
|
||
- `architecture.md` (1.247 r) opdelen in 6 docs onder `docs/architecture/`.
|
||
- Originele file wordt 20 regels: titel + "Dit document is opgesplitst — zie:" + lijst met nieuwe paden.
|
||
- Idem voor `solo-paneel-spec.md` als dat onderdelen heeft die naar specs én patterns kunnen.
|
||
|
||
### Fase 5 — CLAUDE.md verkorten + AGENTS.md verkorten
|
||
|
||
- Knip CLAUDE.md naar het skelet uit §5.
|
||
- Verplaats verwijderde secties naar `docs/runbooks/` en `docs/decisions/`.
|
||
- AGENTS.md vervangen door de versie uit §7.
|
||
|
||
### Fase 6 — ADR-backfill
|
||
|
||
- Schrijf ADR's voor de impliciete beslissingen (5–8 stuks):
|
||
1. base-ui-over-radix
|
||
2. float-sort-order
|
||
3. one-branch-per-milestone
|
||
4. status-enum-mapping (db UPPER ↔ api lower)
|
||
5. iron-session-over-nextauth
|
||
6. demo-user-policy (3-laags)
|
||
7. claude-question-channel-design
|
||
8. agent-instructions-policy (was audit)
|
||
|
||
### Fase 7 — Glossary + index-script
|
||
|
||
- `docs/glossary.md` schrijven (PBI, Story, Sprint, Solo, Todo, demo-token, MCP-job, …).
|
||
- `scripts/build-docs-index.ts` — genereert `docs/INDEX.md` uit alle front-matters.
|
||
- Husky pre-commit hook: index regenereren bij wijziging van front-matter.
|
||
|
||
### Fase 8 — Cross-link-check
|
||
|
||
- Klein script dat alle `docs/...md` links volgt en rapporteert dode links én anchor-misses.
|
||
- Toevoegen aan `npm run lint` of `npm test`.
|
||
|
||
---
|
||
|
||
## 9. Wat dit oplevert (meetbaar)
|
||
|
||
| Metric | Vandaag | Doel |
|
||
|---|---:|---:|
|
||
| Regels die elke agent-turn standaard in context komen (CLAUDE.md) | 340 | ≤150 |
|
||
| Doc-bestanden in `docs/` root | 13 | 2 (INDEX.md, glossary.md) |
|
||
| Doc-bestanden zonder front-matter | 36 | 0 |
|
||
| Junk-bestanden | 3 (test.md, Brainstorm.md, .Plans/) | 0 |
|
||
| Bestandsnamen met spaties of niet-ASCII | 1 | 0 |
|
||
| Filename-prefixen die geen informatie toevoegen (``) | 8 | 0 |
|
||
| Documenten >800 regels | 4 | 0 (na splitsing) |
|
||
| Dode interne links | onbekend | 0 (na lint) |
|
||
|
||
---
|
||
|
||
## 10. Wat dit níet oplevert (eerlijk)
|
||
|
||
- Codequaliteit verbetert niet automatisch.
|
||
- Patronen die nu fout zijn worden niet gefixt — alleen vindbaar gemaakt.
|
||
- ADR's invullen kost denkwerk dat ik niet uit jouw hoofd kan halen — fase 6 vereist jouw input.
|
||
- AI-agents die geen front-matter parseren (oudere modellen, sommige codex-flavors) profiteren minder. Voor de `docs/INDEX.md` is het wel platte tekst — die helpt iedereen.
|
||
|
||
---
|
||
|
||
## 11. Open beslissingen — status
|
||
|
||
| # | Vraag | Besluit (2026-05-02) |
|
||
|---|---|---|
|
||
| 1 | Taal van docs, front-matter, INDEX.md | **English** — alle nieuwe en herschreven docs in het Engels. Code comments blijven Engels (al zo). UI-strings blijven Nederlands. |
|
||
| 2 | MD3-color + styling samenvoegen | **Eén doc** — `docs/design/styling.md`. |
|
||
| 3 | `solo-paneel-spec.md` | **Samenvoegen** — opgaan in `docs/specs/functional.md` (eigen sectie). |
|
||
| 4 | `.Plans/` archief | **Bewaren** — verplaatsen naar `docs/plans/archive/`. |
|
||
| 5 | ADR-template (Nygard vs MADR) | **In discussie** — referentielink gedeeld, ik heb die niet kunnen openen (claude.ai share staat niet op de fetch-allowlist). Default voor fase 6: Nygard, klein en passend bij solo + kleine repo. Vervangbaar zodra besluit valt. |
|
||
| 6 | Index-generator | **Node-script** in `scripts/build-docs-index.ts`. |
|
||
|
||
## 12. Implicaties van besluit 1 — taalwissel
|
||
|
||
De keuze "alle docs Engels" is groter dan hij lijkt. Drie scope-niveaus:
|
||
|
||
**Niveau A — going-forward only (kleinste scope):**
|
||
- Élk nieuw doc en élke nieuw aangemaakte front-matter in het Engels.
|
||
- Dit plan, INDEX.md, glossary.md, runbooks/, decisions/ — allemaal Engels vanaf creatie.
|
||
- Bestaande Nederlandse docs blijven staan tot ze om een andere reden geraakt worden.
|
||
- **Risico:** mengvormen in docs/ — een agent vindt ene helft Engels, andere helft Nederlands. Grep op een Engels keyword mist Nederlandse hits.
|
||
|
||
**Niveau B — opportunistic (middel):**
|
||
- Niveau A + élke doc die we aanraken voor de restructuur (renames, splitsingen, front-matter toevoegen) wordt meteen vertaald.
|
||
- Aan het eind van fase 5 zijn `architecture/`, `specs/`, `design/`, `api/`, `patterns/`, `runbooks/`, `decisions/` allemaal Engels.
|
||
- Backlog, plans en QA blijven Nederlands tenzij ze ge-edit worden.
|
||
|
||
**Niveau C — full sweep:**
|
||
- Élke `.md` in de repo vertalen, ongeacht of de restructuur hem aanraakt.
|
||
- Aanzienlijk werk: ~10.700 regels prose. Schatting: 1-2 dagen agent-tijd of een batch-translate-pass met review.
|
||
|
||
**Voorstel: niveau B.** Sluit aan bij de migratiefases zonder een aparte translation-sprint te hoeven plannen. Niveau C kan later als één losse PR.
|
||
|
||
## 13. ADR-template — voorlopige keuze
|
||
|
||
Tot besluit valt op vraag 5: ik gebruik **Nygard-Light** als template voor fase 6. Eén ADR is één bestand met:
|
||
|
||
```markdown
|
||
---
|
||
title: <decision title>
|
||
adr_number: 0001
|
||
status: proposed | accepted | superseded by 00xx
|
||
date: 2026-05-02
|
||
---
|
||
|
||
# 0001. <decision title>
|
||
|
||
## Context
|
||
Why this decision matters now. What forces are in play.
|
||
|
||
## Decision
|
||
The choice we make. One paragraph, declarative.
|
||
|
||
## Consequences
|
||
What becomes easier, what becomes harder, what we accept.
|
||
```
|
||
|
||
Compact, grep-vriendelijk, en agent-leesbaar binnen ~30 regels. Als MADR de uitkomst wordt, swappen we het template voor fase 6 — alle eerdere fases zijn template-onafhankelijk.
|
||
|
||
## 14. Volgende stap
|
||
|
||
Met deze besluiten kan ik fase 1 omzetten naar een concrete uitvoeringslijst:
|
||
|
||
- exacte `rm` / `git mv` / `mkdir` commando's
|
||
- de front-matter-template in het Engels
|
||
- één `npm run` of bash-snippet die de hele fase in één commit zet
|
||
- bijbehorende update-diff voor CLAUDE.md (alleen de doc-index-tabel)
|
||
|
||
Zeg het woord en ik produceer dat als `docs/plans/docs-restructure-phase-1.md`.
|
||
|
||
---
|
||
|
||
## Verificatie van dit plan
|
||
|
||
- [x] Bestandsnamen en regelaantallen gecheckt tegen `find docs -type f` + `wc -l` op disk (2026-05-02).
|
||
- [x] Cross-refs in CLAUDE.md gegrep't en op bestaan getoetst.
|
||
- [x] Geen voorgestelde nieuwe paden conflicteren met bestaande.
|
||
- [x] Open beslissingen (§11) afgehandeld door maintainer (2026-05-02) — vraag 5 voorlopig op default.
|
||
- [ ] ADR-template definitief vastgesteld (vraag 5).
|
||
- [ ] Migratie fase 1 omgezet naar uitvoerbaar PR-plan (`docs/plans/docs-restructure-phase-1.md`).
|