akili-specs 2.4.2 → 2.5.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.
@@ -31,7 +31,7 @@ For all three modes:
31
31
  3. Ensure `docs/specs/general-setup/` exists.
32
32
  4. Ensure root `CLAUDE.md` exists or is enhanced.
33
33
  5. Ensure root `AGENTS.md` exists or is enhanced.
34
- 6. Ensure project-level `.agents/` exists with `leader.md`, `implementer.md`, and `reviewer.md` (see Step 7B).
34
+ 6. Ensure project-level `.agents/` exists with `leader.md`, `implementer.md`, `reviewer.md`, and `tester.md` (see Step 7B).
35
35
  7. Default behavior is to enhance existing project docs in place instead of creating parallel copies.
36
36
 
37
37
  The constitutional baseline must cover these files:
@@ -48,6 +48,7 @@ The constitutional baseline must cover these files:
48
48
  - `.agents/leader.md`
49
49
  - `.agents/implementer.md`
50
50
  - `.agents/reviewer.md`
51
+ - `.agents/tester.md`
51
52
 
52
53
  **Mode-specific drafting policy:**
53
54
 
@@ -301,9 +302,9 @@ This index is what keeps agent context inheritance working: agents load the root
301
302
 
302
303
  ---
303
304
 
304
- ### Step 8B: Scaffold the `.agents/` Triad
305
+ ### Step 8B: Scaffold the `.agents/` Personas
305
306
 
306
- Establish or upgrade the project-level `.agents/` directory that powers the AKILI multi-agent execution loop (Leader → Implementer → Reviewer used by `/akili-execute`).
307
+ Establish or upgrade the project-level `.agents/` directory that powers the AKILI multi-agent harness: the Leader → Implementer → Reviewer loop used by `/akili-execute`, and the Leader → Tester(s) harness used by `/akili-test`.
307
308
 
308
309
  Target layout:
309
310
 
@@ -312,23 +313,24 @@ Target layout:
312
313
  ├── .agents/
313
314
  │ ├── leader.md # Orchestration playbook, task tracking, .agents references
314
315
  │ ├── implementer.md # Coding guidelines, testing standards, design-token discipline
