arreio 1.0.4 → 1.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 (27) hide show
  1. package/README.md +9 -1
  2. package/package.json +1 -1
  3. package/scripts/postinstall.js +5 -1
  4. package/skills/arreio-init/SKILL.md +23 -31
  5. package/skills/learn/SKILL.md +7 -7
  6. package/skills/learn/modules/capture.md +6 -6
  7. package/skills/learn/modules/index.md +3 -3
  8. package/skills/learn/modules/maintain.md +3 -3
  9. package/skills/learn/modules/refine.md +3 -3
  10. package/skills/learn/references/id-generation.md +11 -11
  11. package/skills/learn/references/templates/artifacts/captured-entry.md +1 -1
  12. package/skills/learn/references/templates/artifacts/index-update.md +1 -1
  13. package/skills/learn/references/templates/artifacts/learn-input.md +1 -1
  14. package/skills/learn/references/templates/artifacts/maintain-log.md +1 -1
  15. package/skills/learn/references/templates/artifacts/refined-entry.md +1 -1
  16. package/skills/review/SKILL.md +9 -9
  17. package/skills/review/modules/analyze.md +3 -3
  18. package/skills/review/modules/prepare.md +3 -3
  19. package/skills/review/modules/report.md +9 -9
  20. package/skills/review/modules/scope.md +4 -4
  21. package/skills/review/references/error-handling.md +1 -1
  22. package/skills/review/references/id-generation.md +15 -15
  23. package/skills/review/references/templates/artifacts/findings.md +1 -1
  24. package/skills/review/references/templates/artifacts/review-input.md +1 -1
  25. package/skills/review/references/templates/artifacts/review-kit.md +1 -1
  26. package/skills/review/references/templates/artifacts/review-report.md +6 -6
  27. package/skills/review/references/templates/artifacts/review-scope.md +1 -1
package/README.md CHANGED
@@ -12,7 +12,15 @@ Install Arreio as a dependency to enable all skills in your workspace:
12
12
  npm install arreio
13
13
  ```
14
14
 
15
- The post-install script will automatically copy all Arreio skills to your project's `.agents/skills/` directory, making them available to your AI coding agent. (Note: npm may show an advisory about unallowed install scripts—this is informational and won't block the installation.)
15
+ The post-install script will automatically copy all Arreio skills to your project's `.agents/skills/` directory, making them available to your AI coding agent.
16
+
17
+ > **Note on npm 10+ install scripts:** npm 10+ blocks lifecycle scripts by default and will print a warning like `npm warn install-scripts arreio@x.y.z (postinstall: ...)`. The script is not run automatically until you allow it. Run:
18
+ >
19
+ > ```bash
20
+ > npm install-scripts approve arreio
21
+ > ```
22
+ >
23
+ > If you skip the postinstall, run `/arreio-init` in your AI coding agent — it will install the skills for you.
16
24
 
17
25
  Then initialize your project to set up the Arreio folder structure and documentation:
18
26
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arreio",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "Arreio transforms agentic coding workflows into a predictable, safe, and high-quality software delivery pipeline. Master the four core phases—Plan, Work, Review, Learn—to orchestrate a highly reliable development cycle.",
5
5
  "license": "MIT",
6
6
  "author": "Wicttor",
@@ -11,7 +11,11 @@ const path = require('path');
11
11
  // Determine the source and destination paths
12
12
  const packageDir = path.dirname(__dirname);
13
13
  const skillsSource = path.join(packageDir, 'skills');
14
- const agentsDir = path.join(process.cwd(), '.agents');
14
+
15
+ // INIT_CWD is set by npm to the project root during lifecycle scripts.
16
+ // Fallback to process.cwd() for direct/manual runs.
17
+ const projectRoot = process.env.INIT_CWD || process.cwd();
18
+ const agentsDir = path.join(projectRoot, '.agents');
15
19
  const skillsDestination = path.join(agentsDir, 'skills');
16
20
 
17
21
  // Function to recursively copy directories
@@ -54,7 +54,7 @@ Creates the organizational spine for Arreio artifacts:
54
54
 
55
55
  - `docs/plans/` — Stores generated plans and design artifacts
56
56
  - `docs/learn/` — Stores extracted learnings and insights
57
- - `docs/reports/` — Stores review reports and analysis
57
+ - `docs/review/` — Stores review reports and analysis
58
58
  - `docs/tasks/` — Stores task lists and execution records
59
59
  - `docs/archives/` — Stores historical artifacts
60
60
 
@@ -92,15 +92,7 @@ Creates the organizational spine for Arreio artifacts:
92
92
 
93
93
  **Action:** If `docs/learn/index.md` doesn't exist, create it using the [Learn Index Template](references/learn-index-template.md).
94
94
 
95
- ### Step 7: Create Reports Folder
96
-
97
- **Folder:** `docs/reports/`
98
-
99
- **Rationale:** Stores review reports and analysis artifacts. The `review/SKILL.md` module generates reports here.
100
-
101
- **Action:** Create the `docs/reports/` folder if it doesn't exist.
102
-
103
- ### Step 8: Create Plan Skill Hidden Artifact Directories
95
+ ### Step 7: Create Plan Skill Hidden Artifact Directories
104
96
 
105
97
  **Folders:**
106
98
 
@@ -112,7 +104,7 @@ Creates the organizational spine for Arreio artifacts:
112
104
 
113
105
  **Action:** Create all three directories if they don't exist.
114
106
 
115
- ### Step 9: Create Work Skill Hidden Artifact Directories
107
+ ### Step 8: Create Work Skill Hidden Artifact Directories
116
108
 
117
109
  **Folders:**
118
110
 
@@ -125,22 +117,22 @@ Creates the organizational spine for Arreio artifacts:
125
117
 
126
118
  **Action:** Create all four directories if they don't exist.
127
119
 
128
- ### Step 10: Create Review Skill Hidden Artifact Directories and Registry
120
+ ### Step 9: Create Review Skill Hidden Artifact Directories and Registry
129
121
 
130
122
  **Folders:**
131
123
 
132
- - `docs/plans/.review/.scope/` — Stores Review Scope phase artifacts
133
- - `docs/plans/.review/.prepare/` — Stores Review Prepare phase artifacts
134
- - `docs/plans/.review/.analyze/` — Stores Review Analyze phase artifacts
135
- - `docs/plans/.review/.report/` — Stores Review Report phase artifacts
124
+ - `docs/review/.scope/` — Stores Review Scope phase artifacts
125
+ - `docs/review/.prepare/` — Stores Review Prepare phase artifacts
126
+ - `docs/review/.analyze/` — Stores Review Analyze phase artifacts
127
+ - `docs/review/.report/` — Stores Review Report phase artifacts
136
128
 
137
129
  **File:**
138
130
 
139
- - `docs/plans/.review/index.md` — Central registry of all review reports
131
+ - `docs/review/index.md` — Central registry of all review reports
140
132
 
141
133
  **Rationale:** The `review/SKILL.md` orchestrator saves phase artifacts in these hidden directories and maintains a central index of all review reports.
142
134
 
143
- **Action:** Create all four directories if they don't exist. If `docs/plans/.review/index.md` doesn't exist, create it with a header:
135
+ **Action:** Create all four directories if they don't exist. If `docs/review/index.md` doesn't exist, create it with a header:
144
136
 
145
137
  ```markdown
146
138
  ---
@@ -161,20 +153,20 @@ This is the index of all review reports for the project. Reports are organized b
161
153
  _No review reports yet._
