baldart 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +119 -0
  2. package/README.md +3 -3
  3. package/VERSION +1 -1
  4. package/framework/.claude/agents/CHANGELOG.md +68 -0
  5. package/framework/.claude/agents/REGISTRY.md +3 -3
  6. package/framework/.claude/agents/coder.md +4 -5
  7. package/framework/.claude/agents/doc-reviewer.md +3 -2
  8. package/framework/.claude/agents/prd-card-writer.md +1 -1
  9. package/framework/.claude/agents/qa-sentinel.md +4 -4
  10. package/framework/.claude/agents/senior-researcher.md +166 -151
  11. package/framework/.claude/commands/codexreview.md +26 -4
  12. package/framework/.claude/skills/new/CHANGELOG.md +28 -0
  13. package/framework/.claude/skills/new/SKILL.md +1 -1
  14. package/framework/.claude/skills/new/references/implement.md +8 -4
  15. package/framework/.claude/skills/new/references/review-cycle.md +8 -5
  16. package/framework/.claude/skills/new/scripts/build-review-bundle.mjs +13 -5
  17. package/framework/.claude/skills/new/scripts/doc-invariants.mjs +6 -3
  18. package/framework/.claude/skills/new2/CHANGELOG.md +9 -0
  19. package/framework/.claude/skills/new2/SKILL.md +1 -1
  20. package/framework/.claude/skills/prd/CHANGELOG.md +16 -0
  21. package/framework/.claude/skills/prd/SKILL.md +1 -1
  22. package/framework/.claude/skills/prd/references/discovery-phase.md +5 -1
  23. package/framework/.claude/skills/prd/references/research-phase.md +32 -12
  24. package/framework/.claude/skills/research/CHANGELOG.md +9 -0
  25. package/framework/.claude/skills/research/SKILL.md +94 -0
  26. package/framework/.claude/skills/research/assets/report-compare.template.md +50 -0
  27. package/framework/.claude/skills/research/assets/report-decision.template.md +42 -0
  28. package/framework/.claude/skills/research/assets/report-deep.template.md +61 -0
  29. package/framework/.claude/skills/research/assets/report-regulatory.template.md +44 -0
  30. package/framework/.claude/skills/research/references/playbook.md +112 -0
  31. package/framework/.claude/skills/research/scripts/rebuild-research-index.mjs +77 -0
  32. package/framework/.claude/workflows/new-card-review.js +16 -2
  33. package/framework/.claude/workflows/new2-resolve.js +1 -1
  34. package/framework/.claude/workflows/new2.js +1 -1
  35. package/framework/agents/coding-standards.md +2 -2
  36. package/framework/agents/doc-audit-protocol.md +9 -4
  37. package/framework/agents/index.md +2 -0
  38. package/framework/agents/research-protocol.md +228 -0
  39. package/framework/agents/skills-mapping.md +17 -0
  40. package/framework/docs/PROJECT-CONFIGURATION.md +23 -0
  41. package/framework/docs/UPGRADE-3.12-UI-COHERENCE.md +1 -1
  42. package/framework/templates/baldart.config.template.yml +6 -0
  43. package/framework/templates/research-index.template.md +13 -0
  44. package/framework/templates/research-sources.CHANGELOG.md +14 -0
  45. package/framework/templates/research-sources.template.md +31 -0
  46. package/package.json +1 -1
  47. package/src/commands/configure.js +26 -0
  48. package/src/commands/doctor.js +82 -0
  49. package/src/commands/update.js +48 -1
  50. package/src/utils/research-library.js +92 -0
  51. package/src/utils/symlinks.js +3 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,125 @@ All notable changes to BALDART will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [5.1.0] - 2026-07-03
