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
@@ -36,8 +36,6 @@ If the user does not explicitly specify a review target, use the following as th
36
36
1.**Commits unique to the current branch** — All commits since the divergence point from the base branch (equivalent to `git log {base}..HEAD`).
37
37
2.**Working tree changes** — Both staged (`git diff --cached`) and unstaged (`git diff`) changes.
38
38
39
-
In other words, changes that already exist in the base branch are excluded from review.
40
-
41
39
If a base branch is not specified via `--base`, use `main` or `master` if either exists on the remote (prefer `main` when both exist).
42
40
43
41
## Reviewers
@@ -64,23 +62,20 @@ If a base branch is not specified via `--base`, use `main` or `master` if either
64
62
65
63
1. Based on the user's input, identify the files or diff to review.
66
64
2. Read the target files or diff to grasp the scope.
67
-
3. Produce a concise summary of the review content.
68
-
4. Decide whether to add optional reviewers based on the scope. If the user has explicitly requested specific reviewers, include them.
69
-
5.**Fetch diff information via script** — Run the provided script to collect all diff data atomically. This guarantees every section — including unstaged changes — is always written to the output file:
65
+
3. Decide whether to add optional reviewers based on the scope. If the user has explicitly requested specific reviewers, include them.
66
+
4.**Fetch diff information via script:**
70
67
- Generate an output file path: `.claude/tmp/parallel-review-diff-{timestamp}.txt`
- You are read-only. Do not edit or write any files under any circumstances.
@@ -124,7 +118,7 @@ Once all reviewers have completed, consolidate their findings into a single repo
124
118
1. **Deduplicate** — When multiple reviewers point out the same issue, merge them into a single entry and record which reviewers identified it.
125
119
2. **Reorder** — Group by severity: Critical → Major → Minor → Info.
126
120
127
-
**Triage of whether to act on findings is out of scope for this skill.** The review leader focuses solely on deduplicating and ordering raw findings.
121
+
**Triage of whether to act on findings is out of scope for this skill.**
128
122
129
123
### Report Format
130
124
@@ -146,19 +140,13 @@ Produce the final report in the following format:
146
140
147
141
**Finding:**
148
142
149
-
Description of the finding. May span multiple paragraphs and include code snippets, rationale, and references.
143
+
{description of the finding}
150
144
151
145
<!-- METADATA(C-1) -->
152
146
<!-- /METADATA(C-1) -->
153
147
154
148
---
155
149
156
-
### C-2 — `file.cpp:88`
157
-
158
-
...
159
-
160
-
---
161
-
162
150
## Major
163
151
164
152
### M-1 — `other.cpp:120`
@@ -167,7 +155,7 @@ Description of the finding. May span multiple paragraphs and include code snippe
167
155
168
156
**Finding:**
169
157
170
-
...
158
+
{description of the finding}
171
159
172
160
<!-- METADATA(M-1) -->
173
161
<!-- /METADATA(M-1) -->
@@ -182,9 +170,7 @@ No findings
182
170
183
171
## Info
184
172
185
-
### I-1 — `bar.cpp:7`
186
-
187
-
...
173
+
No findings
188
174
189
175
---
190
176
@@ -207,4 +193,8 @@ No findings
207
193
208
194
## Step 4 — Clean Up Temporary Files
209
195
210
-
If the diff was saved to a temporary file in Step 1 item 6, delete that file after report integration completes. The diff is no longer needed once all reviewers have finished.
196
+
After report integration completes, delete the diff file fetched in Step 1 item 4.
You are the **review verifier**. Your role is to re-read the updated review document, verify each finding's resolution against the actual source code, and write the verification result back as `verification` metadata.
10
10
11
-
Verification results are reflected into the review document (Step 4) and also printed as a report to the console (Step 3).
12
-
13
11
## Input
14
12
15
13
The user specifies a path to a review document (markdown). If the argument is `$ARGUMENTS`, interpret it as the path to the review document.
@@ -64,41 +62,35 @@ Do not write a `verification` for Unresolved findings.
64
62
65
63
## Internal Processing (events.jsonl)
66
64
67
-
This skill uses **`{basename}.events.jsonl` in the same directory as the markdown** as an intermediate representation (e.g., `review-round1.md` → `review-round1.events.jsonl`).
65
+
This skill uses **`{basename}.events.jsonl` in the same directory as the markdown** as an intermediate representation (e.g., `review-round1.md` → `review-round1.events.jsonl`; referred to as `{events_path}` below).
68
66
69
-
Each finding's verification verdict is held in the leader's context during Step 2, then in Step 4 **all events are written out at once with the Write tool**, and `render-review.py` reflects them into the markdown:
67
+
Each finding's verification verdict is held in the leader's context during Step 2, then in Step 4 **all events are written out at once with the Write tool**.
70
68
71
69
```jsonl
72
70
{"id":"C-1","field":"verification","value":"✅ Verified — Null check fix is correct"}
73
71
{"id":"M-1","field":"verification","value":"💬 Feedback — LOG_ERROR is missing in the else branch at line 85"}
74
72
```
75
73
76
-
**Important:**Do not use Bash cat heredoc (`cat >> file <<'EOF' ... EOF`). Apostrophes inside values (e.g., `Won't`) interfere with the outer quoting and cause bash syntax errors. Instead, use the Write tool to write the entire file at once.
74
+
Use the **Write tool**for the file. Bash cat heredoc is unusable because apostrophes inside values (e.g., `Won't`) break the outer quoting.
77
75
78
76
## Step 1 — Re-read and Parse
79
77
80
78
1. Read the entire review document.
81
-
2. Determine the events.jsonl path: in the same directory as the markdown, replace the `.md` suffix of the basename with `.events.jsonl` (referred to as `{events_path}` below; e.g., `review-round1.md` → `review-round1.events.jsonl`). Writing to this file is performed in bulk in Step 4, so no creation is needed in this step.
82
-
3. Extract every finding from the **Critical**, **Major**, and **Minor** sections.
83
-
4. For each finding, extract:
79
+
2. Extract every finding from the **Critical**, **Major**, and **Minor** sections.
80
+
3. For each finding, extract:
84
81
- Finding ID, severity, location (file and line number), description
85
82
- The metadata between the markers (presence and values of triage / estimate / status)
86
83
87
84
## Step 2 — Verify Each Finding
88
85
89
-
Depending on the metadata between the markers, read the actual source code and verify the resolution status:
90
-
91
86
### `Status: 🟢 Fixed` is present
92
87
93
-
The expected fix differs depending on whether the immediately preceding Estimate is `▶️ Maintain` or `🚧 Alternative`.
94
-
95
88
1. Read the referenced files and lines.
96
89
2. Confirm that the recorded fix is actually present in the code.
97
-
-**When Estimate is `▶️ Maintain`:** Confirm that a regular fix (including logic changes) addressing the finding is reflected.
98
-
-**When Estimate is `🚧 Alternative`:** Confirm that an appropriate `FIXME:` / `TODO:` comment has been added at the relevant location. Also check that the comment wording roughly matches the FIXME direction recorded in Estimate. Logic changes are not expected.
99
-
3. Confirm that the fix fully addresses the original problem (for Maintain), or that the FIXME comment carries enough information for a future fix (for Alternative).
100
-
4. Confirm that the fix has not introduced new issues (regressions, new bugs, style violations, thread safety problems, resource leaks, etc.).
101
-
5. Verdict:
90
+
-**When Estimate is `▶️ Maintain`:** Confirm that a regular fix (including logic changes) addressing the finding is reflected and that it fully addresses the original problem.
91
+
-**When Estimate is `🚧 Alternative`:** Confirm that an appropriate `FIXME:` / `TODO:` comment has been added at the relevant location. Also check that the comment wording roughly matches the FIXME direction recorded in Estimate and carries enough information for a future fix. Logic changes are not expected.
92
+
3. Confirm that the fix has not introduced new issues (regressions, new bugs, style violations, thread safety problems, resource leaks, etc.).
93
+
4. Verdict:
102
94
-**Resolved** — The fix is correct, complete, and introduces no new issues.
103
95
-**Feedback** — The fix is missing, incomplete, or introduces a new issue. Describe what remains.
104
96
@@ -153,25 +145,19 @@ The expected fix differs depending on whether the immediately preceding Estimate
153
145
|---|----------|----------------|---------|
154
146
| C-1 | Critical | Status: 🟢 Fixed | Fix is correct and complete. |
155
147
| M-2 | Major | Triage: 🚫 Won't Fix | Rationale is valid. |
156
-
| M-3 | Major | Estimate: 🔻 Downgrade | Downgrade rationale is valid. Separate-PR recommendation noted. |
157
-
| M-4 | Major | Status: 🟢 Fixed | Alternative FIXME inserted. Wording matches the Estimate's direction. |
158
148
159
149
### Feedback Required
160
150
161
151
| # | Severity | Trailing field | Issue |
162
152
|---|----------|----------------|-------|
163
153
| M-1 | Major | Status: 🟢 Fixed | The fix addresses the null check, but the `else` branch at line 85 returns without logging. |
164
-
| m-1 | Minor | Status: 🟢 Fixed | The added `disconnect()` call at line 102 fires on destruction and may cause a double disconnect. |
165
-
| M-5 | Major | Estimate: 🔻 Downgrade | The downgrade reason is solely "FIXME-origin", but no existing FIXME is found at the location, so the rationale does not match the current code. |
166
154
167
155
### Unresolved
168
156
169
157
| # | Severity | Trailing field | Note |
170
158
|---|----------|----------------|------|
171
159
| m-3 | Minor | (none) | No verdict line recorded (not yet triaged). |
172
-
| m-4 | Minor | Triage: 🔧 Will Fix | Triaged, but estimate not yet completed. |
173
160
| m-5 | Minor | Estimate: ▶️ Maintain | Estimated, but fix not yet completed. |
174
-
| m-6 | Minor | Estimate: 🚧 Alternative | FIXME insertion not yet completed. |
175
161
176
162
## Summary
177
163
@@ -203,23 +189,9 @@ For each finding requiring feedback, write a detailed description after the summ
203
189
204
190
Write all verification events accumulated in the leader's context during Step 2 to events.jsonl in one shot, then reflect them into the markdown via `render-review.py`.
205
191
206
-
### 4a. Write events.jsonl (Write tool)
192
+
### 4a. Write events.jsonl
207
193
208
-
Use the **Write tool** to write the entire events.jsonl content to `{events_path}`. JSONL format with one event per line:
209
-
210
-
```jsonl
211
-
{"id":"C-1","field":"verification","value":"✅ Verified — Null check fix is correct"}
212
-
{"id":"M-2","field":"verification","value":"✅ Verified — Won't Fix rationale is valid"}
213
-
{"id":"M-3","field":"verification","value":"✅ Verified — Downgrade rationale is valid; separate-PR recommendation noted"}
214
-
{"id":"M-1","field":"verification","value":"💬 Feedback — LOG_ERROR is missing in the else branch at line 85"}
215
-
{"id":"M-5","field":"verification","value":"💬 Feedback — No existing FIXME at the location; downgrade reason does not match the current code"}
216
-
```
217
-
218
-
**Important:** Do not use Bash cat heredoc (apostrophes inside values would interfere with the outer quoting and cause errors). The Write tool can output values without worrying about special characters.
219
-
220
-
Do not write events for **Unresolved** findings (since the fix or estimate is not yet complete, they are not at the stage of receiving a verification).
221
-
222
-
Values must fit on a **single line**. When a feedback verdict requires a detailed explanation, write it in the report's Feedback Details section and keep the events value as a summary of that.
194
+
Use the Write tool to write all events to `{events_path}` (one event per line in JSONL). Format: see Internal Processing section. Do not write events for **Unresolved** findings (they are not at the stage of receiving a verification).
`render-review.py` inserts the metadata from events into each finding in the markdown immediately before its `<!-- /METADATA({finding-id}) -->`, in fixed order (`triage` → `estimate` → `status` → `verification`). Existing metadata is preserved, and verification is appended at the end.
237
-
238
-
## Guidelines
239
-
240
-
- Be precise — when reporting an issue, cite specific file paths and line numbers.
241
-
- Do not speculate — only report issues you have confirmed by reading the actual source code.
242
-
- Do not modify the source code. The only change made to the review document is appending the `verification` field via events.jsonl.
0 commit comments