162
154
  ```
163
155
 
164
- ### Step 11: Create Learn Skill Hidden Artifact Directories
156
+ ### Step 10: Create Learn Skill Hidden Artifact Directories
165
157
 
166
158
  **Folders:**
167
159
 
168
- - `docs/plans/.learn/.capture/` — Stores Capture phase artifacts
169
- - `docs/plans/.learn/.refine/` — Stores Refine phase artifacts
170
- - `docs/plans/.learn/.index/` — Stores Index phase artifacts
171
- - `docs/plans/.learn/.maintain/` — Stores Maintain phase artifacts
160
+ - `docs/learn/.capture/` — Stores Capture phase artifacts
161
+ - `docs/learn/.refine/` — Stores Refine phase artifacts
162
+ - `docs/learn/.index/` — Stores Index phase artifacts
163
+ - `docs/learn/.maintain/` — Stores Maintain phase artifacts
172
164
 
173
165
  **Rationale:** The `learn/SKILL.md` orchestrator saves phase artifacts in these hidden directories to preserve the knowledge entry authoring trail.
174
166
 
175
167
  **Action:** Create all four directories if they don't exist.
176
168
 
177
- ### Step 12: Create End-Session Skill Hidden Artifact Directory
169
+ ### Step 11: Create End-Session Skill Hidden Artifact Directory
178
170
 
179
171
  **Folder:**
180
172
 
@@ -184,7 +176,7 @@ _No review reports yet._
184
176
 
185
177
  **Action:** Create the directory if it doesn't exist.
186
178
 
187
- ### Step 13: Create Learn Category Folders
179
+ ### Step 12: Create Learn Category Folders
188
180
 
189
181
  **Folders:**
190
182
 
@@ -208,7 +200,7 @@ After initialization, verify:
208
200
  - `.agents/skills/learn/`
209
201
  - `.agents/skills/end-session/`
210
202
  - `.agents/skills/arreio-init/`
211
- - ✓ All five core folders exist: `docs/plans/`, `docs/learn/`, `docs/reports/`, `docs/tasks/`, `docs/archives/`
203
+ - ✓ All five core folders exist: `docs/plans/`, `docs/learn/`, `docs/review/`, `docs/tasks/`, `docs/archives/`
212
204
  - ✓ `ARCHITECTURE.md` exists at project root
213
205
  - ✓ Root-level index files exist:
214
206
  - `docs/plans/index.md` (registry of all plans)
@@ -218,10 +210,10 @@ After initialization, verify:
218
210
  - ✓ Work skill hidden artifact directories exist:
219
211
  - `docs/plans/.work/.triage/`, `docs/plans/.work/.prepare/`, `docs/plans/.work/.execute/`, `docs/plans/.work/.review/`
220
212
  - ✓ Review skill hidden artifact directories exist:
221
- - `docs/plans/.review/.scope/`, `docs/plans/.review/.prepare/`, `docs/plans/.review/.analyze/`, `docs/plans/.review/.report/`
222
- - `docs/plans/.review/index.md` (review reports registry)
213
+ - `docs/review/.scope/`, `docs/review/.prepare/`, `docs/review/.analyze/`, `docs/review/.report/`
214
+ - `docs/review/index.md` (review reports registry)
223
215
  - ✓ Learn skill hidden artifact directories exist:
224
- - `docs/plans/.learn/.capture/`, `docs/plans/.learn/.refine/`, `docs/plans/.learn/.index/`, `docs/plans/.learn/.maintain/`
216
+ - `docs/learn/.capture/`, `docs/learn/.refine/`, `docs/learn/.index/`, `docs/learn/.maintain/`
225
217
  - ✓ End-session skill hidden artifact directory exists:
226
218
  - `docs/plans/.end-session/`
227
219
  - ✓ Learn category folders exist:
@@ -235,8 +227,8 @@ Downstream skills (plan, learn, work, review) automatically create missing folde
235
227
 
236
228
  - **plan** skill creates missing `docs/plans/` core folders, and allocates `docs/plans/.scope/`, `.research/`, `.design/` directories on first use.
237
229
  - **work** skill creates missing `docs/plans/.work/` directories (`.triage/`, `.prepare/`, `.execute/`, `.review/`) on first execution.
238
- - **review** skill creates missing `docs/plans/.review/` directories and `index.md` registry on first review.
239
- - **learn** skill creates missing `docs/plans/.learn/` directories and `docs/learn/` category folders on first learning capture.
230
+ - **review** skill creates missing `docs/review/` directories and `index.md` registry on first review.
231
+ - **learn** skill creates missing phase-artifact directories under `docs/learn/` and the `docs/learn/` category folders on first learning capture.
240
232
  - **end-session** skill creates missing `docs/plans/.end-session/` directory (and the `## Session Ends` section in `docs/plans/index.md`) on first session end.
241
233
 
242
234
  **However**, running `arreio-init` upfront provides several benefits:
@@ -49,7 +49,7 @@ Each phase runs sequentially: the orchestrator calls the phase module, receives
49
49
  - Receives a context object from the user, a saved prompt, a document, or a combination.
50
50
  - **Three input shapes:**
51
51
  1. **Explicit** — `/learn <type> <text>`. Capture drafts an entry of the named type from the text. The canonical path for authoring a decision/pattern/gotcha/workflow.
52
- 2. **Candidate** — `/learn <candidate-ref>`. The ref resolves to a Work `review-id` (`docs/plans/.work/.review/<id>.md`) or a Review `report-id` (`docs/plans/.review/.report/<id>.md`); Capture reads its `learnings-to-capture` list and, for each candidate, drafts the corresponding entry. The user confirms which candidates become durable entries.
52
+ 2. **Candidate** — `/learn <candidate-ref>`. The ref resolves to a Work `review-id` (`docs/plans/.work/.review/<id>.md`) or a Review `report-id` (`docs/review/.report/<id>.md`); Capture reads its `learnings-to-capture` list and, for each candidate, drafts the corresponding entry. The user confirms which candidates become durable entries.
53
53
  3. **Maintain** — `/learn maintain`. Runs only the Maintain phase (dedup / refresh / prune); bypasses Capture → Refine → Index (no new entry is authored).
54
54
  - **If no context is provided**, ask: "What would you like to capture? Provide a type and text, a candidate ref, or `maintain`."
55
55
  - **Unified key:** downstream phases key off a `learn-id` umbrella (`YYYY-MM-DD-NNN`), allocated by Capture. For Maintain-only runs, Maintain allocates its own `maintain-id` (no `learn-id` umbrella — there is no newly authored entry).
@@ -60,7 +60,7 @@ Each phase runs sequentially: the orchestrator calls the phase module, receives
60
60
  Before starting the learn pipeline, the orchestrator verifies that required folders exist:
61
61
 
62
62
  - `docs/learn/` — must exist for writing entries and the index; the seed `docs/learn/index.md` must exist (empty `entries:` block is valid — the legacy migration populates 28 entries)
63
- - `docs/plans/.learn/.capture/`, `docs/plans/.learn/.refine/`, `docs/plans/.learn/.index/`, `docs/plans/.learn/.maintain/` — must exist for saving the phase artifacts
63
+ - `docs/learn/.capture/`, `docs/learn/.refine/`, `docs/learn/.index/`, `docs/learn/.maintain/` — must exist for saving the phase artifacts
64
64
 
65
65
  **Self-Healing:** If any are missing, the orchestrator automatically creates them (`mkdir -p`), and seeds `docs/learn/index.md` from the [index-format.md](references/index-format.md) template. This allows the Learn skill to run even if `arreio-init` wasn't explicitly run.
66
66
 
@@ -70,10 +70,10 @@ For **explicit** input, verify `<type>` is one of the four; if not, ask to pick
70
70
 
71
71
  | Phase | Phase Module | Output Artifact | Saved to |
72
72
  | ----- | ------------------------------------ | ---------------------------------------------------------------------------- | -------------------------------------- |
73
- | 1 | [Capture](modules/capture.md) | [Captured entry](references/templates/artifacts/captured-entry.md) | `docs/plans/.learn/.capture/<id>.md` |
74
- | 2 | [Refine](modules/refine.md) | [Refined entry](references/templates/artifacts/refined-entry.md) | `docs/plans/.learn/.refine/<id>.md` |
75
- | 3 | [Index](modules/index.md) | [Index update](references/templates/artifacts/index-update.md) | `docs/plans/.learn/.index/<id>.md` |
76
- | 4 | [Maintain](modules/maintain.md) _(on demand)_ | [Maintain log](references/templates/artifacts/maintain-log.md) | `docs/plans/.learn/.maintain/<id>.md` |
73
+ | 1 | [Capture](modules/capture.md) | [Captured entry](references/templates/artifacts/captured-entry.md) | `docs/learn/.capture/<id>.md` |
74
+ | 2 | [Refine](modules/refine.md) | [Refined entry](references/templates/artifacts/refined-entry.md) | `docs/learn/.refine/<id>.md` |
75
+ | 3 | [Index](modules/index.md) | [Index update](references/templates/artifacts/index-update.md) | `docs/learn/.index/<id>.md` |
76
+ | 4 | [Maintain](modules/maintain.md) _(on demand)_ | [Maintain log](references/templates/artifacts/maintain-log.md) | `docs/learn/.maintain/<id>.md` |
77
77
 
78
78
  **Phase 4 is on-demand.** A normal `/learn <type> <text>` run executes Phases 1–3 and writes one entry; Maintain runs only via `/learn maintain`. The migration procedure (legacy → canonical) is a Maintain operation, run once.
79
79
 
@@ -104,7 +104,7 @@ The **Index phase** is the skill's only index writer for authored entries; the *
104
104
 
105
105
  - **Entry file:** Saved to `docs/learn/<type>/<slug>.md` with the [entry-schema.md](references/entry-schema.md) frontmatter (`type`, `domain`, `tags`, `applicability`, `summary`, plus `created_at`/`updated_at`, `source`, `confidence`, and `related`).
