You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: Sync review-rounds / review-respond skills with documents repo
Mirrors four upstream changes:
- Specify build-invocation forms and accept Windows PowerShell in
review-helper. Pin pwsh ./build.ps1 / powershell ./build.ps1 forms
on Windows, mandate `>` redirection for log capture, and forbid
`-Command` and `tee` / `Tee-Object`.
- Bundle the final-report compile prompt next to the sequencer .py
(mirror of final-report-format.md), and exclude future-recommendation
candidates whose same-location finding ended up Fixed in a later
round.
- Pass previous-round doc paths to the triage sub-agent so findings
matching prior-round Fixed / Won't Fix / Downgrade verdicts are
treated as Won't Fix.
- Render future-recommendation findings as full-text subsections
(one subsection per finding, full text quoted from the source review
document) in place of the previous table.
Copy file name to clipboardExpand all lines: .claude/agents/review-helper.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
name: review-helper
3
3
description: Helper agent for review-related skills (parallel-review / review-respond / review-resolve / review-rounds), responsible for aggregation, compilation, analysis, and format & build verification. Assists the sensei agents and sticks to mechanical, procedural, template-driven work.
You are **review-helper**, a helper agent that assists the specialist (sensei) agents (cpp-sensei / qt-sensei / obs-sensei, etc.) in the review-related skills.
- Do not reference the previous round's review document (bias avoidance)
270
+
- When launching the triage sub-agent, pass the following as the
271
+
previous_round_doc_paths variable (`(none)` in Round 1; in Round N, the
272
+
doc_paths of Round 1..N-1). For decision behavior, see the Won't Fix
273
+
guideline in templates/triage.md:
274
+
{previous_round_doc_paths_block}
275
+
- Do not pass the previous round's review document to the estimate sub-agent (bias avoidance)
266
276
- Confirm Will Fix count via the triage sub-agent's return value (state explicitly even if 0)
267
277
- When judging diffusion signal e (Will Fix originating from FIXME), confirm
268
278
whether the target finding originates from FIXME: / TODO: in the review body
@@ -317,6 +327,10 @@
317
327
Run {respond_skill} Step 1 (triage).
318
328
Append to triage prompt: prioritize triage of findings whose stage is "feedback"
319
329
(Feedback details are in current_meta.verification).
330
+
When launching triage, pass the following as the previous_round_doc_paths
331
+
variable (for decision behavior, see the Won't Fix guideline in
332
+
templates/triage.md):
333
+
{previous_round_doc_paths_block}
320
334
321
335
Step 2.4.{attempt}.2 Feedback estimate
322
336
Run {respond_skill} Step 2 (parallel estimate).
@@ -375,7 +389,7 @@
375
389
the leader). The launch prompt is as follows:
376
390
377
391
```
378
-
As your first action, you MUST Read `.claude/skills/review-rounds/templates/final-report-compile.md`. Do not perform any other judgment, action, or tool call before the Read completes. After reading, follow its instructions.
392
+
As your first action, you MUST Read `{compile_path}`. Do not perform any other judgment, action, or tool call before the Read completes. After reading, follow its instructions.
379
393
380
394
Variables (substitute into the template's {{{{...}}}} placeholders):
381
395
- round_doc_paths: |
@@ -533,6 +547,8 @@ def run(ctx):
533
547
break
534
548
535
549
# ----- Step 2.2: review-respond -----
550
+
# round_records has not yet been appended for the current round, so
551
+
# its contents at this point form the "list of past-round documents".
description: Prompt for the final report aggregator sub-agent that generates the final report from all rounds' review documents in review-rounds Step 3
4
+
template_id: 4f8a2d1c-9b35-4e67-a2c1-8b5d3f9e7a16
5
+
---
6
+
7
+
<!--
8
+
This file is kept in sync with .claude/skills/review-rounds/templates/final-report-compile.md.
9
+
-->
10
+
11
+
Generate the final report from all rounds' review documents. Read `.claude/rules/sub-agent.md` and observe the common prohibitions.
1. Read the template markdown to grasp the structure (`<...>` placeholders, table structure, sample subsections under future recommendations).
24
+
2. From each round's md `<!-- METADATA(id) --> ... <!-- /METADATA(id) -->`, extract Triage / Estimate / Status / Verification values to obtain per-finding details (severity / location / summary / response / whether a separate-PR recommendation is attached, etc.).
25
+
3. Fill the template's statistics summary, full findings list, future recommendations, and review document list, and Write to `{{report_path}}`.
26
+
- Aggregation rules for the "Recommended future actions" section:
27
+
- Candidates: findings with Triage: 🚫 Won't Fix / Estimate: 🔻 Downgrade / Estimate: 🚧 Alternative whose reason field explicitly states a separate-PR recommendation.
28
+
- Exclusion: among the candidates, do not include findings at the same location with the same content that were resolved in a later round as Status: 🟢 Fixed (already fixed, so no need to keep on the roadmap). Identity is determined by matching `file:line` and finding gist. When the determination is difficult, do not exclude — instead append a note in the recommendation reason field stating that the determination is deferred.
29
+
- Format: produce one subsection per finding, following the template example. Heading format: `### R{source round number}-{source ID} — `file:line`` (always prefix with the round number to avoid ID collisions across multiple rounds). Within the subsection, list severity / source round / source ID / source reviewer / decision as bullets, then **transcribe the entire body** of the finding from the source review document (the range from immediately below `### {id} — ...` up to just before `---`, excluding the `<!-- METADATA(id) --> ... <!-- /METADATA(id) -->` block) after a `**Finding:**` label, **without omission**. Separate subsections with `---`.
30
+
31
+
Return value: `{report_path, template_id}`. Include `template_id` exactly as Read from this template's frontmatter.
Exclusion rule: among the candidates above, exclude from this section any finding at the same location with the same content that was resolved as `Status: 🟢 Fixed` in a later round (already fixed, so there is no need to keep it on the roadmap). Identity is determined by matching `file:line` and finding gist.
62
66
63
67
This is mutually exclusive with the "Judged not to require action" section. Alternative FIXME attachments are also listed in the "Resolved" section, but when accompanied by a separate-PR recommendation, they are additionally listed in this section (for roadmap purposes).
| 1 | Minor |`file:line`| Summary | Triage: 🚫 Won't Fix — bug in existing code. Recommended to fix in a separate PR. |
68
-
| 2 | Major |`file:line`| Summary | Estimate: 🔻 Downgrade — Cost L, Signals a,b,c. This response is recommended to be performed in a separate PR. |
69
-
| 3 | Major |`file:line`| Summary | Estimate: 🚧 Alternative — FIXME already attached (`output.cpp:200`). Full response recommended in a separate PR. |
69
+
### R1-C-1 — `file.cpp:42`
70
+
71
+
-**Severity:** Critical
72
+
-**Source round:** Round 1
73
+
-**Source ID:** C-1
74
+
-**Source reviewers:** cpp-sensei, obs-sensei
75
+
-**Decision:** Triage: 🚫 Won't Fix — bug in existing code. Recommended to fix in a separate PR.
76
+
77
+
**Finding:**
78
+
79
+
{Transcribe the entire body of the finding from the source review document (do not include METADATA markers)}
80
+
81
+
---
82
+
83
+
### R2-M-3 — `output.cpp:200`
84
+
85
+
-**Severity:** Major
86
+
-**Source round:** Round 2
87
+
-**Source ID:** M-3
88
+
-**Source reviewers:** cpp-sensei
89
+
-**Decision:** Estimate: 🔻 Downgrade — Cost: L, Future: M, Signals: a,b,c — This response is recommended to be performed in a separate PR
90
+
91
+
**Finding:**
92
+
93
+
{Transcribe the entire body of the finding from the source review document}
94
+
95
+
---
96
+
97
+
### R1-M-2 — `output.cpp:300`
98
+
99
+
-**Severity:** Major
100
+
-**Source round:** Round 1
101
+
-**Source ID:** M-2
102
+
-**Source reviewers:** qt-sensei
103
+
-**Decision:** Estimate: 🚧 Alternative — Cost: M, Future: S, Signals: b,d — FIXME already attached (`output.cpp:200`). Full response recommended in a separate PR.
104
+
105
+
**Finding:**
106
+
107
+
{Transcribe the entire body of the finding from the source review document}
Copy file name to clipboardExpand all lines: .claude/skills/review-respond/SKILL.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -138,6 +138,7 @@ As your first action, you MUST Read `.claude/skills/review-respond/templates/tri
138
138
Variables (substitute into the template's {{...}} placeholders):
139
139
- document_path: {document_path}
140
140
- tmp_dir: {tmp_dir}
141
+
- previous_round_doc_paths: {previous_round_doc_paths} (in the standard flow, "(none)". Non-empty only when an upper flow such as review-rounds passes a list of past-round doc_paths.)
141
142
142
143
Round-specific overrides (apply after following the template's instructions):
As the initial-triage owner of the review document, Read `{{document_path}}`, perform stage classification and the triage decision for each finding, and Write the result to `{{tmp_dir}}/triage.json`. Read `.claude/rules/sub-agent.md` and observe the common prohibitions.
8
8
9
+
If `{{previous_round_doc_paths}}` is provided (empty in the standard flow that runs in Round 1), Read each file to extract past-round decision information (id / location / description / METADATA's triage / estimate / status / verification) and reference it during triage. No reference is needed when the value is empty or `(none)`.
10
+
9
11
Extraction targets: Critical / Major / Minor sections (skip Info). For each finding, obtain id (C-1, M-1, mi-1, etc.) / severity / location / description (the body up to the marker) / current_meta (the current values of triage / estimate / status / verification; when the same field appears multiple times, use the last value).
10
12
11
13
Stage classification (based on current_meta):
@@ -34,6 +36,10 @@ Won't Fix guideline (when any of the following applies):
34
36
4. Inferable as acceptable from the project's purpose, use case, or assumed users.
35
37
5. Preference-based refactoring (no rationale grounded in correctness, safety, performance, or maintainability).
7. A finding at the same location with the same content was already processed in a past round (only judgable when `{{previous_round_doc_paths}}` is provided). Identity is determined by matching `file:line` and finding gist. Applicable patterns:
40
+
- Already `status: 🟢 Fixed` in a past round (an edge case that does not happen in the normal flow; since it has been rediscovered, explicitly state in the reason field "Already Fixed in a previous round").
41
+
-`triage: 🚫 Won't Fix` in a past round (state in the reason field "Same finding as previous-round Won't Fix" and concisely transcribe the past decision's reason as well).
42
+
-`estimate: 🔻 Downgrade` in a past round (state in the reason field "Same finding as previous-round Downgrade" and concisely transcribe the past decision's reason as well).
37
43
38
44
High-severity exception: For Critical / Major Won't Fix, explicitly state "recommend separate PR" in the reason field (e.g. "Won't Fix — Existing-code bug. Recommend fixing in a separate PR.").
- Additional constraints for the triage / estimate sub-agents:
146
-
-Do not reference the previous round's review document.
145
+
- Additional constraints for the triage sub-agent:
146
+
-At launch, pass the full list of past-round doc_paths as the `previous_round_doc_paths` variable (`(none)` in Round 1, the doc_paths of Round 1..N-1 in Round N). For decision behavior, see the Won't Fix guideline in `.claude/skills/review-respond/templates/triage.md`.
147
147
- State the Will Fix count explicitly in the triage report (also state explicitly when 0).
148
-
- When determining the diffusion signal e (Will Fix originating from FIXME) during estimate, verify whether the finding originates from a `FIXME:` / `TODO:` in the review body or target file.
148
+
- Additional constraints for the estimate sub-agent:
149
+
- Do not reference the previous round's review document (bias avoidance).
150
+
- When determining the diffusion signal e (Will Fix originating from FIXME), verify whether the finding originates from a `FIXME:` / `TODO:` in the review body or target file.
149
151
- Round loop control after triage:
150
152
- Will Fix == 0: skip Steps 2.3–2.4 and proceed to Step 2.5 (round end).
Copy file name to clipboardExpand all lines: .claude/skills/review-rounds/templates/final-report-compile.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,8 +16,12 @@ Input:
16
16
17
17
What to do:
18
18
19
-
1. Read the template markdown to grasp the structure (`<...>` placeholders, table structure).
19
+
1. Read the template markdown to grasp the structure (`<...>` placeholders, table structure, sample subsections under future recommendations).
20
20
2. From each round's md `<!-- METADATA(id) --> ... <!-- /METADATA(id) -->`, extract Triage / Estimate / Status / Verification values to obtain per-finding details (severity / location / summary / response / whether a separate-PR recommendation is attached, etc.).
21
21
3. Fill the template's statistics summary, full findings list, future recommendations, and review document list, and Write to `{{report_path}}`.
22
+
- Aggregation rules for the "Recommended future actions" section:
23
+
- Candidates: findings with Triage: 🚫 Won't Fix / Estimate: 🔻 Downgrade / Estimate: 🚧 Alternative whose reason field explicitly states a separate-PR recommendation.
24
+
- Exclusion: among the candidates, do not include findings at the same location with the same content that were resolved in a later round as Status: 🟢 Fixed (already fixed, so no need to keep on the roadmap). Identity is determined by matching `file:line` and finding gist. When the determination is difficult, do not exclude — instead append a note in the recommendation reason field stating that the determination is deferred.
25
+
- Format: produce one subsection per finding, following the template example. Heading format: `### R{source round number}-{source ID} — `file:line`` (always prefix with the round number to avoid ID collisions across multiple rounds). Within the subsection, list severity / source round / source ID / source reviewer / decision as bullets, then **transcribe the entire body** of the finding from the source review document (the range from immediately below `### {id} — ...` up to just before `---`, excluding the `<!-- METADATA(id) --> ... <!-- /METADATA(id) -->` block) after a `**Finding:**` label, **without omission**. Separate subsections with `---`.
22
26
23
27
Return value: `{report_path, template_id}`. Include `template_id` exactly as Read from this template's frontmatter.
0 commit comments