315
- └── reviewer.md # Spec conformance audit, design-token compliance, structured FAIL output
316
+ ├── reviewer.md # Spec conformance audit, design-token compliance, structured FAIL output
317
+ │ └── tester.md # Per-suite QA authoring/execution, bounded inner loop, PASS/FAIL/PRODUCT_BUG output
316
318
  ```
317
319
 
318
320
  **Source of truth for templates:**
319
321
 
320
322
  The packaged methodology ships default personas under `akili/templates/` inside the active tool's config directory:
321
323
 
322
- - Claude Code: `~/.claude/akili/templates/{leader,implementer,reviewer}.md`
323
- - OpenCode: `~/.config/opencode/akili/templates/{leader,implementer,reviewer}.md`
324
- - Antigravity: `~/.gemini/config/akili/templates/{leader,implementer,reviewer}.md`
324
+ - Claude Code: `~/.claude/akili/templates/{leader,implementer,reviewer,tester}.md`
325
+ - OpenCode: `~/.config/opencode/akili/templates/{leader,implementer,reviewer,tester}.md`
326
+ - Antigravity: `~/.gemini/config/akili/templates/{leader,implementer,reviewer,tester}.md`
325
327
 
326
- If the packaged templates are available, prefer copying them as the seed; otherwise draft equivalent personas inline using the structure documented in this command and the `/akili-execute` command.
328
+ If the packaged templates are available, prefer copying them as the seed; otherwise draft equivalent personas inline using the structure documented in this command and the `/akili-execute` and `/akili-test` commands.
327
329
 
328
330
  **Mode-specific scaffolding policy:**
329
331
 
330
- - **Brand-new (Seed Setup):** copy the three default templates verbatim into `.agents/`. Tailor only the project name and detected stack if known.
331
- - **Legacy (Discovery Setup):** copy the three default templates, then customize them based on the codebase scan — inject detected design-token paths, the test command, the lint command, framework conventions, and any directory boundaries discovered. The Reviewer persona in particular should know which `design.md` and `trd.md` paths to cite.
332
+ - **Brand-new (Seed Setup):** copy the four default templates verbatim into `.agents/`. Tailor only the project name and detected stack if known.
333
+ - **Legacy (Discovery Setup):** copy the four default templates, then customize them based on the codebase scan — inject detected design-token paths, the test command, the lint command, framework conventions, and any directory boundaries discovered. The Reviewer persona should know which `design.md` and `trd.md` paths to cite; the Tester persona should know the repo's real test runner and command.
332
334
  - **Active AKILI-SPECS (Safe Update):** **do not overwrite** existing `.agents/*.md` files. For each missing file, install the default template (customized to the detected stack). For each existing file, read it, identify gaps versus the current packaged template (e.g. missing rework-loop instructions, missing PASS/FAIL output contract, missing AKILI commit standard), and append a minimal upgrade block that preserves all existing custom instructions.
333
335
 
334
336
  **Required content per persona:**
@@ -336,6 +338,7 @@ If the packaged templates are available, prefer copying them as the seed; otherw
336
338
  - **`leader.md`** — orchestration sequence, rework loop with 3-attempt ceiling, structured FAIL handoff to the next Implementer spawn, `execution.md` audit-trail format, `tasks.md` status transitions, AKILI commit standard, Pivot Protocol escalation.
337
339
  - **`implementer.md`** — strict context alignment to constitution + spec, incremental focus (no scope creep), aesthetics and design-token compliance from `docs/ux-ui/design.md`, verification rigor (must run the task's verification command before reporting), structured completion report.
338
340
  - **`reviewer.md`** — read-only role, audit checklist (requirement conformance, design-token compliance, technical compliance, stability), structured PASS/FAIL output where every FAIL item lists *Discovered Issue*, *Violated Rule*, and *Remediation Suggestion*.
341
+ - **`tester.md`** — single-suite scope (backend unit, frontend unit, integration, or E2E), thin per-suite context, explicit coverage of negative constraints (`BUT it must NOT`) and strict validations (`AND IT MUST`), bounded self-correction inner loop (max 3), distinction between a test defect (fix the test) and a product defect (keep the test red, report `PRODUCT_BUG`), and structured `PASS`/`FAIL`/`PRODUCT_BUG` output with a per-scenario coverage slice. Author ≠ tester: prefer a different model than the Implementer.
339
342
 
340
343
  **Cross-tool compatibility:**
341
344
 
@@ -367,7 +370,9 @@ project guides so the project does not depend on the package's `docs/` after ins
367
370
  T6 Multimodal) with one-line definitions.
368
371
  3. The phase→tier mapping for the real AKILI phases, with the `/akili-execute` triad split into
369
372
  Leader (T5), Implementer (T2), and Reviewer (T3), and an explicit note that the Reviewer model
370
- must differ from the Implementer model.
373
+ must differ from the Implementer model. `/akili-test` is likewise split into its Leader (T5,
374
+ orchestration) and Tester(s) (T2, test authoring), with a note to prefer a Tester model different
375
+ from the Implementer (author ≠ tester).
371
376
  4. The editable model registry table with columns `Tier | Claude Code | OpenCode | Fallback`.
372
377
  Fill the Claude Code column for the user's plan (e.g. PRO: Opus reserved for T1/T3, Sonnet as the
373
378
  T2/T4/T6 workhorse, Haiku for T5). Fill the OpenCode column from the user's confirmed roster; if
@@ -410,4 +415,4 @@ Ask the user whether to approve or request changes. If changes are requested, re
410
415
 
411
416
  ## Outcome
412
417
 
413
- At the end of `/akili-constitution`, the repository should have a project-level baseline that future `/akili-specify`, `/akili-execute`, `/akili-validate`, and `/akili-test` work can rely on without guessing the structure or conventions. The `.agents/` triad must be in place so that `/akili-execute` can run the Leader → Implementer → Reviewer rework loop without falling back to inline personas. The root guides must also carry a `## Model Routing` registry (Step 8C) so each phase runs on a model matched to its demand, with the Reviewer on a different model than the Implementer.
418
+ At the end of `/akili-constitution`, the repository should have a project-level baseline that future `/akili-specify`, `/akili-execute`, `/akili-validate`, and `/akili-test` work can rely on without guessing the structure or conventions. The `.agents/` personas must be in place so that `/akili-execute` can run the Leader → Implementer → Reviewer rework loop and `/akili-test` can run the Leader → Tester(s) harness without falling back to inline personas. The root guides must also carry a `## Model Routing` registry (Step 8C) so each phase runs on a model matched to its demand, with the Reviewer on a different model than the Implementer.
@@ -67,13 +67,46 @@ Do not create `requirements.md`, `design.md`, or `tasks.md` in this command unle
67
67
  4. Read nearby or related specs under `docs/specs/`.
68
68
  5. **CodeGraph over full reads:** If `.codegraph/` exists, use `codegraph_search` and `codegraph_context` to inspect relevant code paths instead of reading full source files or using generic `grep`/`glob`. This drastically reduces input tokens.
69
69
 
70
- ### Step 1: Clarify Intent, Sources & Scope Chunking
70
+ ### Step 1: Classify Request Type & Route
71
71
 
72
- Before diving into the problem, ask the user about the source of the requirements and any visual designs:
72
+ `/akili-propose` is the single entry point for change work. Before clarifying details, **classify the request** so it takes the right track. Infer the type from the user's wording; if it is ambiguous, ask **one** short question: *"Is this a bug to fix, a new feature/change, or a trivial cosmetic tweak?"*
73
+
74
+ | Type | Signals | Route |
75
+ |---|---|---|
76
+ | **Trivial** | Cosmetic/copy-only, one-line, a color/text/label tweak using existing tokens | Recommend `/akili-quick <name>` instead of a full proposal. Stop here unless the user still wants a proposal. |
77
+ | **Feature / Change** | An intent ("I want X", "add/support/enable Y") | Continue with the standard proposal flow below. |
78
+ | **Bug** | A symptom ("X is broken/failing/wrong", "regression", "error", "used to work") | Continue with the proposal flow, but follow the **Bug Track** (diagnosis-first) described below. |
79
+
80
+ The proposal `frontmatter`/header should record the detected type as `Type: Bug | Change | Trivial` in Document Control so `/akili-specify` and `/akili-execute` inherit it. For bugs, prefer the `bugfix/<name>` spec path taxonomy.
81
+
82
+ **Bug Track (diagnosis before fix):** A bug is not a feature — you start from a symptom, not an intent, so you must understand *why* before proposing *how*. For a bug:
83
+
84
+ - Load the `systematic-debugging` skill.
85
+ - Capture the **observed symptom**, concrete **reproduction steps**, and the **confirmed root cause** (not a guess) before recommending any fix.
86
+ - Assess **impact/scope** (what else the root cause touches).
87
+ - Recommend a **fix strategy** and route it by size: a genuinely cosmetic one-liner → `/akili-quick`; anything with logic, data, or a behavior change → `/akili-specify` (Lite) in Bug Mode, which requires a regression test.
88
+ - These go in the proposal's **Bug Diagnosis** section (Step 2), which replaces the Requirement Delta Preview for bugs.
89
+
90
+ ### Step 1.1: Clarify Intent, Sources & Scope Chunking
91
+
92
+ For **Feature / Change** and **Bug** requests, clarify the details. Ask the user about the source of the requirements and any visual designs:
73
93
 
74
94
  1. **Requirement Source:** Ask if they have a **Jira ticket** (if they do, suggest using the **Jira MCP** to automatically extract the description, acceptance criteria, and comments created by the BA) or if they prefer to paste/write the context directly.
75
95
  2. **Visual Designs / Mockups:** Ask if there is a **Figma link** or any visual mockup available. If they provide a Figma URL, suggest using the **Figma MCP** to extract the design details, components, and layout information.
76
96
 
97
+ #### Mockup Fallback (No Visual Input)
98
+
99
+ If the change has any UI surface AND the user provides **no** Figma link, image, or existing design, offer to generate a mockup directly in the agent before specifying. This is **opt-in and recommended** — never mandatory. The user can always decline and continue without a visual.
100
+
101
+ - Recommend generating the mockup with the `stitch-design` skill (Stitch MCP), which produces high-fidelity HTML + screenshots and can synthesize a `.stitch/DESIGN.md` source of truth.
102
+ - If the user accepts, load `stitch-design` and generate the mockup for the primary screens/flows in scope. Persist the artifacts under the spec so `/akili-specify` can consume them:
103
+ - Save the generated screens under `docs/specs/$SPEC_PATH/mockup/` (or reference the `.stitch/designs` location if the skill writes there).
104
+ - Record the exact paths and any `.stitch/DESIGN.md` reference in the proposal's **Visual Reference** section (see Step 2).
105
+ - If the user declines, note "no visual reference" in the proposal and continue. Do not block the proposal on a mockup.
106
+ - If Stitch MCP is unavailable, still offer to sketch a lightweight self-contained HTML mockup saved under `docs/specs/$SPEC_PATH/mockup/` so intent stays reviewable.
107
+
108
+ A generated mockup counts as **visual design context** for `/akili-specify`, exactly like a Figma link would.
109
+
77
110
  Use `brainstorming` and, when helpful, `product-manager-toolkit` to clarify:
78
111
 
79
112
  - problem being solved
@@ -95,23 +128,63 @@ Ask focused questions only when the proposal would otherwise depend on unstable
95
128
 
96
129
  Create a concise proposal with this structure:
97
130
 
98
- 1. Document Control
131
+ 1. Document Control (include `Type: Bug | Change | Trivial`)
99
132
  2. Intent
100
133
  3. Problem / Current Behavior
101
134
  4. Proposed Outcome
102
135
  5. Scope
103
136
  6. Non-Goals
104
137
  7. Affected Users, Systems, And Specs
105
- 8. Requirement Delta Preview
106
- 9. Approach Options
107
- 10. Recommended Approach
108
- 11. Risks, Dependencies, And Open Questions
109
- 12. Success Criteria
110
- 13. Next Step
138
+ 8. Visual Reference
139
+ 9. **Bug Diagnosis** (Bug track) *or* **Requirement Delta Preview** (Change track)
140
+ 10. Approach Options
141
+ 11. Recommended Approach
142
+ 12. Risks, Dependencies, And Open Questions
143
+ 13. Success Criteria
144
+ 14. Next Step
145
+
146
+ ### Visual Reference
147
+
148
+ Capture whatever visual source backs this change so `/akili-specify` can convert it into requirements, design, and tasks. Use the state that applies:
149
+
150
+ ```markdown
151
+ ## Visual Reference
111
152
 
112
- ### Requirement Delta Preview
153
+ - Source: [Figma | Generated mockup (stitch-design) | Self-contained HTML mockup | None]
154
+ - Location: <e.g. Figma URL, docs/specs/<spec-path>/mockup/, .stitch/designs, or .stitch/DESIGN.md>
155
+ - Notes: screens/flows covered, or why no visual is needed (e.g. backend-only change).
156
+ ```
157
+
158
+ When a mockup was generated during Step 1, list the concrete artifact paths here so downstream commands treat it as approved visual design context.
113
159
 
114
- When the change affects existing behavior, include a lightweight preview using these sections where relevant:
160
+ ### Bug Diagnosis (Bug track only)
161
+
162
+ For a **Bug** request, replace the Requirement Delta Preview with a diagnosis produced using the `systematic-debugging` skill. Do not propose a fix until the root cause is confirmed — a fix built on a guessed cause is the top source of non-fixes and regressions.
163
+
164
+ ```markdown
165
+ ## Bug Diagnosis
166
+
167
+ ### Observed Symptom
168
+ - What is broken, from the user's perspective (error, wrong output, crash, regression).
169
+
170
+ ### Reproduction Steps
171
+ - Deterministic steps to reproduce (environment, inputs, expected vs actual).
172
+
173
+ ### Root Cause (confirmed)
174
+ - The actual underlying cause, confirmed by investigation — not a hypothesis. Cite the code path / commit / condition responsible.
175
+
176
+ ### Impact & Scope
177
+ - What else the same root cause affects; blast radius; data integrity or security implications.
178
+
179
+ ### Fix Strategy
180
+ - The smallest safe correction, and the route: `/akili-quick` only if the fix is genuinely cosmetic with no logic; otherwise `/akili-specify` (Lite) in Bug Mode, which requires a regression test (red before the fix, green after).
181
+ ```
182
+
183
+ If the root cause cannot be confirmed yet, say so explicitly and keep the proposal open for further investigation rather than proposing a speculative fix.
184
+
185
+ ### Requirement Delta Preview (Change track only)
186
+
187
+ When a **Feature / Change** affects existing behavior, include a lightweight preview using these sections where relevant:
115
188
 
116
189
  ```markdown
117
190
  ## Requirement Delta Preview
@@ -137,22 +210,29 @@ For non-trivial work, include 2 or 3 options with trade-offs. Recommend one opti
137
210
 
138
211
  ### Next Step
139
212
 
140
- End the proposal with the exact next command:
213
+ End the proposal with the exact next command, matched to the detected type:
141
214
 
142
215
  ```text
143
216
  /akili-specify $SPEC_PATH
144
217
  ```
145
218
 
219
+ - **Change track:** `/akili-specify $SPEC_PATH` (standard depth for the work).
220
+ - **Bug track:** `/akili-specify $SPEC_PATH` in **Bug Mode** — specify converts the confirmed root cause into a fix plan and a mandatory regression test. If the diagnosis showed the fix is genuinely cosmetic with no logic, recommend `/akili-quick <name>` instead.
221
+ - **Trivial track:** the request should not have reached a full proposal — recommend `/akili-quick <name>`.
222
+
146
223
  ## Review Checklist
147
224
 
148
225
  Before presenting the proposal, verify:
149
226
 
150
227
  - [ ] The problem is clear.
228
+ - [ ] The request type (Bug / Change / Trivial) is detected and recorded in Document Control.
229
+ - [ ] For a bug: reproduction steps and a **confirmed** root cause are documented (not a guess).
151
230
  - [ ] Scope and non-goals are explicit.
152
231
  - [ ] The proposed outcome is behavior-focused.
153
232
  - [ ] Affected specs or code areas are listed.
233
+ - [ ] The Visual Reference records the design source (Figma, generated mockup, or none) with its location.
154
234
  - [ ] Risks and open questions are visible.
155
- - [ ] The next command uses the resolved spec path.
235
+ - [ ] The next command matches the detected type (specify, specify Bug Mode, or quick).
156
236
 
157
237
  ## Report To User
158
238
 
@@ -160,8 +240,10 @@ Generate a short, easy-to-understand summary (summary facil de entender de lo qu
160
240
 
161
241
  1. proposal path
162
242
  2. resolved spec path
163
- 3. recommended approach
164
- 4. main risks or open questions
165
- 5. next command to run after approval
243
+ 3. detected request type (Bug / Change / Trivial)
244
+ 4. recommended approach (for a bug: the confirmed root cause and fix strategy)
245
+ 5. visual reference status (Figma, generated mockup with its path, or none)
246
+ 6. main risks or open questions
247
+ 7. next command to run after approval (matched to the type)
166
248
 
167
249
  Ask whether to approve the proposal, revise it, or stop.
@@ -0,0 +1,125 @@
1
+ ---
2
+ description: Fast-track a trivial, low-risk change (copy edit, color tweak, small style/text change) with minimal traceability and automatic escalation when it is not actually trivial.
3
+ ---
4
+
5
+ # Fast-Track a Trivial AKILI-SPECS Change
6
+
7
+ Make a small, low-risk change in a single step — without generating the full `requirements.md` / `design.md` / `tasks.md` / `execution.md` / `test-report.md` / `validation-report.md` set — while still preserving AKILI's spec-to-code traceability through a `[SPEC:quick/<name>]` commit and a one-line log entry.
8
+
9
+ This command exists for changes that are genuinely trivial: change a button color, fix a title's text, add a paragraph, adjust a label, tweak spacing. It is **not** a shortcut for real features, bugfixes with logic changes, or anything touching data, API, auth, or shared contracts. When a change turns out to be bigger than it looked, this command **stops and escalates** to the proper flow.
10
+
11
+ > **Recommended model tier:** T2 Coder (a small, direct edit + verification). See the `## Model Routing` registry in the project's `AGENTS.md` / `CLAUDE.md`. No deep-reasoning tier is required for a trivial change.
12
+
13
+ ## Usage
14
+
15
+ ```
16
+ /akili-quick <short-change-name> [free-text description of the change]
17
+ ```
18
+
19
+ **Examples:**
20
+
21
+ - `/akili-quick login-button-color make the primary login button use the brand accent token`
22
+ - `/akili-quick hero-title fix the typo in the homepage hero title`
23
+ - `/akili-quick pricing-paragraph add a short paragraph under the pricing table explaining the annual discount`
24
+
25
+ ## Arguments
26
+
27
+ - `$ARGUMENTS` — a short kebab-case change name, optionally followed by a free-text description.
28
+ - The first token is the change name → the traceability slug is `quick/<change-name>`.
29
+ - The rest is the change description. If no description is given, ask the user for one before touching code.
30
+
31
+ ---
32
+
33
+ ## Triviality Gate (run FIRST)
34
+
35
+ Before making any edit, confirm the change qualifies as trivial. A change is eligible ONLY if **all** of these hold:
36
+
37
+ - **Cosmetic or copy-only:** text/label/content edits, color/spacing/style-token tweaks, static markup additions.
38
+ - **No behavior change:** no new or modified logic, control flow, conditionals, state, or side effects.
39
+ - **No data / API / auth / contract change:** no schema, endpoint, request/response shape, permission, or shared-package surface change.
40
+ - **Small and local:** roughly **≤ ~20 LOC** and confined to **one component/file** (or a couple of tightly related files).
41
+ - **Design-token safe:** any color/spacing/typography change uses an existing approved token from `docs/ux-ui/design.md` — not a new hardcoded value.
42
+
43
+ ### Automatic Escalation
44
+
45
+ If the change fails **any** gate criterion, do **not** fast-track it. Stop and recommend the right entry point:
46
+
47
+ - Small but with logic, or a real bugfix → `/akili-specify <spec-path>` in **Lite** depth.
48
+ - A **bug** (something is broken, not just a cosmetic edit) whose fix touches logic or behavior → `/akili-propose <name>` so the root cause is diagnosed first (Bug Track), then `/akili-specify` (Lite) in Bug Mode with a mandatory regression test. A purely cosmetic bug (e.g. a visible typo) may stay in `/akili-quick`.
49
+ - Non-trivial, risky, cross-cutting, or uncertain scope → `/akili-propose <change-name>` first.
50
+ - Introduces a **new** design token or visual pattern not in `docs/ux-ui/design.md` → route through `/akili-propose` (Visual Reference) or `/akili-specify` so the token is designed, not improvised.
51
+
52
+ State clearly which criterion failed and which command to run instead. Never silently downgrade a real change into a quick edit.
53
+
54
+ ---
55
+
56
+ ## Behavior
57
+
58
+ ### Step 0: Load Minimal Context
59
+
60
+ Keep context small — this is a trivial change, not a full spec run.
61
+
62
+ 1. Read only what the change needs:
63
+ - the target file(s) for the change
64
+ - `docs/ux-ui/design.md` **only if** the change involves a color, spacing, typography, or other design token (to use the approved token)
65
+ - root `CLAUDE.md` / `AGENTS.md` only if repo conventions are unclear for the edit
66
+ 2. **CodeGraph over full reads:** if `.codegraph/` exists, use `codegraph_search` to locate the exact symbol/component instead of scanning files.
67
+ 3. Do **not** read the full constitution set, `docs/prd.md`, or `docs/trd/trd.md` for a trivial edit.
68
+
69
+ ### Step 1: Confirm & Make the Change
70
+
71
+ 1. Restate the change in one sentence and confirm the target file(s) and the exact before/after (e.g. old hex/token → new token, old text → new text). If the description is ambiguous, ask one focused question — do not guess.
72
+ 2. Apply the smallest possible edit that satisfies the request. No refactors, no adjacent "while I'm here" cleanups, no scope creep.
73
+ 3. Preserve all unrelated code, comments, and formatting.
74
+
75
+ ### Step 2: Verify
76
+
77
+ 1. Run the lightest applicable check for the change:
78
+ - a lint / type-check / build for the touched file(s), or
79
+ - the component's existing test if one already covers the surface, or
80
+ - a clear manual verification note when no automated check is practical (e.g. "renders the hero title as 'X'").
81
+ 2. Do **not** author a new test suite here. If the change genuinely needs new test coverage, that is a signal it is not trivial → escalate per the gate.
82
+
83
+ ### Step 3: Record Traceability & Commit
84
+
85
+ Preserve spec-to-code traceability with the minimum footprint:
86
+
87
+ 1. Append a **one-line entry** to `docs/specs/quick/quick-log.md` (create the file with a header if it does not exist):
88
+
89
+ ```markdown
90
+ # Quick Changes Log
91
+
92
+ One-line record of trivial, fast-tracked changes made with `/akili-quick`.
93
+
94
+ | Date | Change | Files | Verification | Commit |
95
+ |---|---|---|---|---|
96
+ | 2026-07-19 | quick/login-button-color — use brand accent token on primary login button | src/components/LoginButton.tsx | `npm run lint` pass | [SPEC:quick/login-button-color] |
97
+ ```
98
+
99
+ 2. Commit with the AKILI spec-reference standard, using the quick slug:
100
+
101
+ ```bash
102
+ git commit -m "[SPEC:quick/<change-name>] <concise description>"
103
+ ```
104
+
105
+ Do **not** create `requirements.md`, `design.md`, `tasks.md`, `execution.md`, `test-report.md`, or `validation-report.md` for a quick change.
106
+
107
+ ### Step 4: Report to User
108
+
109
+ Generate a short, easy-to-understand summary (summary facil de entender de lo que se hizo) including:
110
+
111
+ 1. what changed (before → after) and the file(s) touched
112
+ 2. which design token was used, if applicable
113
+ 3. the verification performed and its result
114
+ 4. the traceability slug and commit prefix used
115
+ 5. a reminder that if follow-up work grows beyond a trivial tweak, it should move to `/akili-propose` or `/akili-specify`
116
+
117
+ ---
118
+
119
+ ## Rules
120
+
121
+ - Traceability is not optional: every quick change gets a `[SPEC:quick/<name>]` commit and a one-line log entry.
122
+ - Respect design tokens: never hardcode a new color/size to "just make it match"; use the approved token or escalate.
123
+ - One change per invocation. Batch unrelated tweaks into separate `/akili-quick` runs or a proper spec.
124
+ - When in doubt about triviality, escalate. A wrongly fast-tracked change costs more than a Lite spec.
125
+ - Keep the edit and the context minimal — this command's whole value is speed and low token cost.
@@ -45,6 +45,15 @@ Use the lightest useful depth:
45
45
 
46
46
  Lite mode still requires testable requirements, scenarios, and done criteria.
47
47
 
48
+ ### Bug Mode
49
+
50
+ When the spec is a **bug** — the proposal's Document Control says `Type: Bug`, the spec path is `bugfix/*`, or the user frames it as a defect — specify runs in **Bug Mode** on top of the chosen depth (usually Lite):
51
+
52
+ - Treat the proposal's **Bug Diagnosis** (confirmed root cause + reproduction) as the source of truth. If no proposal exists, first confirm the root cause with the `systematic-debugging` skill before writing the fix plan — do not specify a fix for a guessed cause.
53
+ - Frame requirements around the **corrected behavior**, with a scenario that encodes the exact failing case from the reproduction steps.
54
+ - **A regression test is mandatory.** At least one task must add a test that reproduces the bug — **red before the fix, green after** — and the requirement's scenario must map to it. This is non-negotiable evidence that the bug is actually fixed and stays fixed.
55
+ - Keep the fix scoped to the root cause; do not fold unrelated cleanup into a bugfix.
56
+
48
57
  ## Behavior
49
58
 
50
59
  ### Step 0: Setup
@@ -60,7 +69,10 @@ Lite mode still requires testable requirements, scenarios, and done criteria.
60
69
  - `docs/trd/trd.md` (legacy fallback: `docs/detailed-design/detailed-design.md`)
61
70
  - The constitutional templates in `docs/specs/general-setup/` (`requirements.md`, `design.md`, `task.md`)
62
71
  - Package-level `CLAUDE.md` files if they exist
63
- 3. Read `docs/specs/$ARGUMENTS/proposal.md` if it exists.
72
+ 3. Read `docs/specs/$ARGUMENTS/proposal.md` if it exists. If it has a **Visual Reference** section, treat the referenced source as approved visual design context and load it:
73
+ - A Figma URL → use the Figma MCP when available.
74
+ - A generated mockup under `docs/specs/$ARGUMENTS/mockup/`, `.stitch/designs`, or a `.stitch/DESIGN.md` reference → read those artifacts (screens, HTML, design tokens) and use `stitch-design` to interpret them.
75
+ - Any mockup produced during `/akili-propose` counts as visual design context for the `Design Impact` steps below, exactly like a Figma link.
64
76
  4. Read nearby or dependent specs under `docs/specs/` that overlap with the requested path.
65
77
  5. Respect the repository's current package layout and naming conventions instead of assuming a fixed stack.
66
78
  6. **CodeGraph over full reads:** If `.codegraph/` exists, use `codegraph_search` and `codegraph_context` to inspect relevant code paths instead of reading full source files or using generic `grep`/`glob`. This drastically reduces input tokens.
@@ -108,7 +120,7 @@ Guidelines:
108
120
  - use measurable, testable language
109
121
  - separate goals from requirements
110
122
  - write behavior contracts, not implementation plans
111
- - **Design Impact:** IF the proposal includes Figma or visual design context, ensure UI states (loading, error, empty, success) and responsive behaviors are captured as explicit requirements.
123
+ - **Design Impact:** IF the proposal includes any visual design context (Figma, an agent-generated mockup, or a `.stitch/DESIGN.md` reference), ensure UI states (loading, error, empty, success) and responsive behaviors are captured as explicit requirements.
112
124
  - include concrete scenarios for key requirements using `GIVEN`, `WHEN`, `THEN`, and optional `AND`
113
125
  - make requirement strength explicit with `SHALL`, `MUST`, `SHOULD`, or `MAY` where useful
114
126
 
@@ -197,7 +209,7 @@ Guidelines:
197
209
  - extend existing architecture rather than replacing it
198
210
  - use current repo paths and package names
199
211
  - include UI/UX decisions when the feature affects screens, flows, or components
200
- - **Design Impact:** IF the proposal includes Figma or visual design context, break down the visual design into a clear Frontend Component Architecture (e.g., atomic components) and define the necessary Design Tokens (colors, typography).
212
+ - **Design Impact:** IF the proposal includes any visual design context (Figma, an agent-generated mockup, or a `.stitch/DESIGN.md` reference), break down the visual design into a clear Frontend Component Architecture (e.g., atomic components) and define the necessary Design Tokens (colors, typography). When the source is a generated mockup, derive the tokens from its artifacts (HTML/screens or `.stitch/DESIGN.md`).
201
213
  - tie design sections back to requirements explicitly
202
214
  - record meaningful trade-offs and rejected alternatives for non-trivial decisions
203
215
  - call out data, API, security, error-handling, observability, and rollback concerns when relevant
@@ -260,7 +272,8 @@ Task quality rules:
260
272
  - every task must reference the requirements it satisfies
261
273
  - every task must include a concrete verification command or manual check
262
274
  - tasks should explicitly address the negative constraints (`BUT it must NOT`) and strict validations (`AND IT MUST`) defined in their respective requirement scenarios
263
- - **Design Impact:** IF the proposal includes Figma or visual design context, ensure frontend tasks are atomic, focusing on specific UI components, layouts, styling, and states extracted from the design.
275
+ - **Bug Mode:** IF this is a bug, one task MUST add a regression test that reproduces the defect (red before the fix, green after) and reference the corrected-behavior requirement. Its verification is that the test fails on current code and passes after the fix.
276
+ - **Design Impact:** IF the proposal includes any visual design context (Figma, an agent-generated mockup, or a `.stitch/DESIGN.md` reference), ensure frontend tasks are atomic, focusing on specific UI components, layouts, styling, and states extracted from the design or mockup artifacts.
264
277
  - tasks should avoid broad instructions like "implement feature" without scoped subtasks
265
278
  - tasks may be grouped by phase, but dependencies must remain explicit
266
279
 
@@ -300,6 +313,7 @@ After all three documents are approved, verify:
300
313
  - [ ] Every task references requirements and design sections
301
314
  - [ ] Every task has clear done criteria and verification guidance that accounts for the negative scenarios
302
315
  - [ ] The task dependency graph has no circular dependencies
316
+ - [ ] For a bug (Bug Mode): the root cause is reflected in the requirements and at least one task adds a regression test (red before, green after)
303
317
  - [ ] The spec path matches the repo's chosen taxonomy under `docs/specs/`
304
318
  - [ ] Only real, available skills are referenced in tasks
305
319
 
@@ -4,9 +4,11 @@ description: Write and execute comprehensive automated unit/integration tests fo
4
4
 
5
5
  # Test AKILI-SPECS Implementation
6
6
 
7
- Run automated and, when needed, manual tests against a spec path's implementation. Produce `test-report.md` with results, requirement coverage, scenario traceability, and failures.
7
+ Run automated and, when needed, manual tests against a spec path's implementation using the AKILI **Leader → Tester(s)** multi-agent harness. Produce `test-report.md` with results, requirement coverage, scenario traceability, and failures.
8
8
 
9
- Testing should prove the behavior promised in `requirements.md`, not only increase test count.
9
+ In this command you act as the **Leader** (Orchestrator). You partition testing into per-suite units, delegate each unit to a focused **Tester** subagent, aggregate their structured reports, and assemble the final `test-report.md`. Testing should prove the behavior promised in `requirements.md`, not only increase test count.
10
+
11
+ > **Recommended model tier:** Leader on T5 Fast-Cheap (orchestration — writes no tests), each Tester on T2 Coder (test authoring + verification). See the `## Model Routing` registry in the project's `AGENTS.md` / `CLAUDE.md`. Prefer a Tester model that differs from the Implementer that wrote the code (author ≠ tester reduces confirmation bias).
10
12
 
11
13
  ## Usage
12
14
 
@@ -35,9 +37,41 @@ Create or update `docs/specs/$ARGUMENTS/test-report.md` with:
35
37
 
36
38
  ---
37
39
 
40
+ ## Multi-Agent Harness
41
+
42
+ The Leader delegates concrete test authoring to the **Tester** persona defined in the project's `.agents/` directory:
43
+
44
+ - `.agents/tester.md` — the persona used when delegating a single test suite (backend unit, frontend unit, integration, or E2E).
45
+
46
+ If `.agents/tester.md` is missing, run `/akili-constitution` first to scaffold it. Do not invent the persona inline — the constitution is the source of truth.
47
+
48
+ **Delegation mechanism by tool:**
49
+
50
+ - **Claude Code / OpenCode:** spawn a focused subagent (or sub-prompt context) seeded with `tester.md` plus the suite's context slice.
51
+ - **Google Antigravity:** invoke `invoke_subagent` (or the equivalent) using the prompt read from `.agents/tester.md`.
52
+
53
+ **Token discipline — thin context per Tester (this is the core saving):**
54
+
55
+ - Give each Tester **only its slice**: its assigned suite, the specific requirements + Given/When/Then scenarios that suite must prove, and the project's test command. Never hand a Tester the full `requirements.md`/`design.md`/`tasks.md` unless a scenario genuinely needs it.
56
+ - Each Tester's context is discarded when it finishes, so per-suite contexts never accumulate in one growing window.
57
+ - The Leader writes no tests itself unless the Deployment Rule below says to run inline, or a Tester exhausts its inner loop and the user approves a Leader fallback.
58
+
59
+ **Deployment Rule (how many Testers to spawn):**
60
+
61
+ | Situation | Action |
62
+ |---|---|
63
+ | Lite depth, or a single trivial suite (e.g. one bugfix test) | **Run inline** — the Leader authors it directly. Spawning a subagent would cost more tokens than the work saves. |
64
+ | Standard / Full depth with one substantial suite | Spawn **one** Tester for that suite. |
65
+ | Multiple suites that are **independent** (touch different domains/files — e.g. backend unit vs frontend unit vs E2E) | Spawn **one Tester per suite, in parallel**. |
66
+ | Multiple suites that **share files or fixtures** | Spawn Testers **sequentially** (or a single Tester covering them) to avoid conflicting writes. |
67
+
68
+ The Leader decides the count from the spec's depth and the independence of the suites — favor the fewest spawns that still keep each context small and each suite independent.
69
+
70
+ ---
71
+
38
72
  ## Behavior
39
73
 
40
- ### Phase 0: Load Context
74
+ ### Phase 0: Load Context (Leader)
41
75
 
42
76
  **Token Optimization (Prompt Caching):** To maximize prompt caching, always read the constitutional baseline documents FIRST and in the exact same order across all sessions before reading task-specific files.
43
77
 
@@ -52,47 +86,44 @@ Create or update `docs/specs/$ARGUMENTS/test-report.md` with:
52
86
  - `docs/specs/$ARGUMENTS/requirements.md`
53
87
  - `docs/specs/$ARGUMENTS/design.md`
54
88
  - `docs/specs/$ARGUMENTS/tasks.md`
55
- 3. Identify backend, frontend, and end-to-end scope from the design and tasks.
56
- 4. Extract key requirements, Given/When/Then scenarios, negative constraints (`BUT it must NOT`), and strict validations (`AND IT MUST`) from `requirements.md`.
57
-
58
- ### Phase 1: Unit Tests
89
+ 3. Read the Tester persona `.agents/tester.md` (stop and direct the user to `/akili-constitution` if it is missing).
90
+ 4. Identify backend, frontend, and end-to-end scope from the design and tasks.
91
+ 5. Extract key requirements, Given/When/Then scenarios, negative constraints (`BUT it must NOT`), and strict validations (`AND IT MUST`) from `requirements.md`.
59
92
 
60
- - Create or improve backend unit tests where needed.
61
- - Create or improve frontend unit tests where needed.
62
- - Explicitly test negative constraints (`BUT it must NOT`) and strict boundary validations (`AND IT MUST`).
63
- - Map tests back to requirements and scenarios.
64
- - Prefer focused tests that prove one behavior clearly over broad tests with unclear intent.
93
+ ### Phase 1: Plan Suites & Delegation (Leader)
65
94
 
66
- Use skills as needed:
95
+ 1. Partition the work into concrete **suites**: backend unit, frontend unit, integration, E2E — only those the spec actually needs.
96
+ 2. For each suite, assemble a **context slice**: the target requirements + scenarios, the negative/strict rules to assert, the repo test command, and the relevant skills.
97
+ 3. Apply the **Deployment Rule** to decide inline vs delegated, and parallel vs sequential.
98
+ 4. Assign skills per suite as needed:
99
+ - `nestjs-expert`, `systematic-debugging` — backend
100
+ - `vercel-react-best-practices`, `react-doctor` — frontend
101
+ - `ui-ux-pro-max` (fallback `frontend-design`) — UI-heavy E2E
67
102
 
68
- - `nestjs-expert`
69
- - `systematic-debugging`
70
- - `vercel-react-best-practices`
71
- - `react-doctor`
103
+ ### Phase 2: Execute Suites (Tester per suite)
72
104
 
73
- ### Phase 2: Integration Tests
105
+ For each suite, the assigned Tester (or the Leader inline) must:
74
106
 
75
- - Create or improve API integration tests where relevant.
76
- - Validate auth, request/response shape, and major flows.
77
- - Cover cross-module behavior that cannot be proven by unit tests alone.
107
+ - Author focused tests that prove one behavior clearly.
108
+ - **Explicitly** cover negative constraints (`BUT it must NOT`) and strict boundary validations (`AND IT MUST`).
109
+ - Map every test back to its requirement and scenario.
110
+ - Run the suite and apply the **bounded self-correction inner loop** (max 3 attempts):
111
+ - fix genuine **test defects** and re-run;
112
+ - keep a failing test that reveals a genuine **product defect** red, and report it as `STATUS: PRODUCT_BUG` instead of rewriting it to pass.
113
+ - Prefer unit tests for internal logic, integration tests for cross-module/API behavior, and E2E only for critical user journeys — not every small component state.
78
114
 
79
- ### Phase 3: End-to-End Tests
115
+ Each Tester concludes with exactly one status — `PASS`, `FAIL`, or `PRODUCT_BUG` — plus a per-scenario coverage slice, per `.agents/tester.md`.
80
116
 
81
- - Create or improve E2E tests for user-visible workflows.
82
- - If the work is UI-heavy, prefer `ui-ux-pro-max` when available.
83
- - Otherwise use `frontend-design` and the UX/UI design doc as the UX reference.
84
- - Use E2E tests for critical user journeys, not every small component state.
117
+ ### Phase 3: Aggregate & Traceability (Leader)
85
118
 
86
- ### Phase 4: Coverage & Traceability
87
-
88
- Create a requirement-to-test matrix so every key requirement has test evidence or an explicit gap. Ensure negative constraints and strict validations are mapped.
119
+ Collect every Tester's coverage slice into one requirement-to-test matrix so every key requirement has test evidence or an explicit gap. Ensure negative constraints and strict validations are mapped. Carry through any `PRODUCT_BUG` findings as failures with remediation.
89
120
 
90
121
  Recommended matrix columns:
91
122
 
92
123
  | Requirement | Scenario | Test Type | Test File or Command | Result | Gap or Notes |
93
124
  |---|---|---|---|---|---|
94
125
 
95
- ### Phase 5: Generate Test Report
126
+ ### Phase 4: Generate Test Report (Leader)
96
127
 
97
128
  Create `docs/specs/$ARGUMENTS/test-report.md`.
98
129
 
@@ -112,9 +143,11 @@ The report must include:
112
143
  8. Remediation
113
144
  9. Accepted Gaps, if any
114
145
 
115
- ### Phase 6: Report to User
146
+ When Testers were delegated, record in the Summary how many suites ran, how many Testers were spawned (and whether in parallel), and any suite run inline.
147
+
148
+ ### Phase 5: Report to User (Leader)
116
149
 
117
- Generate a short, easy-to-understand summary (summary facil de entender de lo que se hizo) of the overall test status, test counts, requirement coverage, scenario gaps, and top failures. If failures exist, ask whether to fix failures, add missing tests, fix all, or keep only the report.
150
+ Generate a short, easy-to-understand summary (summary facil de entender de lo que se hizo) of the overall test status, test counts, requirement coverage, scenario gaps, product bugs found, and top failures. If failures exist, ask whether to fix failures, add missing tests, fix all, or keep only the report.
118
151
 
119
152
  ---
120
153
 
@@ -139,3 +172,5 @@ If `ui-ux-pro-max` is unavailable, use `frontend-design` plus the UX/UI design d
139
172
  - Prefer repository-specific test commands over hardcoded framework assumptions.
140
173
  - If a test is flaky, record the flake and avoid treating it as passing evidence until stabilized.
141
174
  - If no automated test is practical, document the manual verification steps and why automation was deferred.
175
+ - A Tester must never rewrite a test to hide a genuine product defect; a real failure is reported as `PRODUCT_BUG`, not silenced.
176
+ - Do not delegate trivial single-test work to a subagent when running it inline is cheaper (see the Deployment Rule).