106
106
  - **Index:** `docs/learn/index.md` updated — a YAML `entries:` block (the `filename` / `domain` / `tags` / `applicability` / `summary` record per entry — the **read contract** that Plan/Work/Review's [learnings-gate-logic.md](../plan/references/learnings-gate-logic.md) parses) plus the human-readable By Category / By Domain tables.
107
- - **Maintain Log (if `/learn maintain`):** Saved to `docs/plans/.learn/.maintain/<maintain-id>.md`, recording the dedup/refresh/prune operations performed and any migration applied.
107
+ - **Maintain Log (if `/learn maintain`):** Saved to `docs/learn/.maintain/<maintain-id>.md`, recording the dedup/refresh/prune operations performed and any migration applied.
108
108
  - **Not produced:** This skill produces **no session log, no event transcript, no "what we did."** Only durable entries and the index.
109
109
 
110
110
  ## References
@@ -30,7 +30,7 @@ If the input is empty or ambiguous, ask the user one question: "What would you l
30
30
  Determine which of the two authoring shapes applies (maintain is rejected in Step 0):
31
31
 
32
32
  1. **Explicit** — the input carries a `<type>` (one of `decision` / `pattern` / `gotcha` / `workflow`) and `<text>` (prose, a file/commit ref, or a short description to expand).
33
- 2. **Candidate** — the input carries a ref to a Work `review-id` (`docs/plans/.work/.review/<id>.md`) or a Review `report-id` (`docs/plans/.review/.report/<id>.md`).
33
+ 2. **Candidate** — the input carries a ref to a Work `review-id` (`docs/plans/.work/.review/<id>.md`) or a Review `report-id` (`docs/review/.report/<id>.md`).
34
34
 
35
35
  Record `input-shape: explicit | candidate`. If `<type>` is provided but is not one of the four, ask the user to pick from the four (Step 2 confirms intent either way).
36
36
 
@@ -48,7 +48,7 @@ Capture produces **one** Captured Entry per run (single-shape artifact). The sha
48
48
 
49
49
  1. Resolve the ref to the artifact file:
50
50
  - Work `review-id` → `docs/plans/.work/.review/<review-id>.md` → read its `learnings-to-capture` list.
51
- - Review `report-id` → `docs/plans/.review/.report/<report-id>.md` → read its `learnings-to-capture` list.
51
+ - Review `report-id` → `docs/review/.report/<report-id>.md` → read its `learnings-to-capture` list.
52
52
  2. If the list is empty, inform the user (no candidates to curate) and stop — do not fabricate an entry.
53
53
  3. Present the candidate list to the user (each has a `title`, `domain`, `source` {finding-id or task-id+gate}, `summary`, `type`) and ask which to author **first** (one entry per Captured Entry). If the candidate's recorded `type` is one of the four, use it; otherwise map: `confirmed-pattern` → `pattern`, `refuted-assumption` → `gotcha`, `gotcha` → `gotcha`, `forced-decision` → `decision`. The user may override the inferred type.
54
54
  4. Record the selected candidate as `capture.source-candidate` (carried for traceability into the entry's `source` frontmatter).
@@ -70,8 +70,8 @@ Draft the entry's frontmatter and body per the authoritative write contract **[e
70
70
  ### Step 4: Propose slug and Allocate the learn-id Umbrella
71
71
 
72
72
  1. **Propose a `slug`** — a kebab-case, globally-unique stable key for the entry. Derive from the title (concise, descriptive); for time-bound decisions a date suffix is allowed (`critical-risk-tier-security-payments-2026-07-04`). The slug is the upsert key for the entry file and its index record. Refine checks uniqueness; Capture only **proposes**.
73
- 2. **Allocate a `learn-id`** umbrella of the form `YYYY-MM-DD-NNN` per [id-generation.md](../references/id-generation.md), counting existing `docs/plans/.learn/.capture/YYYY-MM-DD-NNN-capture.md` files for today. The `learn-id` is the pipeline umbrella carried through Capture → Refine → Index (Maintain-only runs allocate their own `maintain-id` and have no `learn-id`).
74
- 3. **Assign a `capture-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-capture`, saved to `docs/plans/.learn/.capture/`). Reuse it if the user later picks **Edit & Retry**.
73
+ 2. **Allocate a `learn-id`** umbrella of the form `YYYY-MM-DD-NNN` per [id-generation.md](../references/id-generation.md), counting existing `docs/learn/.capture/YYYY-MM-DD-NNN-capture.md` files for today. The `learn-id` is the pipeline umbrella carried through Capture → Refine → Index (Maintain-only runs allocate their own `maintain-id` and have no `learn-id`).
74
+ 3. **Assign a `capture-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-capture`, saved to `docs/learn/.capture/`). Reuse it if the user later picks **Edit & Retry**.
75
75
 
76
76
  ### Step 5: Generate the Captured Entry Artifact
77
77
 
@@ -95,7 +95,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
95
95
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
96
96
  - **Autopilot:** auto-proceed (no confirmation).
97
97
 