9
+
10
+ **The research layer.** Research becomes a first-class, reusable asset: the
11
+ `senior-researcher` agent is restructured to the v5.0 authoring contract with
12
+ **research profiles**, every report lands in a consumer-owned, indexed
13
+ **research library**, and the **source matrix** that routes each research
14
+ nature to the right sources is versioned and grows project after project.
15
+ Design refined by an adversarial refutation pass (13 findings integrated —
16
+ ID-race BLOCKER, /prd poll determinism, lifecycle circularity, opt-out
17
+ resurrection, auto-commit scoping).
18
+
19
+ - **NEW protocol module `framework/agents/research-protocol.md`** (`SECTION=`
20
+ dispatch): `profiles` (`PROFILE=<decision|deep|compare|regulatory>` output
21
+ contracts; absent → `deep` = legacy semantics; deep's dzhng-style iterative
22
+ loop + STORM perspectives + CoVe citation spot-check are opt-in via
23
+ `DEPTH=<1..3>`, default 1 = today's cost), `library` (layout, tag-rich report
24
+ frontmatter as source of truth, INDEX.md as regenerable view, `RES-<date>-
25
+ <slug>` ids — no max+1 race, archive-not-delete), `reuse` (pre-flight
26
+ `FULL_REUSE`/`DELTA`/`NEW` + per-category TTLs + anti-false-reuse guard +
27
+ the always-write-a-file polling contract), `sources` (matrix schema,
28
+ SOURCES.md → framework-template resolution — the default matrix lives in ONE
29
+ file, and the `SOURCE_MATRIX_CANDIDATE` growth loop emitting a ready-to-paste
30
+ maintainer prompt).
31
+ - **`senior-researcher` v2.0.0** (agents CHANGELOG + heading map): description
32
+ 4-examples → 2 lines; `version:`/`effort:` frontmatter; `model: sonnet` KEPT
33
+ and the REGISTRY model-tier row corrected (it claimed "always opus",
34
+ contradicting the frontmatter since day one); NEW Profile Dispatch / Research
35
+ Library (total delivery-path chain: prompt → library → `paths.docs_dir`) /
36
+ Source Matrix sections; Operating Protocol cites incl. `SECTION=
37
+ injection-guard` — the agent reads more untrusted web content than any other
38
+ and previously had NO injection guard; FIRST MESSAGE TEMPLATE scoped to
39
+ interactive direct invocation.
40
+ - **NEW skill `/research` (42nd)**: THIN interactive orchestrator — scoping
41
+ (max 3 questions) → profile+nature routing → library reuse check BEFORE
42
+ paying for research → `senior-researcher` launch (parallel fan-out on
43
+ Claude; sequential by-name on Codex per `runtime-portability-protocol.md`)
44
+ → filing + INDEX ownership → matrix growth loop (apply locally to
45
+ `SOURCES.md` `## Local additions` and/or print the upstream BALDART prompt).
46
+ Ships per-profile report templates (`assets/`) + deterministic
47
+ `scripts/rebuild-research-index.mjs` (INDEX regenerated from frontmatter).
48
+ - **NEW config key `paths.research_dir`** (default `docs/research`, proposed on
49
+ FIRST encounter only — an explicitly emptied key is a respected opt-out,
50
+ never re-proposed, never resurrected). Schema-change propagation:
51
+ template + `configure` (detect probe + prompt + post-write library creation)
52
+ + `update` (new-key detector already covers `paths.*`; post-pull seed
53
+ backfill into an EXISTING dir only; auto-commit scoped to UNTRACKED seeds —
54
+ never sweeps a consumer-edited SOURCES.md/INDEX.md) + `doctor`
55
+ (`create-research-dir` / `backfill-research-seeds` autoOk actions — seeds are
56
+ generic, unlike the i18n registry; `research-sources-advisory` when the
57
+ framework matrix version moves ahead, never overwrites) +
58
+ `PROJECT-CONFIGURATION.md` (§ 4.2.2 lifecycle + opt-out) + this CHANGELOG.
59
+ New shared helper `src/utils/research-library.js` (idempotent, silent,
60
+ returns `created[]`).
61
+ - **Versioned source matrix**: `framework/templates/research-sources.template.md`
62
+ (`matrix_version: 1.0.0` + sibling `research-sources.CHANGELOG.md`) seeds the
63
+ consumer-owned `SOURCES.md`; 5-nature default matrix (scientific / dev /
64
+ regulatory / ux / market × primary / secondary / avoid / notes). Growth loop:
65
+ agent emits run-evidence-only candidates + the copy-paste BALDART prompt.
66
+ - **`/prd` 1.4.0**: Step 2.5 spawns with `PROFILE=decision`
67
+ (`PROFILE=regulatory` on signal S2) — resolving the two-conflicting-SSOTs
68
+ bug where the prompt asked for a light per-topic format while the agent's
69
+ contract mandated the full §0–§11 report; /prd now PRE-ALLOCATES the output
70
+ path (library when configured, legacy `prd_dir` fallback otherwise) and the
71
+ agent always writes a file there (`FULL_REUSE` → pointer stub) so the
72
+ 10-minute exit-check poll stays deterministic. Discovery-phase background
73
+ launch updated in the same change (parallel location). `hybrid-ml-architect`
74
+ deliberately NOT touched (vertical, on-request) — protected by the defaults.
75
+ - Inventories: 42 skills / 33 domain modules (README count was already stale
76
+ at 28); REGISTRY Agent Map + decision tree + model-tier rows updated.
77
+ - OSS recon (inspiration only, zero dependencies adopted): GPT Researcher
78
+ (planner/executor, local-first hybrid research), dzhng/deep-research
79
+ (breadth/depth loop), STORM (multi-perspective questioning),
80
+ open_deep_research (scoping phase), Karpathy markdown-first KB (INDEX as the
81
+ single map, archive-not-delete).
82
+ - Codex parity: **portable** — skill = same SKILL.md bundle (two symlinks),
83
+ agent = transpiled `.codex/agents/*.toml` from the same markdown, module +
84
+ templates = plain markdown; the only Claude-only mechanic (parallel
85
+ subagent fan-out in `/research`) has an explicit sequential-by-name Codex
86
+ branch citing `runtime-portability-protocol.md`.
87
+
88
+ ## [5.0.1] - 2026-07-03
89
+
90
+ **Adversarial-verification fixes on the 5.0.0 wave.** A full release verification
91
+ (distribution machine dogfooded end-to-end on 4 configs — all green; normative-loss audit
92
+ over 4 core agents; pipeline-coherence audit) found the headline mechanisms inert on the
93
+ happy path plus a handful of slot-boundary and consistency defects. All fixed; no gate
94
+ removed, no H2 moved (consumer overlays unaffected), no `baldart.config.yml` change.
95
+
96
+ - **FIXED (HIGH) — `/new` step 11b clean branch now proceeds to 11c**: previously only the
97
+ violation branch reached the review-bundle/doc-invariants build, leaving the v5.0.0
98
+ anti-re-read + PASS-fast machinery unused on every clean card (`implement.md`).
99
+ - **FIXED (HIGH) — `/codexreview` consumes the full lean contract**: Step -0.5 now parses +
100
+ forwards `review_bundle_path` (anti-re-read phrase in every Step-2 prompt) and
101
+ `specialist_dispatch` (orchestrated-mode suppression, `dispatch_deferred:<agent>`) — both
102
+ were produced by `codex-gate.md` but dead-wired on the `/new`→`/codexreview` hop. Optional
103
+ keys: pre-5.0 contracts keep working unchanged.
104
+ - **FIXED (HIGH) — coder slot boundaries**: `vercel-react-best-practices` un-slotted (no
105
+ config flag can express React-non-Next → structural normative loss); the NEVER-ad-hoc
106
+ browser-scripts rule hoisted out of `{{#e2e_playwright}}` (universal pre-5.0). Agents
107
+ CHANGELOG: coder/doc-reviewer/qa-sentinel v2.0.1.
108
+ - **FIXED (MEDIUM)** — doc-reviewer per-card cited exceptions (`topological-generation`,
109
+ `schema-drift`) restored + `doc-audit-protocol.md` Contract no longer contradicts the agent
110
+ core; qa-sentinel bundle `gate_logs` demoted to context-only (own-tier gates always re-run);
111
+ `build-review-bundle.mjs` diff scoped to `--may-edit` (multi-card batches no longer leak
112
+ prior cards into card N's bundle/docinv; `new2.js` implement brief mirrors the scoping);
113
+ `new-card-review.js` + the 2.5x delegation thread `reviewBundlePath` into every brief;
114
+ Phase 2.55 pre-5.0 fallback uses `git diff "$TRUNK...HEAD"` (bare `git diff` post-commit is
115
+ vacuous); cap-and-handoff checkpoint-missing branch defined; `/ui-implement`-delegated cards
116
+ explicitly run 7c–11c; PASS-fast Own-Doc Closure claim corrected; "rule 8" pointers
117
+ re-anchored to the renumbered Post-Intervention Coherence rule 7 (prd-card-writer, upgrade
118
+ doc, new2-resolve comment).
119
+ - **FIXED (LOW)** — `doc-invariants.mjs` evaluates `documentation_impact` and `canonical_docs`
120
+ independently; deferral KEEP list re-includes `balanced`; stale `coding-standards.md`
121
+ cross-refs to the removed coder H2 updated; `${paths.references_dir}` literals in
122
+ `doc-audit-protocol.md`.
123
+ - Skills: `new` 2.0.1, `new2` 1.4.1 (per-skill CHANGELOGs). Codex parity: portable — prose +
124
+ pure-Node scripts, no Claude-only primitive added; the `/codexreview` contract keys are
125
+ optional and ignored by pre-5.0 readers.
126
+
8
127
  ## [5.0.0] - 2026-07-03
9
128
 
10
129
  **The agent-spine major.** Measured driver (1,934 subagent runs / 191 sessions on the
package/README.md CHANGED
@@ -83,7 +83,7 @@ No additional activation steps needed — once installed, Claude Code (and Codex
83
83
  ### Core Protocol
84
84
 
85
85
  - **AGENTS.md**: Mandatory coordination rules (MUST/SHOULD/OPTIONAL)
86
- - **agents/**: 28 domain modules (architecture, workflows, testing, security, card-schema, i18n-protocol, return-contract-protocol, runtime-portability-protocol, component-manifest-schema, etc.)
86
+ - **agents/**: 33 domain modules (architecture, workflows, testing, security, card-schema, i18n-protocol, return-contract-protocol, runtime-portability-protocol, component-manifest-schema, research-protocol, etc.)
87
87
  - **Routing**: If you touch X, read Y - minimize context loading
88
88
 
89
89
  ### AI Agents (32 specialized agents)
@@ -213,7 +213,7 @@ Skills always-ask when required keys are missing — never silently default.
213
213
  never overwrites your file. Full guide:
214
214
  [`framework/docs/PROJECT-CONFIGURATION.md`](framework/docs/PROJECT-CONFIGURATION.md).
215
215
 
216
- ### Skills (41 portable skills)
216
+ ### Skills (42 portable skills)
217
217
 
218
218
  Skills live under `.claude/skills/` and are auto-discovered by Claude Code. Every
219
219
  skill is **versioned** (`version:` in frontmatter) and ships a per-skill
@@ -224,7 +224,7 @@ Bundled skills:
224
224
  - **Code quality**: `skill-creator`, `find-skills`, `webapp-testing`, `playwright-skill`, `lsp-bootstrap` (v3.10.0), `graphify-bootstrap` (v4.21.0 — code knowledge graph), `graph-align` (v4.21.0 — doc↔graph alignment), `toolchain-bootstrap` (v4.41.0 — curated dev toolchain), `e2e-review` (v3.18.0)
225
225
  - **Design**: `frontend-design`, `ui-design`, `ui-implement` (v4.82.0 — implement an approved mockup end-to-end + self-verify fidelity; the mockup→code playbook SSOT, delegated from `/new`), `motion-design`, `gamification-design`, `design-system-init` (v3.11.0 — bulk registry bootstrap/upgrade), `ds-new` (v4.69.0 — single-element guided creation: one component or token, reuse-first → optional scaffold → document + register + govern + verify; the on-the-fly twin of `design-system-init`), `ds-edit` (v4.70.0 — deliberate edit of one existing element: resync / extend-variant / breaking / re-govern; regenerates the spec preserving agentic fields + prose, same canonical template), `ds-render` (v4.76.0 — render primitives in isolation to PNG via Storybook+Playwright), `design-sync` (v4.76.0 — mirror the registry to its Claude Design satellite), `ds-handoff` (v4.79.0 — field-level 1:1 Claude Design handoff brief: grounds every screen's fields in the real data schemas + coverage-gates before emitting; the SSOT for the Claude Design prompt, delegated from `/prd`)
226
226
  - **Product**: `seo-audit`, `copywriting`, `api-design-principles`
227
- - **Knowledge**: `doc-writing-for-rag`, `capture` (LLM wiki overlay)
227
+ - **Knowledge**: `doc-writing-for-rag`, `capture` (LLM wiki overlay), `research` (v5.1.0 — routed research over the reusable research library: profile + source-matrix routing, reuse pre-flight, `senior-researcher` fan-out, matrix growth loop)
228
228
  - **Internationalization**: `i18n` (v4.52.0 — audit the context registry + context-aware translation into native locale files), `i18n-adopt` (v4.52.0 — one-shot migration that externalizes all hardcoded strings on an existing codebase); both gated on `features.has_i18n`
229
229
  - **Integration**: `kie-ai`, `remotion-best-practices`
230
230
  - **Framework**: `baldart-push` (upstream contribution), `baldart-update` (v3.21.0 — agent-driven framework update), `overlay` (v3.19.0 — guided overlay author)
package/VERSION CHANGED
@@ -1 +1 @@
1
- 5.0.0
1
+ 5.1.0
@@ -7,6 +7,74 @@ per-item agent merge, the doctor probes, and the discovery hooks — like
7
7
 
8
8
  Formato: [Keep a Changelog](https://keepachangelog.com/) · per-agent SemVer.
9
9
 
10
+ ## [senior-researcher v2.0.0] — 2026-07-03 (framework v5.1.0)
11
+
12
+ The research-layer restructuring (profiles + library + source matrix). Pre-5.1
13
+ monolith is implicitly `1.x`. Every normative rule survives — inline as a
14
+ 1-line binding rule, in the new `agents/research-protocol.md` (SECTION=
15
+ profiles|library|reuse|sources), or in `agent-operating-protocol.md`.
16
+
17
+ - `version:`/`effort:` frontmatter added; `description` trimmed to 2 lines
18
+ (the 4 inline examples — ~450 words — were paid by the ORCHESTRATOR's
19
+ context every session).
20
+ - **`model: sonnet` KEPT** (maintainer decision); the REGISTRY model-tier row
21
+ is corrected (it claimed "opus — always opus", contradicting the frontmatter
22
+ since the initial commit) — override to opus stays at the orchestrator's
23
+ discretion for `PROFILE=deep`.
24
+ - NEW `## Profile Dispatch`: `PROFILE=<decision|deep|compare|regulatory>`
25
+ spawn token per `research-protocol.md SECTION=profiles`; absent → `deep`
26
+ (legacy semantics). The deep iterative loop is opt-in via `DEPTH=<1..3>`
27
+ (default 1 = today's cost) so legacy no-token spawns are unaffected.
28
+ - NEW `## Research Library`: reuse pre-flight (`REUSE: FULL_REUSE|DELTA|NEW`,
29
+ anti-false-reuse guard), total delivery-path resolution (prompt path →
30
+ `${paths.research_dir}` → `${paths.docs_dir}`), frontmatter-as-source-of-
31
+ truth filing.
32
+ - NEW `## Source Matrix`: SOURCES.md resolution + `SOURCE_MATRIX_CANDIDATE`
33
+ growth-loop block (run-local evidence only).
34
+ - NEW `## Operating Protocol` cites: `SECTION=injection-guard` (this agent
35
+ reads more untrusted web content than any other — it previously had NO
36
+ injection guard), `SECTION=tool-budget` (saturation stop), `SECTION=memory`.
37
+ - Return Contract updated: + `REUSE:` line; on an orchestrator-preallocated
38
+ path a file is ALWAYS written (FULL_REUSE → pointer stub) so file-exists
39
+ polling never times out.
40
+ - FIRST MESSAGE TEMPLATE scoped to interactive direct invocation only
41
+ (`BACKGROUND_RUN=true` OR any orchestrator `PROFILE=` token skips it).
42
+
43
+ **Heading map (old → new) for consumer overlays**:
44
+
45
+ | Old H2 (pre-5.1) | Now |
46
+ |---|---|
47
+ | `## CRITICAL CONSTRAINT: AI-READABLE + LIMITED CONTEXT` | constraints folded into `## AUDIENCE` + `## OUTPUT — PROFILE=deep` (AI-readable block) |
48
+ | `## OUTPUT (DELIVERABLE)` | `## OUTPUT — PROFILE=deep (§0–§11, VERBATIM contract)` |
49
+ | `## NON-NEGOTIABLE QUALITY BAR` | same name, `(every profile)` suffix; evidence labels + insufficient-evidence rules folded in |
50
+ | `## WORKFLOW (MANDATORY — FOLLOW IN ORDER)` | same name — steps renumbered 1–8 (new step 2 = library pre-flight) |
51
+ | `## SEARCH LOG (REQUIRED IN §11 APPENDIX)` | `## SEARCH LOG (deep profile, §11)` |
52
+ | `## EVIDENCE STRENGTH LABELS` / `## WHAT TO DO WHEN EVIDENCE IS INSUFFICIENT` | folded into `## NON-NEGOTIABLE QUALITY BAR (every profile)` |
53
+ | `## UPDATE AGENT MEMORY` + `# Persistent Agent Memory` boilerplate tail | compressed under `# Persistent Agent Memory` + module `SECTION=memory` |
54
+
55
+ ## [coder v2.0.1] · [doc-reviewer v2.0.1] · [qa-sentinel v2.0.1] — 2026-07-03 (framework v5.0.1)
56
+
57
+ Adversarial-verification fixes on the 3-layer restructuring (no H2 moved — overlays unaffected):
58
+
59
+ - **coder**: `vercel-react-best-practices` un-slotted (it applies to ANY React stack, and no
60
+ config flag can express "React non-Next" — a structural normative loss for those consumers;
61
+ "skill absent → skip silently"). The NEVER-ad-hoc-browser-scripts rule hoisted OUT of
62
+ `{{#e2e_playwright}}` as an unconditional line (it was universal pre-5.0; a Playwright
63
+ consumer with a stale `stack.testing.e2e` silently lost it); the `playwright-skill` link
64
+ itself stays slotted.
65
+ - **doc-reviewer**: two per-card cited exceptions restored from the audit module —
66
+ `SECTION=topological-generation` (multi-file doc passes generate leaf→root; was per-card in
67
+ v4.99.0 but unreachable behind the module's "per-card NEVER" contract) and
68
+ `SECTION=schema-drift` (changed field SET on a documented payload → `SCHEMA_DRIFT`/
69
+ `ORPHAN_FIELD`, diff-driven as in v4.99.0). `doc-audit-protocol.md` Contract reworded to
70
+ name the cited exceptions instead of contradicting the agent core.
71
+ - **qa-sentinel**: review-bundle `gate_logs` demoted to CONTEXT ONLY (`files_changed` stays
72
+ authoritative for scope) — own-tier gates are always re-executed, never cited from a stale
73
+ Phase-2 log; restored the v4.99.0 one-liners "never claim a gate ran when it did not" and
74
+ "never invent your own classification".
75
+ - (pointer-only, no version bump) **prd-card-writer**: "code-reviewer rule 8" re-anchored to
76
+ the renumbered rule 7 (Post-Intervention Coherence Check), by name.
77
+
10
78
  ## [coder v2.0.0] · [code-reviewer v2.0.0] · [doc-reviewer v2.0.0] · [plan-auditor v2.0.0] · [qa-sentinel v2.0.0] · [codebase-architect v2.0.0] · [ui-expert v2.0.0] · [skill-improver v2.0.0] — 2026-07-03 (framework v5.0.0)
11
79
 
12
80
  **The 3-layer restructuring** (core inline + shared modules + install-time slots).
@@ -40,7 +40,7 @@ Quick-reference for all custom agents. Use this to route tasks to the right spec
40
40
  | **prd-card-writer** | Product | Generate atomic backlog cards from approved PRD; `MODE: apply-findings` = fresh-context applier of audit findings to card YAML (spawned by /prd Step 6.9, sonnet override) | Card YAML, traceability, parallel groups | Yes | Backlog writing, dependency analysis |
41
41
  | **onboarding-architect-lead** | Product | Design/improve user onboarding experiences | Activation flows, experiments | No | Onboarding research, metrics |
42
42
  | **website-orchestrator** | Product | Coordinate multi-agent website development | Project orchestration | No | Phase management, quality gates |
43
- | **senior-researcher** | Research | Comprehensive research on technical topics | Evidence-based analysis | Yes | Web search, citations |
43
+ | **senior-researcher** | Research | Evidence-based research reports; pass `PROFILE=<decision\|deep\|compare\|regulatory>` (agents/research-protocol.md); reports land in the research library (paths.research_dir) with a reuse pre-flight | Evidence-based analysis, research library | Yes | Web search, citations, library reuse |
44
44
  | **marketing-conversion-strategist** | Marketing | Create high-converting copy and messaging | Positioning, CTAs, copy | No | Business interview, copywriting |
45
45
  | **seo-analytics-strategist** | Marketing | Define SEO strategy, metadata, analytics | GA4/GTM, schema markup | No | Keyword research, event planning |
46
46
  | **api-perf-cost-auditor** | DevOps | Analyze APIs for performance/cost bottlenecks | Backend optimization, scaling | No | Bottleneck detection, cost analysis |
@@ -127,7 +127,7 @@ Visual assets needed? --> visual-designer
127
127
  Animation specs? --> motion-expert
128
128
  ML/ranking/recommendation? --> hybrid-ml-architect
129
129
  Gamification/retention? --> hyper-gamification-designer
130
- Research a technical topic? --> senior-researcher
130
+ Research a technical topic? --> senior-researcher (pass PROFILE=; interactive channel: /research skill)
131
131
  Marketing copy/positioning? --> marketing-conversion-strategist
132
132
  SEO/analytics planning? --> seo-analytics-strategist
133
133
  API performance audit? --> api-perf-cost-auditor
@@ -208,7 +208,7 @@ Use this table when spawning agents via the `Task` tool. The `model` field in ea
208
208
  | **prd-card-writer** | opus | — (always opus, effort: high) | Card precision requires deep reasoning for 20+ fields, traceability, parallel groups |
209
209
  | **ui-expert** | opus | — (always opus) | Design quality requires highest capability |
210
210
  | **hybrid-ml-architect** | opus | — (always opus) | ML architecture is complex by nature |
211
- | **senior-researcher** | opus | — (always opus) | Research depth requires strongest model |
211
+ | **senior-researcher** | sonnet | opus at orchestrator's discretion for `PROFILE=deep` surveys | Web-native retrieval + synthesis sonnet is sufficient and fast; depth comes from the profile loop (`DEPTH=`), not the model |
212
212
 
213
213
  **Rules**: Never use haiku for any **named specialist agent** in the matrix above. Opus for code writing and creative/complex work. Sonnet for analysis, review, and documentation. `qa-sentinel` stays on sonnet even though it is a mechanical gate runner — its failure interpretation and SCOPED-vs-FULL tiering benefit from sonnet.
214
214
 
@@ -4,7 +4,7 @@ description: "Write, modify, or refactor production code. For features, bugs, an
4
4
  model: opus
5
5
  effort: high
6
6
  color: red
7
- version: 2.0.0
7
+ version: 2.0.1
8
8
  ---
9
9
 
10
10
  > **YOLO MODE**: All agents spawned via the Task tool MUST use `mode: "bypassPermissions"`. No exceptions.
@@ -219,17 +219,16 @@ Keep it simple. Write good code. Ask if unsure. Write it clean the first time.
219
219
 
220
220
  You MUST use these skills when applicable:
221
221
 
222
- {{#fw_nextjs}}
223
222
  ### `vercel-react-best-practices`
224
- React/Next.js performance patterns. When: writing React components, optimizing renders, async data, bundle size.
225
- {{/fw_nextjs}}
223
+ React performance patterns (any React stack, Next.js included). When: writing React components, optimizing renders, async data, bundle size. Skill not installed (non-React stack / no plugin) → skip silently.
226
224
  ### `frontend-design`
227
225
  Production-grade frontend code with high design quality. When: building new UI components or complex layouts.
228
226
  {{#deploy_vercel}}
229
227
  ### `vercel:deploy`
230
228
  Deploying to Vercel. When: the user requests deployment.
231
229
  {{/deploy_vercel}}
230
+ **Browser testing (unconditional)**: NEVER ad-hoc browser scripts or one-off `run.js` drivers — always the project's E2E test runner.
232
231
  {{#e2e_playwright}}
233
232
  ### `playwright-skill`
234
- E2E browser testing via Playwright Test CLI (`.spec.ts` in `tests/e2e/`, run via `npm run test:e2e`). When: testing new UI features, user flows, form submissions. NEVER ad-hoc scripts or `run.js` — always `npx playwright test`.
233
+ E2E browser testing via Playwright Test CLI (`.spec.ts` in `tests/e2e/`, run via `npm run test:e2e`). When: testing new UI features, user flows, form submissions — always `npx playwright test`.
235
234
  {{/e2e_playwright}}
@@ -3,7 +3,7 @@ name: doc-reviewer
3
3
  description: "Audit, review, and write project documentation. Use after feature implementation, bug-fix waves, or documentation cleanup. Owns documentation completeness and drift control."
4
4
  model: sonnet
5
5
  color: green
6
- version: 2.0.0
6
+ version: 2.0.1
7
7
  ---
8
8
  > **YOLO MODE**: All agents spawned via the Task tool MUST use `mode: "bypassPermissions"`. No exceptions.
9
9
 
@@ -163,11 +163,12 @@ When a SSOT exists, update it before any derived doc:
163
163
  - card DONE → `ssot-registry.md`
164
164
  - architecture/provider/auth/schema/contract decision → ADR
165
165
  - **changed validation constraint on a public contract** (`.max()`/`.min()`/length/regex/enum/default changed in a route handler, server action, or API schema) → the API reference **BODY** for that endpoint: verify the documented value EQUALS the code value — frontmatter freshness alone does not catch this. Mismatch = `API_BODY_CONSTRAINT_DRIFT`; you are the canonical writer, fix the body directly.
166
+ - **changed field SET on a documented payload** (field added/removed/renamed in a request/response schema whose endpoint doc exists) → update that doc's field table; a documented field gone from code = `SCHEMA_DRIFT`, a code field absent from the doc = `ORPHAN_FIELD`. Procedure: `agents/doc-audit-protocol.md SECTION=schema-drift` (per-card cited exception).
166
167
  {{#has_wiki_overlay}}
167
168
  - diff matches a synthesis page's `update_triggers` frontmatter (pages under `${paths.wiki_dir}/syntheses/`) → that synthesis page must be updated in the same change, or flagged `WIKI_SYNTH_STALE`. Pages without the field are exempt. See `agents/llm-wiki-methodology.md § Update triggers`.
168
169
  {{/has_wiki_overlay}}
169
170
  6. Check completeness of: data model docs, collection docs, API docs, UI docs, `product-scope.md` (business-scope changes only), `project-status.md`, ADRs when architecture changed, backlog notes, macro-feature SSOT cross-links.
170
- 7. **Write missing docs directly.** Prefer extending existing reference docs over new files unless the feature justifies a standalone doc. Type-specific checklists: `doc-reviewer-support/references/doc-checklists.md` **if it exists**, else the invariant table + the `doc-writing-for-rag` templates.
171
+ 7. **Write missing docs directly.** Prefer extending existing reference docs over new files unless the feature justifies a standalone doc. Type-specific checklists: `doc-reviewer-support/references/doc-checklists.md` **if it exists**, else the invariant table + the `doc-writing-for-rag` templates. Writing/updating MORE than one doc file in this pass → generate in dependency order, leaf→root (schemas/data-model before endpoints before UI/index), so no doc cites a sibling not yet updated — full procedure: `agents/doc-audit-protocol.md SECTION=topological-generation` (per-card cited exception).
171
172
  8. Update indexes when new docs are added.
172
173
  9. {{#has_wiki_overlay}}Assess wiki-overlay sync need (deliverable section H): new cross-cutting concept, renamed canonical, deprecated doc — note the need, do not dispatch any sync agent here.{{/has_wiki_overlay}} Wiki assessment is a no-op when `features.has_wiki_overlay: false` — skip section H with a one-line note.
173
174
  10. Report what was checked, added, fixed, and deferred — but see Own-Documentation Closure: an own-doc may NOT appear in the "deferred" bucket.
@@ -264,7 +264,7 @@ exception**: the LIGHT branch (b) above, a strictly UI-presentational card (`are
264
264
  logic/ui split pair (e.g. a `…-submit-ui` card whose logic lives in its `…-submit-logic`
265
265
  sibling): reviewing a pixels-only diff at Codex-`full` depth is waste, and the design-system
266
266
  safety net still fires regardless of profile (a `light` card keeps its per-card code-review —
267
- since v4.18.0 a per-card Codex finder + `code-reviewer` FP-gate — plus `code-reviewer` rule 8 /
267
+ since v4.18.0 a per-card Codex finder + `code-reviewer` FP-gate — plus `code-reviewer`'s Post-Intervention Coherence check (DS rule 7) /
268
268
  the registry-first DS cascade, and is covered by the batch-wide Final FULL gate). Any
269
269
  doubt — a hint of logic, state, data binding, a new/modified primitive, or `areas` beyond
270
270
  `[ui]` — disqualifies branch (b): the card stays `balanced`. When in doubt between `balanced`
@@ -4,7 +4,7 @@ description: "RUN the mechanical quality gates on a change set and return a PASS
4
4
  model: sonnet
5
5
  color: pink
6
6
  memory: project
7
- version: 2.0.0
7
+ version: 2.0.1
8
8
  ---
9
9
 
10
10
  > **YOLO MODE**: All agents spawned via the Task tool MUST use `mode: "bypassPermissions"`. No exceptions.
@@ -23,10 +23,10 @@ Run mechanical quality gates fast, return a PASS/FAIL verdict, and get out of th
23
23
  ## Step 0: Always Start Here
24
24
 
25
25
  0. **Resolve the working directory.** A `Worktree path` in your prompt → `cd` into it FIRST; all git/lint/test/build commands run there. Field present but empty → HALT: `QA DONE — <CARD-ID> / Verdict: FAIL / worktree path provided but empty`. No field → current directory.
26
- 1. `git diff --name-only HEAD` for the actual change set (you read uncommitted work pre-commit). When the briefing carries a review bundle, its `files_changed` + `gate_logs` are authoritative — don't re-derive.
27
- 2. Read the authoritative `QA profile` from your prompt (`balanced` | `deep`) and map it via **Operating Modes**. The profile — NOT file count — selects the tier. Only allowed adjustment: `balanced → FULL` on risk drift (below). No profile in the prompt → default SCOPED and note it.
26
+ 1. `git diff --name-only HEAD` for the actual change set (you read uncommitted work pre-commit). When the briefing carries a review bundle, its `files_changed` is authoritative for SCOPE — don't re-derive it. Its `gate_logs` are CONTEXT ONLY (Phase-2 logs, possibly stale after later mutations): the gates YOUR tier owns you always execute yourself, and you never cite a bundle log as if it were your own run.
27
+ 2. Read the authoritative `QA profile` from your prompt (`balanced` | `deep`) and map it via **Operating Modes**. The profile — NOT file count — selects the tier. Only allowed adjustment: `balanced → FULL` on risk drift (below). No profile in the prompt → default SCOPED and note it — never invent your own classification.
28
28
 
29
- Never fabricate test results. Never assume what changed — read the diff. Do NOT read changed files to "understand scope" — that's code-reviewer's job. The ONLY files you read are the backlog card YAML and the git diff output.
29
+ Never fabricate test results — and never claim a gate ran when it did not (a SKIP is reported as SKIP). Never assume what changed — read the diff. Do NOT read changed files to "understand scope" — that's code-reviewer's job. The ONLY files you read are the backlog card YAML and the git diff output.
30
30
 
31
31
  ## Gate Command Resolution
32
32