98
- Then save the artifact to `docs/plans/.learn/.capture/<capture-id>.md` (ensure `interactionMode` and `target-type` are included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 2 (Refine).
98
+ Then save the artifact to `docs/learn/.capture/<capture-id>.md` (ensure `interactionMode` and `target-type` are included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 2 (Refine).
99
99
 
100
100
  ## Output: Captured Entry Artifact
101
101
 
@@ -103,6 +103,6 @@ Then save the artifact to `docs/plans/.learn/.capture/<capture-id>.md` (ensure `
103
103
  - Verify that `target-type` is one of `decision` / `pattern` / `gotcha` / `workflow`.
104
104
  - Verify that the frontmatter and body conform to [entry-schema.md](../references/entry-schema.md) (the per-type section template), without re-encoding the schema inline.
105
105
  - Verify that the `learn-id` umbrella was allocated (Capture is the allocating phase) and the `slug` is kebab-case and descriptive.
106
- - Verify that the artifact is saved to `docs/plans/.learn/.capture/<capture-id>.md`.
106
+ - Verify that the artifact is saved to `docs/learn/.capture/<capture-id>.md`.
107
107
 
108
108
  > Pass the Captured Entry to `refine` (Phase 2) for type/frontmatter validation and the duplicate + analog check against existing entries.
@@ -55,7 +55,7 @@ Update `docs/learn/index.md` per the authoritative **[index-format.md](../refere
55
55
 
56
56
  ### Step 4: Allocate the index-id
57
57
 
58
- Assign an `index-id` per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-index`, saved to `docs/plans/.learn/.index/`). Reuse it if the user later picks **Edit & Retry**. The `learn-id` umbrella is inherited unchanged.
58
+ Assign an `index-id` per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-index`, saved to `docs/learn/.index/`). Reuse it if the user later picks **Edit & Retry**. The `learn-id` umbrella is inherited unchanged.
59
59
 
60
60
  ### Step 5: Generate the Index Update Artifact
61
61
 
@@ -79,7 +79,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
79
79
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
80
80
  - **Autopilot:** auto-proceed (no confirmation).
81
81
 
82
- Then save the artifact to `docs/plans/.learn/.index/<index-id>.md` (ensure `interactionMode` included) and return it to the Orchestrator. The Orchestrator marks the authoring run complete — the durable entry now lives at `docs/learn/<type>/<slug>.md` and `docs/learn/index.md` reflects it.
82
+ Then save the artifact to `docs/learn/.index/<index-id>.md` (ensure `interactionMode` included) and return it to the Orchestrator. The Orchestrator marks the authoring run complete — the durable entry now lives at `docs/learn/<type>/<slug>.md` and `docs/learn/index.md` reflects it.
83
83
 
84
84
  ## Output: Index Update Artifact
85
85
 
@@ -89,6 +89,6 @@ Then save the artifact to `docs/plans/.learn/.index/<index-id>.md` (ensure `inte
89
89
  - Verify **index coherence** (orchestrator gate #5): the YAML block length matches the on-disk entry-file count; the per-type count headings match; no duplicate index rows.
90
90
  - Verify that a merge **de-indexed** (not deleted) the analog and recorded the `superseded-by` lineage in the analog's file — lineage preserved per [dedup-rules.md](../references/dedup-rules.md).
91
91
  - Verify that the derived `index-applicability` enum was **read from** [index-format.md](../references/index-format.md) (the derivation rule) rather than re-encoded inline.
92
- - Verify that the artifact is saved to `docs/plans/.learn/.index/<index-id>.md`.
92
+ - Verify that the artifact is saved to `docs/learn/.index/<index-id>.md`.
93
93
 
94
94
  > The Index Update is the authoring run's final artifact. The Orchestrator marks the workflow complete; the durable knowledge entry lives at `docs/learn/<type>/<slug>.md` and is discoverable via `docs/learn/index.md` (the source-of-truth index Plan/Work/Review search).
@@ -74,7 +74,7 @@ Rebuild `docs/learn/index.md` from the on-disk file tree — the file tree is th
74
74
 
75
75
  ### Step 6: Allocate the maintain-id
76
76
 
77
- Assign a `maintain-id` per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-maintain`, saved to `docs/plans/.learn/.maintain/`). Maintain has **no `learn-id` umbrella** (it authors no new entry). Reuse the `maintain-id` if the user picks **Edit & Retry**.
77
+ Assign a `maintain-id` per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-maintain`, saved to `docs/learn/.maintain/`). Maintain has **no `learn-id` umbrella** (it authors no new entry). Reuse the `maintain-id` if the user picks **Edit & Retry**.
78
78
 
79
79
  ### Step 7: Generate the Maintain Log Artifact
80
80
 
@@ -101,7 +101,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
101
101
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed (but destructive operations — migration, prune, merge — always surface for confirmation even in Smart, per the principle that destructive writes are never silent).
102
102
  - **Autopilot:** auto-proceed for non-destructive steps (refresh, rebuild); **still pause** for destructive operations (migration, prune) — Autopilot never silently deletes or rewrites paths.
103
103
 
104
- Then save the artifact to `docs/plans/.learn/.maintain/<maintain-id>.md` (ensure `interactionMode` included) and return it to the Orchestrator. The Orchestrator marks the Maintain run complete — the canonical knowledge base is reconciled.
104
+ Then save the artifact to `docs/learn/.maintain/<maintain-id>.md` (ensure `interactionMode` included) and return it to the Orchestrator. The Orchestrator marks the Maintain run complete — the canonical knowledge base is reconciled.
105
105
 
106
106
  ## Output: Maintain Log Artifact
107
107
 
@@ -111,6 +111,6 @@ Then save the artifact to `docs/plans/.learn/.maintain/<maintain-id>.md` (ensure
111
111
  - Verify that every prune was explicitly confirmed (no silent deletion); a delete leaves no file; a de-index keeps the file with `status: obsolete`.
112
112
  - Verify **index coherence** (orchestrator gate #5): the rebuilt `docs/learn/index.md` YAML length matches the on-disk entry-file count; per-type totals consistent; no duplicate rows.
113
113
  - Verify that the rebuild was **applied from** [index-format.md](../references/index-format.md) (and the applicability-enum derivation) rather than re-encoded inline.
114
- - Verify that the artifact is saved to `docs/plans/.learn/.maintain/<maintain-id>.md`.
114
+ - Verify that the artifact is saved to `docs/learn/.maintain/<maintain-id>.md`.
115
115
 
116
116
  > The Maintain Log is the Maintain run's deliverable. The Orchestrator marks the workflow complete; the canonical knowledge base at `docs/learn/` is reconciled and `docs/learn/index.md` reflects the on-disk truth.
@@ -65,7 +65,7 @@ Record the matches (`dup-status: exact | analog | none`, the matched `slug`/file
65
65
 
66
66
  ### Step 4: Allocate the refine-id
67
67
 
68
- Assign a `refine-id` per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-refine`, saved to `docs/plans/.learn/.refine/`). Reuse it if the user later picks **Edit & Retry**. The `learn-id` umbrella is inherited unchanged.
68
+ Assign a `refine-id` per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-refine`, saved to `docs/learn/.refine/`). Reuse it if the user later picks **Edit & Retry**. The `learn-id` umbrella is inherited unchanged.
69
69
 
70
70
  ### Step 5: Generate the Refined Entry Artifact
71
71
 
@@ -91,7 +91,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
91
91
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
92
92
  - **Autopilot:** auto-proceed (no confirmation).
93
93
 
94
- Then save the artifact to `docs/plans/.learn/.refine/<refine-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 3 (Index).
94
+ Then save the artifact to `docs/learn/.refine/<refine-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 3 (Index).
95
95
 
96
96
  ## Output: Refined Entry Artifact
97
97
 
@@ -99,6 +99,6 @@ Then save the artifact to `docs/plans/.learn/.refine/<refine-id>.md` (ensure `in
99
99
  - Verify that the frontmatter conforms to [entry-schema.md](../references/entry-schema.md) (every required field valid; the per-type body template present) without re-encoding the schema inline.
100
100
  - Verify that the duplicate/analog check ran per [dedup-rules.md](../references/dedup-rules.md) and that any conflict was resolved with a recorded `resolution` (never silently two entries).
101
101
  - Verify that a merge recorded `lineage` (the analog `slug` + `superseded-by` note) — lineage preserved, never deleted.
102
- - Verify that the artifact is saved to `docs/plans/.learn/.refine/<refine-id>.md`.
102
+ - Verify that the artifact is saved to `docs/learn/.refine/<refine-id>.md`.
103
103
 
104
104
  > Pass the Refined Entry to `index` (Phase 3) to write the entry file and upsert the canonical index.
@@ -14,10 +14,10 @@ Shared ID algorithm for the `capture`, `refine`, `index`, and `maintain` phases,
14
14
 
15
15
  | Phase | ID format | Saved to |
16
16
  | -------- | ----------------------------------- | ----------------------------------- |
17
- | Capture | `YYYY-MM-DD-NNN-capture` | `docs/plans/.learn/.capture/<id>.md` |
18
- | Refine | `YYYY-MM-DD-NNN-refine` | `docs/plans/.learn/.refine/<id>.md` |
19
- | Index | `YYYY-MM-DD-NNN-index` | `docs/plans/.learn/.index/<id>.md` |
20
- | Maintain | `YYYY-MM-DD-NNN-maintain` | `docs/plans/.learn/.maintain/<id>.md` |
17
+ | Capture | `YYYY-MM-DD-NNN-capture` | `docs/learn/.capture/<id>.md` |
18
+ | Refine | `YYYY-MM-DD-NNN-refine` | `docs/learn/.refine/<id>.md` |
19
+ | Index | `YYYY-MM-DD-NNN-index` | `docs/learn/.index/<id>.md` |
20
+ | Maintain | `YYYY-MM-DD-NNN-maintain` | `docs/learn/.maintain/<id>.md` |
21
21
 
22
22
  `learn-id` (see below) is the umbrella shared across Capture → Refine → Index. **Maintain has no `learn-id`** — it authors no new entry; it allocates only a standalone `maintain-id`.
23
23
 
@@ -27,7 +27,7 @@ Allocated **only in Capture** Step 4:
27
27
 
28
28
  ```
29
29
  1. Get the current date in UTC
30
- 2. List existing files under docs/plans/.learn/.capture/ matching YYYY-MM-DD-NNN-capture.md for that date
30
+ 2. List existing files under docs/learn/.capture/ matching YYYY-MM-DD-NNN-capture.md for that date
31
31
  3. NNN = (highest existing NNN for that date), zero-padded to 3 digits
32
32
  - if none exist for that date, start at 001
33
33
  4. learn-id = "<date>-<NNN>" (the same NNN as the capture-id being allocated)
@@ -42,7 +42,7 @@ Allocated **only in Maintain** Step 6:
42
42
 
43
43
  ```
44
44
  1. Get the current date in UTC
45
- 2. List existing files under docs/plans/.learn/.maintain/ matching YYYY-MM-DD-NNN-maintain.md for that date
45
+ 2. List existing files under docs/learn/.maintain/ matching YYYY-MM-DD-NNN-maintain.md for that date
46
46
  3. NNN = (count + 1), zero-padded to 3 digits
47
47
  4. maintain-id = "<date>-<NNN>-maintain"
48
48
  ```
@@ -74,10 +74,10 @@ The `slug` is the stable, globally-unique key for a knowledge entry — it keys
74
74
  ```
75
75
  1. Get the current date in UTC (e.g., 2026-08-08)
76
76
  2. List existing files for today in the phase's save directory:
77
- - capture -> docs/plans/.learn/.capture/ matching YYYY-MM-DD-*-capture.md
78
- - refine -> docs/plans/.learn/.refine/ matching YYYY-MM-DD-*-refine.md
79
- - index -> docs/plans/.learn/.index/ matching YYYY-MM-DD-*-index.md
80
- - maintain -> docs/plans/.learn/.maintain/ matching YYYY-MM-DD-*-maintain.md
77
+ - capture -> docs/learn/.capture/ matching YYYY-MM-DD-*-capture.md
78
+ - refine -> docs/learn/.refine/ matching YYYY-MM-DD-*-refine.md
79
+ - index -> docs/learn/.index/ matching YYYY-MM-DD-*-index.md
80
+ - maintain -> docs/learn/.maintain/ matching YYYY-MM-DD-*-maintain.md
81
81
  3. NNN = (count + 1), zero-padded to 3 digits (001, 002, ..., 010, ...)
82
82
  4. id = "<date>-<NNN>-<phase>"
83
83
  ```
@@ -108,7 +108,7 @@ The legacy `docs/learnings/` store uses filenames, not slugs, as the key. The mi
108
108
 
109
109
  ## Notes
110
110
 
111
- - IDs reuse the daily-counter algorithm for cross-skill consistency with `/plan`, `/work`, and `/review`; the Learn skill's counters are independent from those skills (separate save directories under `docs/plans/.learn/`).
111
+ - IDs reuse the daily-counter algorithm for cross-skill consistency with `/plan`, `/work`, and `/review`; the Learn skill's counters are independent from those skills (separate save directories under `docs/learn/`).
112
112
  - `learn-id` carries through Capture → Refine → Index; Maintain uses the standalone `maintain-id` only. Cross-phase chaining is `capture-id → refine-id → index-id`, all sharing one `learn-id` (see [error-handling.md](error-handling.md) "Cross-Phase Consistency Checks").
113
113
  - The `slug` is a **separate** key from the phase ids — it identifies the durable knowledge entry across re-authors, not the pipeline run. A single `slug` may be authored by many `learn-id` runs over time (each upsert overwrites); the `slug` is stable, the `learn-id` is per-run.
114
114
  - Counter collisions are impossible within a date because each phase writes to its own directory and recomputes the count from the directory listing.
@@ -53,7 +53,7 @@ inferred: true | false # true when drafted from a short desc
53
53
  # false when grounded in a concrete ref/file the user provided
54
54
  ```
55
55
 
56
- Also save the Captured Entry Artifact to `docs/plans/.learn/.capture/<capture-id>.md`.
56
+ Also save the Captured Entry Artifact to `docs/learn/.capture/<capture-id>.md`.
57
57
 
58
58
  ## Validation Rules
59
59
 
@@ -50,7 +50,7 @@ entry-written: true # the entry file was written (fals
50
50
  index-updated: true # docs/learn/index.md was upserted
51
51
  ```
52
52
 
53
- Also save the Index Update Artifact to `docs/plans/.learn/.index/<index-id>.md`.
53
+ Also save the Index Update Artifact to `docs/learn/.index/<index-id>.md`.
54
54
 
55
55
  ## Validation Rules
56
56
 
@@ -95,6 +95,6 @@ maintain:
95
95
 
96
96
  ## Notes
97
97
 
98
- - The Orchestrator's Pre-Flight Check ensures `docs/learn/`, `docs/plans/.learn/.{capture,refine,index,maintain}/` exist, and seeds `docs/learn/index.md` if missing (self-healing via `mkdir -p`), before routing the artifact.
98
+ - The Orchestrator's Pre-Flight Check ensures `docs/learn/`, `docs/learn/.{capture,refine,index,maintain}/` exist, and seeds `docs/learn/index.md` if missing (self-healing via `mkdir -p`), before routing the artifact.
99
99
  - `interactionMode` flows from this artifact into every downstream artifact (Capture → Refine → Index for authoring; straight to Maintain otherwise); the orchestrator quality gate #2 cross-checks it is identical across the authoring chain (Maintain carries it standalone).
100
100
  - The shape **determines the route**, not just the allocation: a `maintain` shape never reaches Capture, Refine, or Index. The phase ids reflect this — `maintain-id` is standalone (no `learn-id` umbrella) per [id-generation.md](../../id-generation.md).
@@ -56,7 +56,7 @@ summary: # a one-line human-readable summary
56
56
  "<N> entries migrated; <M> merged; <R> normalized, <F> flagged; <P> pruned; <I> indexed"
57
57
  ```
58
58
 
59
- Also save the Maintain Log Artifact to `docs/plans/.learn/.maintain/<maintain-id>.md`.
59
+ Also save the Maintain Log Artifact to `docs/learn/.maintain/<maintain-id>.md`.
60
60
 
61
61
  ## Validation Rules
62
62
 
@@ -58,7 +58,7 @@ lineage: # set ONLY when resolution == me
58
58
  source-candidate: <carried from Capture> | null
59
59
  ```
60
60
 
61
- Also save the Refined Entry Artifact to `docs/plans/.learn/.refine/<refine-id>.md`.
61
+ Also save the Refined Entry Artifact to `docs/learn/.refine/<refine-id>.md`.
62
62
 
63
63
  ## Validation Rules
64
64
 
@@ -58,8 +58,8 @@ Each phase runs sequentially: the orchestrator calls the phase module, receives
58
58
 
59
59
  Before starting the review pipeline, the orchestrator verifies that required folders exist:
60
60
 
61
- - `docs/plans/.review/.scope/`, `docs/plans/.review/.prepare/`, `docs/plans/.review/.analyze/`, `docs/plans/.review/.report/` — must exist for saving the four phase artifacts
62
- - `docs/plans/.review/index.md` — must exist as the review registry (Report appends to it)
61
+ - `docs/review/.scope/`, `docs/review/.prepare/`, `docs/review/.analyze/`, `docs/review/.report/` — must exist for saving the four phase artifacts
62
+ - `docs/review/index.md` — must exist as the review registry (Report appends to it)
63
63
 
64
64
  **Self-Healing:** If any are missing, the orchestrator automatically creates them (`mkdir -p`, and a seed `index.md` with a registry header). This allows the Review skill to run even if `arreio-init` wasn't explicitly run.
65
65
 
@@ -73,10 +73,10 @@ For **task-in-review** input, verify the `work-id` exists and contains at least
73
73
 
74
74
  | Phase | Phase Module | Output Artifact | Saved to |
75
75
  | ----- | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------- |
76
- | 1 | [Scope](modules/scope.md) | [Review scope](references/templates/artifacts/review-scope.md) | `docs/plans/.review/.scope/<id>.md` |
77
- | 2 | [Prepare](modules/prepare.md) | [Review kit](references/templates/artifacts/review-kit.md) | `docs/plans/.review/.prepare/<id>.md` |
78
- | 3 | [Analyze](modules/analyze.md) | [Findings](references/templates/artifacts/findings.md) | `docs/plans/.review/.analyze/<id>.md` |
79
- | 4 | [Report](modules/report.md) | [Review report](references/templates/artifacts/review-report.md) | `docs/plans/.review/.report/<id>.md` |
76
+ | 1 | [Scope](modules/scope.md) | [Review scope](references/templates/artifacts/review-scope.md) | `docs/review/.scope/<id>.md` |
77
+ | 2 | [Prepare](modules/prepare.md) | [Review kit](references/templates/artifacts/review-kit.md) | `docs/review/.prepare/<id>.md` |
78
+ | 3 | [Analyze](modules/analyze.md) | [Findings](references/templates/artifacts/findings.md) | `docs/review/.analyze/<id>.md` |
79
+ | 4 | [Report](modules/report.md) | [Review report](references/templates/artifacts/review-report.md) | `docs/review/.report/<id>.md` |
80
80
 
81
81
  ### Quality Gates
82
82
 
@@ -99,7 +99,7 @@ Each phase is responsible for its own index updates:
99
99
  | Scope | _(none — produces artifact only)_ | Allocates the `review-id`; no index write. |
100
100
  | Prepare | _(none)_ | Gathers the review kit; no index write. |
101
101
  | Analyze | _(none)_ | Produces findings; no index write. |
102
- | Report | `docs/plans/.review/index.md` | Append a registry row: `<report-id>`, review target summary, approval status, link to the report file. |
102
+ | Report | `docs/review/index.md` | Append a registry row: `<report-id>`, review target summary, approval status, link to the report file. |
103
103
  | Report | `docs/tasks/<work-id>/index.md` _(work-linked or task-in-review only)_ | Append a distinct `## Review Report — <report-id>` block (separate from Work's own `## Work Report` block). |
104
104
  | Report | Task frontmatter _(task-in-review only)_ | Update task file `status:` field to `completed` (if approved) or `blocked` (if changes-requested, with reason in frontmatter). |
105
105
 
@@ -107,8 +107,8 @@ Each phase is responsible for its own index updates:
107
107
 
108
108
  ### FINAL OUTPUT
109
109
 
110
- - **Review Report:** Saved to `docs/plans/.review/.report/<report-id>.md`, with: the change boundary, the approval status (`approved` / `changes-requested` / `rejected`), the graded findings rollup, recommendations, and (when requirements were available) the scope-creep summary.
111
- - **Registry row:** `docs/plans/.review/index.md` updated with the new review.
110
+ - **Review Report:** Saved to `docs/review/.report/<report-id>.md`, with: the change boundary, the approval status (`approved` / `changes-requested` / `rejected`), the graded findings rollup, recommendations, and (when requirements were available) the scope-creep summary.
111
+ - **Registry row:** `docs/review/index.md` updated with the new review.
112
112
  - **(Work-linked or task-in-review only) Index cross-link:** `docs/tasks/<work-id>/index.md` gets a `## Review Report — <report-id>` block so a future glance at the work index shows that an external Review ran over it.
113
113
  - **(Task-in-review only) Task Status Update:** ✅ **NEW**: For each task with `status: for-review`:
114
114
  - If approval status = `approved` → update task file's frontmatter `status: completed`
@@ -69,7 +69,7 @@ Tools never **create** a finding on their own outside the change boundary; they
69
69
  ### Step 5: Aggregate Tallies and Generate the Findings Artifact
70
70
 
71
71
  1. **Aggregate** findings by category and count by severity. Compute preliminary tallies (Report derives the final approval status from these — Analyze does not pre-derive approval).
72
- 2. **Assign an `analyze-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-analyze`, saved to `docs/plans/.review/.analyze/`). Reuse it if the user later picks **Edit & Retry**.
72
+ 2. **Assign an `analyze-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-analyze`, saved to `docs/review/.analyze/`). Reuse it if the user later picks **Edit & Retry**.
73
73
  3. Produce a **Findings** block (as markdown) following the schema in [findings.md](../references/templates/artifacts/findings.md). Include:
74
74
  - `analyze-id`, inherited `prepare-id`, `scope-id`, `review-id`, `input-shape`, `interactionMode`
75
75
  - the findings list: per finding — `id`, `severity`, `category`, `location` (repository-relative `file:line` or `file:hunk`), `message`, `trace` **or** `scope-creep: true`, and an optional non-binding `suggested-fix` (Review is read-only — suggestions are informational, never applied)
@@ -90,7 +90,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
90
90
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
91
91
  - **Autopilot:** auto-proceed (no confirmation).
92
92
 
93
- Then save the artifact to `docs/plans/.review/.analyze/<analyze-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 4 (Report).
93
+ Then save the artifact to `docs/review/.analyze/<analyze-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 4 (Report).
94
94
 
95
95
  ## Output: Findings Artifact
96
96
 
@@ -99,6 +99,6 @@ Then save the artifact to `docs/plans/.review/.analyze/<analyze-id>.md` (ensure
99
99
  - Verify the **scope-creep** category either ran (with `spec-content` not `none`) or is recorded `skipped (no requirements)` — never silently absent, never inventing requirements.
100
100
  - Verify severities were **assigned from** [severity-rubric.md](../references/severity-rubric.md) rather than re-defined inline (no second rubric contradicting the authoritative reference).
101
101
  - Verify the category checks were **run from** [review-categories.md](../references/review-categories.md) rather than re-encoded inline.
102
- - Verify that the artifact is saved to `docs/plans/.review/.analyze/<analyze-id>.md`.
102
+ - Verify that the artifact is saved to `docs/review/.analyze/<analyze-id>.md`.
103
103
 
104
104
  > Pass the Findings to `report` (Phase 4) for the approval-status derivation, the report write, and the registry / work-index cross-link.
@@ -68,7 +68,7 @@ If **no** linter/type-checker is configured for the repo, that is a Smart pause
68
68
 
69
69
  ### Step 5: Generate the Review Kit Artifact
70
70
 
71
- 1. **Assign a `prepare-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-prepare`, saved to `docs/plans/.review/.prepare/`). Reuse it if the user later picks **Edit & Retry**.
71
+ 1. **Assign a `prepare-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-prepare`, saved to `docs/review/.prepare/`). Reuse it if the user later picks **Edit & Retry**.
72
72
 
73
73
  2. Produce a **Review Kit** block (as markdown) following the schema in [review-kit.md](../references/templates/artifacts/review-kit.md). Include:
74
74
  - `prepare-id`, inherited `scope-id` and `review-id`, `input-shape`, `interactionMode`
@@ -90,7 +90,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
90
90
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
91
91
  - **Autopilot:** auto-proceed (no confirmation).
92
92
 
93
- Then save the artifact to `docs/plans/.review/.prepare/<prepare-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 3 (Analyze).
93
+ Then save the artifact to `docs/review/.prepare/<prepare-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 3 (Analyze).
94
94
 
95
95
  ## Output: Review Kit Artifact
96
96
 
@@ -98,6 +98,6 @@ Then save the artifact to `docs/plans/.review/.prepare/<prepare-id>.md` (ensure
98
98
  - Verify that every `required` file has a diff entry (or is recorded as deleted / `current-contents`) and that `context` is separated from `required`.
99
99
  - Verify that `test-context` records covering tests per changed file and whether the change ships its own tests.
100
100
  - Verify that `requirements-source: none` propagated as `spec: none` (so Analyze skips the requirements-vs-scope-creep category rather than guessing).
101
- - Verify that the artifact is saved to `docs/plans/.review/.prepare/<prepare-id>.md`.
101
+ - Verify that the artifact is saved to `docs/review/.prepare/<prepare-id>.md`.
102
102
 
103
103
  > Pass the Review Kit to `analyze` (Phase 3) for the categorized, severity-graded review of the diffs.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Report
3
- description: Fourth and final step in the Review workflow. Derives the final approval status (approved / changes-requested / rejected) from the Findings per the authoritative approval criteria, composes non-binding recommendations, generates the Review Report, registers it in docs/plans/.review/index.md, and (work-linked only) appends a distinct ## Review Report — <report-id> block to the work task index. Returns the Review Report as the Review skill's final deliverable.
3
+ description: Fourth and final step in the Review workflow. Derives the final approval status (approved / changes-requested / rejected) from the Findings per the authoritative approval criteria, composes non-binding recommendations, generates the Review Report, registers it in docs/review/index.md, and (work-linked only) appends a distinct ## Review Report — <report-id> block to the work task index. Returns the Review Report as the Review skill's final deliverable.
4
4
  type: module
5
5
  version: 1.0
6
6
  timestamp: "2026-08-08"
@@ -8,7 +8,7 @@ timestamp: "2026-08-08"
8
8
 
9
9
  # Phase 4 - Report
10
10
 
11
- **Purpose:** Fourth and final step in the Review workflow. Reads the [Findings](../references/templates/artifacts/findings.md) from Analyze, derives the final **approval status** (`approved` / `changes-requested` / `rejected`) per the authoritative criteria, composes non-binding recommendations, writes the [Review Report](../references/templates/artifacts/review-report.md), registers it in `docs/plans/.review/index.md`, and — for work-linked input only — appends a distinct `## Review Report — <report-id>` block to `docs/tasks/<work-id>/index.md` (clearly separate from Work's own `## Work Report` block). Returns the Review Report as the Review skill's final deliverable.
11
+ **Purpose:** Fourth and final step in the Review workflow. Reads the [Findings](../references/templates/artifacts/findings.md) from Analyze, derives the final **approval status** (`approved` / `changes-requested` / `rejected`) per the authoritative criteria, composes non-binding recommendations, writes the [Review Report](../references/templates/artifacts/review-report.md), registers it in `docs/review/index.md`, and — for work-linked input only — appends a distinct `## Review Report — <report-id>` block to `docs/tasks/<work-id>/index.md` (clearly separate from Work's own `## Work Report` block). Returns the Review Report as the Review skill's final deliverable.
12
12
 
13
13
  ## Workflow
14
14
 
@@ -44,7 +44,7 @@ Derive the status deterministically from the tallies (count of `blocker`/`major`
44
44
 
45
45
  ### Step 3: Generate the Review Report Artifact
46
46
 
47
- 1. **Assign a `report-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-report`, saved to `docs/plans/.review/.report/`). Reuse it if the user later picks **Edit & Retry**.
47
+ 1. **Assign a `report-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-report`, saved to `docs/review/.report/`). Reuse it if the user later picks **Edit & Retry**.
48
48
 
49
49
  2. Produce a **Review Report** block (as markdown) following the schema in [review-report.md](../references/templates/artifacts/review-report.md). Include:
50
50
  - `report-id`, inherited `analyze-id`, `prepare-id`, `scope-id`, `review-id`, `input-shape`, `interactionMode`
@@ -57,10 +57,10 @@ Derive the status deterministically from the tallies (count of `blocker`/`major`
57
57
 
58
58
  ### Step 4: Register in the Review Registry
59
59
 
60
- Append a registry row to `docs/plans/.review/index.md`:
60
+ Append a registry row to `docs/review/index.md`:
61
61
 
62
62
  ```
63
- - <report-id> — <target-summary> — <approval-status> — docs/plans/.review/.report/<report-id>.md
63
+ - <report-id> — <target-summary> — <approval-status> — docs/review/.report/<report-id>.md
64
64
  ```
65
65
 
66
66
  Create the index with a registry header (`# Reviews`) if it does not yet exist. The row is **idempotent on `report-id`**: a re-run overwrites the row with the same id, never duplicates it.
@@ -76,7 +76,7 @@ When `input-shape: work-linked`, append a **distinct** status block to `docs/tas
76
76
  - **Findings:** <blocker> blocker, <major> major, <minor> minor, <nit> nit
77
77
  - **Scope creep:** none | <count> | skipped (no requirements)
78
78
  - **Learnings to capture:** <count> (run `/learn` to persist)
79
- - **Review Report:** docs/plans/.review/.report/<report-id>.md
79
+ - **Review Report:** docs/review/.report/<report-id>.md
80
80
  ```
81
81
 
82
82
  The block is **append-only** and **idempotent on `report-id`** (a re-run overwrites the block with the same id, never duplicates it). If the work index does not exist, skip the cross-link and note it in the report (do not fabricate a work index).
@@ -92,7 +92,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
92
92
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
93
93
  - **Autopilot:** auto-proceed (no confirmation).
94
94
 
95
- Then save the artifact to `docs/plans/.review/.report/<report-id>.md` (ensure `interactionMode` included).
95
+ Then save the artifact to `docs/review/.report/<report-id>.md` (ensure `interactionMode` included).
96
96
 
97
97
  ### Step 7: Return to Orchestrator
98
98
 
@@ -103,7 +103,7 @@ Return the Review Report to the Orchestrator — `path`, `report-id`, `review-id
103
103
  - Verify that the Review Report is complete and valid: `report-id`, `analyze-id`, `prepare-id`, `scope-id`, `review-id`, `input-shape`, `interactionMode`, `approval-status`, the findings rollup, `recommendations`, `scope-creep-summary`, and `learnings-to-capture`.
104
104
  - Verify that **findings coherence** held (re-verified in Step 0): every finding has a severity, category, repo-relative location, and a `trace` or `scope-creep: true`.
105
105
  - Verify that the approval status was **derived from** [approval-criteria.md](../references/approval-criteria.md) rather than re-defined inline (no second rule contradicting the authoritative reference).
106
- - Verify the registry row was appended to `docs/plans/.review/index.md` (idempotent on `report-id`), and — for work-linked input — the distinct `## Review Report — <report-id>` block was appended to `docs/tasks/<work-id>/index.md` (idempotent, never colliding with Work's `## Work Report` block).
107
- - Verify that the artifact is saved to `docs/plans/.review/.report/<report-id>.md`.
106
+ - Verify the registry row was appended to `docs/review/index.md` (idempotent on `report-id`), and — for work-linked input — the distinct `## Review Report — <report-id>` block was appended to `docs/tasks/<work-id>/index.md` (idempotent, never colliding with Work's `## Work Report` block).
107
+ - Verify that the artifact is saved to `docs/review/.report/<report-id>.md`.
108
108
 
109
109
  > The Review Report is the primary deliverable of the Review Skill. The Orchestrator marks the workflow complete; optionally chains to `/learn` when learnings were surfaced.
@@ -89,9 +89,9 @@ Search `docs/learn/index.md` for entries relevant to the review domains (the cha
89
89
 
90
90
  ### Step 6: Allocate review-id and Generate the Review Scope Artifact
91
91
 
92
- 1. **Allocate a `review-id`** of the form `YYYY-MM-DD-NNN` per [id-generation.md](../references/id-generation.md), counting existing `docs/plans/.review/.scope/YYYY-MM-DD-NNN-scope.md` files (or registry rows) for today. This is the pipeline umbrella id (distinct from any Work `review-id` for work-linked input — the two skills produce independent artifacts; the `work-id` is carried alongside for traceability).
92
+ 1. **Allocate a `review-id`** of the form `YYYY-MM-DD-NNN` per [id-generation.md](../references/id-generation.md), counting existing `docs/review/.scope/YYYY-MM-DD-NNN-scope.md` files (or registry rows) for today. This is the pipeline umbrella id (distinct from any Work `review-id` for work-linked input — the two skills produce independent artifacts; the `work-id` is carried alongside for traceability).
93
93
 
94
- 2. **Assign a `scope-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-scope`, saved to `docs/plans/.review/.scope/`). Reuse it if the user later picks **Edit & Retry**.
94
+ 2. **Assign a `scope-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-scope`, saved to `docs/review/.scope/`). Reuse it if the user later picks **Edit & Retry**.
95
95
 
96
96
  3. Produce a **Review Scope Artifact** block (as markdown) following the schema in [review-scope.md](../references/templates/artifacts/review-scope.md). Include:
97
97
  - `scope-id`, `review-id`, `input-shape`, `interactionMode`
@@ -113,7 +113,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
113
113
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
114
114
  - **Autopilot:** auto-proceed (no confirmation).
115
115
 
116
- Then save the artifact to `docs/plans/.review/.scope/<scope-id>.md` (ensure `interactionMode`, `input-shape`, and `review-id` are included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 2 (Prepare).
116
+ Then save the artifact to `docs/review/.scope/<scope-id>.md` (ensure `interactionMode`, `input-shape`, and `review-id` are included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 2 (Prepare).
117
117
 
118
118
  ## Output: Review Scope Artifact
119
119
 
@@ -121,6 +121,6 @@ Then save the artifact to `docs/plans/.review/.scope/<scope-id>.md` (ensure `int
121
121
  - Verify that the change boundary is in **dependency-safe** form: `required` files are repository-relative and carry a status; `context` is separated from `required`.
122
122
  - Verify that `review-id` was allocated (scope is the allocating phase) and that `work-id` is carried for work-linked input.
123
123
  - Verify that scope-creep detection was run only when requirements were present (else explicitly skipped with a note), per [scope-creep-detection.md](../references/scope-creep-detection.md).
124
- - Verify that the artifact is saved to `docs/plans/.review/.scope/<scope-id>.md`.
124
+ - Verify that the artifact is saved to `docs/review/.scope/<scope-id>.md`.
125
125
 
126
126
  > Pass the Review Scope to `prepare` (Phase 2) to gather the diffs, spec content, test context, and tool inventory.
@@ -85,7 +85,7 @@ Errors encountered while saving or reading artifact files.
85
85
  | Target directory does not exist | Create directory (`mkdir -p`); treat counter as 0; start from 001 | No |
86
86
  | Counter directory exists but no files match date | Start counter at 001 | No |
87
87
  | File write permission denied | Log error; ask user to check permissions; retry once | Yes, after 1 retry |
88
- | `docs/plans/.review/index.md` registry missing | Create it with a `# Reviews` header (Pre-Flight already creates; idempotent) | No |
88
+ | `docs/review/index.md` registry missing | Create it with a `# Reviews` header (Pre-Flight already creates; idempotent) | No |
89
89
  | `docs/tasks/<work-id>/index.md` missing (Report cross-link) | Skip the cross-link; note the absence in the report (do not fabricate a work index) | No |
90
90
 
91
91
  ### Category 5: Interaction Mode Errors
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Artifact ID Generation
3
- description: Reference for Scope, Prepare, Analyze, and Report phases. Defines the daily-counter algorithm for unique artifact IDs, the review-id umbrella allocation (distinct from a Work review-id), the recycle-on-edit rule, and the shared counter layout under docs/plans/.review/.
3
+ description: Reference for Scope, Prepare, Analyze, and Report phases. Defines the daily-counter algorithm for unique artifact IDs, the review-id umbrella allocation (distinct from a Work review-id), the recycle-on-edit rule, and the shared counter layout under docs/review/.
4
4
  type: reference
5
5
  version: 1.0
6
6
  timestamp: "2026-08-08"
@@ -14,10 +14,10 @@ Shared ID algorithm for the `scope`, `prepare`, `analyze`, and `report` phases,
14
14
 
15
15
  | Phase | ID format | Saved to |
16
16
  | -------- | ----------------------------------- | ----------------------------------- |
17
- | Scope | `YYYY-MM-DD-NNN-scope` | `docs/plans/.review/.scope/<id>.md` |
18
- | Prepare | `YYYY-MM-DD-NNN-prepare` | `docs/plans/.review/.prepare/<id>.md` |
19
- | Analyze | `YYYY-MM-DD-NNN-analyze` | `docs/plans/.review/.analyze/<id>.md` |
20
- | Report | `YYYY-MM-DD-NNN-report` | `docs/plans/.review/.report/<id>.md` |
17
+ | Scope | `YYYY-MM-DD-NNN-scope` | `docs/review/.scope/<id>.md` |
18
+ | Prepare | `YYYY-MM-DD-NNN-prepare` | `docs/review/.prepare/<id>.md` |
19
+ | Analyze | `YYYY-MM-DD-NNN-analyze` | `docs/review/.analyze/<id>.md` |
20
+ | Report | `YYYY-MM-DD-NNN-report` | `docs/review/.report/<id>.md` |
21
21
 
22
22
  `review-id` (see below) is the umbrella shared across all four artifacts of a single review run.
23
23
 
@@ -25,19 +25,19 @@ Shared ID algorithm for the `scope`, `prepare`, `analyze`, and `report` phases,
25
25
 
26
26
  The `review-id` is the umbrella key that ties all four phase artifacts together and keys the registry row / work-index block. It is allocated **once** in Scope Step 2 (the allocating phase) and carried through Prepare/Analyze/Report unchanged.
27
27
 
28
- **Format:** `YYYY-MM-DD-NNN` (date + zero-padded 3-digit daily counter), counting existing `docs/plans/.review/.scope/YYYY-MM-DD-NNN-scope.md` files for that date (the scope phase is the allocating phase, so its counter is the source of truth for the umbrella id).
28
+ **Format:** `YYYY-MM-DD-NNN` (date + zero-padded 3-digit daily counter), counting existing `docs/review/.scope/YYYY-MM-DD-NNN-scope.md` files for that date (the scope phase is the allocating phase, so its counter is the source of truth for the umbrella id).
29
29
 
30
- > **Distinct from a Work `review-id`.** When Review is invoked over a `/work` run (`input-shape: work-linked`), the Work skill's own `review-id` (`docs/plans/.work/.review/...`) **already exists**. The Review skill allocates its **own** `review-id` (`docs/plans/.review/...`) — the two skills produce independent artifacts and never share an id. The `work-id` is carried alongside in the Review artifacts for traceability and the work-index cross-link, but `review-id` ≠ Work `review-id`.
30
+ > **Distinct from a Work `review-id`.** When Review is invoked over a `/work` run (`input-shape: work-linked`), the Work skill's own `review-id` (`docs/plans/.work/.review/...`) **already exists**. The Review skill allocates its **own** `review-id` (`docs/review/...`) — the two skills produce independent artifacts and never share an id. The `work-id` is carried alongside in the Review artifacts for traceability and the work-index cross-link, but `review-id` ≠ Work `review-id`.
31
31
 
32
32
  ## Algorithm (new phase artifact)
33
33
 
34
34
  ```
35
35
  1. Get the current date in UTC (e.g., 2026-08-08)
36
36
  2. List existing files for today in the phase's save directory:
37
- - scope -> docs/plans/.review/.scope/ matching YYYY-MM-DD-*-scope.md
38
- - prepare -> docs/plans/.review/.prepare/ matching YYYY-MM-DD-*-prepare.md
39
- - analyze -> docs/plans/.review/.analyze/ matching YYYY-MM-DD-*-analyze.md
40
- - report -> docs/plans/.review/.report/ matching YYYY-MM-DD-*-report.md
37
+ - scope -> docs/review/.scope/ matching YYYY-MM-DD-*-scope.md
38
+ - prepare -> docs/review/.prepare/ matching YYYY-MM-DD-*-prepare.md
39
+ - analyze -> docs/review/.analyze/ matching YYYY-MM-DD-*-analyze.md
40
+ - report -> docs/review/.report/ matching YYYY-MM-DD-*-report.md
41
41
  3. NNN = (count + 1), zero-padded to 3 digits (001, 002, ..., 010, ...)
42
42
  4. id = "<date>-<NNN>-<phase>"
43
43
  ```
@@ -50,7 +50,7 @@ Allocated **only** in Scope Step 2:
50
50
 
51
51
  ```
52
52
  1. Get the current date in UTC
53
- 2. List existing files under docs/plans/.review/.scope/ matching YYYY-MM-DD-NNN-scope.md for that date
53
+ 2. List existing files under docs/review/.scope/ matching YYYY-MM-DD-NNN-scope.md for that date
54
54
  3. NNN = (highest existing NNN for that date), zero-padded to 3 digits
55
55
  - if none exist for that date, start at 001
56
56
  4. review-id = "<date>-<NNN>" (the same NNN as the scope-id being allocated)
@@ -61,7 +61,7 @@ Because `review-id` reuses the scope counter's NNN, the umbrella id and the `sco
61
61
 
62
62
  ## Recycle on Edit & Retry
63
63
 
64
- When the user picks **Edit & Retry** at a phase confirmation, **reuse the original ID** and overwrite the existing artifact file. Do **not** increment the counter. This keeps IDs stable across iterations and prevents orphaned artifacts. The Report phase's registry row in `docs/plans/.review/index.md` and the `## Review Report — <report-id>` block in the work index are likewise idempotent on `report-id` (overwritten, never duplicated).
64
+ When the user picks **Edit & Retry** at a phase confirmation, **reuse the original ID** and overwrite the existing artifact file. Do **not** increment the counter. This keeps IDs stable across iterations and prevents orphaned artifacts. The Report phase's registry row in `docs/review/index.md` and the `## Review Report — <report-id>` block in the work index are likewise idempotent on `report-id` (overwritten, never duplicated).
65
65
 
66
66
  ## Error Handling
67
67
 
@@ -69,12 +69,12 @@ When the user picks **Edit & Retry** at a phase confirmation, **reuse the origin
69
69
  | ----------------------------------------------- | -------------------------------------------- |
70
70
  | Phase save directory does not exist | Create it; treat count as 0; start from 001 |
71
71
  | Directory exists but no files match today's date | Start counter at 001 |
72
- | `docs/plans/.review/` missing | Create it (Pre-Flight already creates; idempotent) |
72
+ | `docs/review/` missing | Create it (Pre-Flight already creates; idempotent) |
73
73
  | Write permission denied | Log error; ask the user; retry once |
74
74
 
75
75
  ## Notes
76
76
 
77
- - IDs reuse the daily-counter algorithm for cross-skill consistency with `/plan` and `/work`; the Review skill's counters are independent from those skills (separate save directories under `docs/plans/.review/` vs `.work/`).
77
+ - IDs reuse the daily-counter algorithm for cross-skill consistency with `/plan` and `/work`; the Review skill's counters are independent from those skills (separate save directories under `docs/review/` vs `.work/`).
78
78
  - `review-id` carries through every artifact (`scope-id` artifacts record it; Prepare/Analyze/Report inherit it), so cross-phase chaining is `scope-id → prepare-id → analyze-id → report-id`, all sharing one `review-id` (see [error-handling.md](error-handling.md) "Cross-Phase Consistency Checks").
79
79
  - For work-linked input, `work-id` is **additionally** carried (inherited from the Review Input Artifact), distinct from `review-id`, for the registry cross-link only.
80
80
  - Counter collisions are impossible within a date because each phase writes to its own directory and recomputes the count from the directory listing.
@@ -53,7 +53,7 @@ scope-creep-ran: true | "skipped (no requirements)" # false only via the skipp
53
53
  work-id: YYYY-MM-DD-NNN | null # work-linked only; null otherwise
54
54
  ```
55
55
 
56
- Also save the Findings to `docs/plans/.review/.analyze/<analyze-id>.md`.
56
+ Also save the Findings to `docs/review/.analyze/<analyze-id>.md`.
57
57
 
58
58
  ## Validation Rules
59
59
 
@@ -111,6 +111,6 @@ references: null
111
111
 
112
112
  ## Notes
113
113
 
114
- - The Orchestrator's Pre-Flight Check ensures `docs/plans/.review/.{scope,prepare,analyze,report}/` and `docs/plans/.review/index.md` exist (self-healing via `mkdir -p`) before handing the Review Input Artifact to Scope.
114
+ - The Orchestrator's Pre-Flight Check ensures `docs/review/.{scope,prepare,analyze,report}/` and `docs/review/index.md` exist (self-healing via `mkdir -p`) before handing the Review Input Artifact to Scope.
115
115
  - `interactionMode` flows from this artifact into every downstream artifact (Scope → Prepare → Analyze → Report); the orchestrator quality gate #2 cross-checks it is identical across all.
116
116
  - For work-linked input, the Work `review-id` and the Review skill's own `review-id` are **distinct** (see [id-generation.md](../../id-generation.md)); the `work-review-id` here is only an input resolver, never reused as the Review skill's umbrella id.
@@ -60,7 +60,7 @@ tool-inventory:
60
60
  work-id: YYYY-MM-DD-NNN | null # work-linked only; null otherwise
61
61
  ```
62
62
 
63
- Also save the Review Kit to `docs/plans/.review/.prepare/<prepare-id>.md`.
63
+ Also save the Review Kit to `docs/review/.prepare/<prepare-id>.md`.
64
64
 
65
65
  ## Validation Rules
66
66
 
@@ -8,7 +8,7 @@ timestamp: "2026-08-08"
8
8
 
9
9
  # Review Report Artifact
10
10
 
11
- The product of the **Report** phase is the Review Report — the Review skill's final deliverable. It records the **approval status** (`approved` / `changes-requested` / `rejected`) derived deterministically from the Findings tallies per [approval-criteria.md](../../approval-criteria.md), with a one-line rationale tied to the counts; the findings rollup (by severity and by category); non-binding **recommendations**; the **scope-creep summary**; **learnings-to-capture** candidates (handed to `/learn`); and the registration state. A registry row is appended to `docs/plans/.review/index.md` always; for work-linked input, a distinct `## Review Report — <report-id>` block is appended to `docs/tasks/<work-id>/index.md`.
11
+ The product of the **Report** phase is the Review Report — the Review skill's final deliverable. It records the **approval status** (`approved` / `changes-requested` / `rejected`) derived deterministically from the Findings tallies per [approval-criteria.md](../../approval-criteria.md), with a one-line rationale tied to the counts; the findings rollup (by severity and by category); non-binding **recommendations**; the **scope-creep summary**; **learnings-to-capture** candidates (handed to `/learn`); and the registration state. A registry row is appended to `docs/review/index.md` always; for work-linked input, a distinct `## Review Report — <report-id>` block is appended to `docs/tasks/<work-id>/index.md`.
12
12
 
13
13
  ## Schema
14
14
 
@@ -54,18 +54,18 @@ learning-gaps:
54
54
  work-id: YYYY-MM-DD-NNN | null # work-linked only; null otherwise
55
55
 
56
56
  registration:
57
- registry-row-appended: true # appended to docs/plans/.review/index.md (idempotent on report-id)
57
+ registry-row-appended: true # appended to docs/review/index.md (idempotent on report-id)
58
58
  work-index-block-appended: true | skipped # work-linked only; skipped if the work index is missing
59
59
  ```
60
60
 
61
- Also save the Review Report to `docs/plans/.review/.report/<report-id>.md`.
61
+ Also save the Review Report to `docs/review/.report/<report-id>.md`.
62
62
 
63
63
  ## Closing Blocks
64
64
 
65
- ### Registry row (appended to `docs/plans/.review/index.md`, always)
65
+ ### Registry row (appended to `docs/review/index.md`, always)
66
66
 
67
67
  ```
68
- - <report-id> — <target-summary> — <approval-status> — docs/plans/.review/.report/<report-id>.md
68
+ - <report-id> — <target-summary> — <approval-status> — docs/review/.report/<report-id>.md
69
69
  ```
70
70
 
71
71
  ### Work-index block (appended to `docs/tasks/<work-id>/index.md`, work-linked only)
@@ -77,7 +77,7 @@ Also save the Review Report to `docs/plans/.review/.report/<report-id>.md`.
77
77
  - **Findings:** <blocker> blocker, <major> major, <minor> minor, <nit> nit
78
78
  - **Scope creep:** none | <count> | skipped (no requirements)
79
79
  - **Learnings to capture:** <count> (run `/learn` to persist)
80
- - **Review Report:** docs/plans/.review/.report/<report-id>.md
80
+ - **Review Report:** docs/review/.report/<report-id>.md
81
81
  ```
82
82
 
83
83
  Both the registry row and the work-index block are **append-only** and **idempotent on `report-id`**: a re-run overwrites the entry with the same id, never duplicates it. The work-index block is deliberately distinct from Work's own `## Work Report — <review-id>` block (different label, different skill, different `report-id`).
@@ -56,7 +56,7 @@ learning-gaps:
56
56
  work-id: YYYY-MM-DD-NNN | null # work-linked only, for the index cross-link; null otherwise
57
57
  ```
58
58
 
59
- Also save the Review Scope to `docs/plans/.review/.scope/<scope-id>.md`.
59
+ Also save the Review Scope to `docs/review/.scope/<scope-id>.md`.
60
60
 
61
61
  ## Validation Rules
62
62