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
Restore the /review skill body 1:1 with GaaS code-review
Keep the /review slash name. Park GitHub posting, Linear In Review, ask_operator, fleet mapping, and findings-only on native-integration. Ignore GaaS review SKILL.md in prettier so emphasis stays 1:1.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,12 +19,13 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
19
19
20
20
### Changed
21
21
22
+
- Restore the /review skill body 1:1 with GaaS code-review. Slash stays /review. GitHub posting, Linear In Review, ask_operator, and findings-only stay on native-integration.
22
23
- Restore the scribe skill 1:1 with GaaS. ask_operator mapping stays on native-integration. Slash /scribe remains.
23
24
- Restore the ast-grep skill 1:1 with GaaS. run_shell mapping stays on native-integration. Slash /ast-grep remains.
24
25
- Restore the opsh skill 1:1 with GaaS. Tool/shell mapping stays on native-integration. user-invocable: false stays so it remains use_skill-only.
25
26
- Restore the pull-request-review skill 1:1 with GaaS. ask_operator, /review mapping, and GitHub posting stay on native-integration. Slash /pull-request-review remains.
26
27
- Restore the refactor skill 1:1 with GaaS. ask_operator mapping stays on native-integration. Slash /refactor remains.
27
-
- Ignore GaaS opsh, refactor, scribe, and ast-grepSKILL.md in prettier so table/list alignment stays 1:1.
28
+
- Ignore GaaS opsh, refactor, scribe, ast-grep, and review SKILL.md in prettier so GaaS emphasis/table alignment stays 1:1.
28
29
- Restore the git-rebase skill body 1:1 with GaaS. Intern execution recipe stays on native-integration. user-invocable: false stays so it remains use_skill-only.
29
30
- Restore the linear-issue-workflow skill body 1:1 with GaaS. Claim-first, In Review, and git-worktrees extras stay on native-integration. user-invocable: false stays so it remains use_skill-only.
30
31
- Restore the interview skill body 1:1 with GaaS (AskUserQuestion). Operator-ask mapping stays on native-integration. Slash /interview remains.
Copy file name to clipboardExpand all lines: plugins/corbits-skills/skills/native-integration/SKILL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,6 +43,8 @@ GaaS ast-grep invokes `sg` as a CLI. Corbits extras: run `sg` via `run_shell`. D
43
43
44
44
Slash names that differ from GaaS skill ids: `/review` is GaaS `code-review`; `/create-issue` is GaaS `linear-create`. Keep those Corbits names.
45
45
46
+
GaaS code-review uses "ask the user", "sub-agents"/"subagent", and `typescript-conventions`. Corbits extras: slash stays `/review`; `ask_operator` (tool mapping above); fleet `spawn_agent` for sub-agents; load `typescript` not `typescript-conventions`; findings-only — do not implement fixes; GitHub posting and Linear In Review (this skill). Do not fork the GaaS code-review body.
47
+
46
48
GaaS refactor says "ask clarifying questions" / "ask the user". Corbits extras: `ask_operator` (tool mapping above). Do not fork the GaaS refactor body.
47
49
48
50
GaaS scribe uses the `question` tool. Corbits extras: `ask_operator` (tool mapping above). Do not fork the GaaS scribe body.
description: Review a branch, PR, or path. Determines base and scope, judges only the branch diff, and reports findings with evidence. Does not implement fixes.
3
+
description: Perform a code review or pull request review on a branch
5
4
---
6
5
7
-
# Review
8
-
9
-
How to review a branch, pull request, or path. Findings only — do not implement fixes.
6
+
# Code Review
10
7
11
8
Use this skill when performing code reviews or pull request reviews.
12
9
@@ -54,7 +51,7 @@ the intent of the branch author.
54
51
55
52
### When Base Cannot Be Determined
56
53
57
-
If none of the above methods provide a clear answer, do not assume. `ask_operator`:
54
+
If none of the above methods provide a clear answer, do not assume. Ask the user:
58
55
59
56
> I cannot determine which branch this was based off. What branch should I use
60
57
> as the base for comparison? Common options include `main`, `master`, or
@@ -94,18 +91,18 @@ All new logic, patterns, and naming introduced by the branch should follow
94
91
the project's established conventions. Pre-existing code that appears in
95
92
the diff due to refactoring is exempt from this requirement.
96
93
97
-
If reviewing TypeScript code, consider loading the `typescript`
94
+
If reviewing TypeScript code, consider loading the `typescript-conventions`
98
95
skill for detailed guidance on type patterns, naming, and idioms.
99
96
100
-
## Delegating to fleet agents
97
+
## Delegating to Sub-agents
101
98
102
-
When delegating file review to fleet agents, provide the output of
99
+
When delegating file review to sub-agents, provide the output of
103
100
`git diff <base-branch>...HEAD -- <file>` rather than the full file contents.
104
101
105
-
Fleet agents that receive full files cannot distinguish branch changes from
102
+
Sub-agents that receive full files cannot distinguish branch changes from
106
103
pre-existing code and will flag out-of-scope issues.
107
104
108
-
If full files must be provided for context, explicitly instruct the worker
105
+
If full files must be provided for context, explicitly instruct the sub-agent
109
106
which line ranges were modified by the branch and that only those ranges are
110
107
in scope.
111
108
@@ -146,7 +143,7 @@ as you would speak to a colleague:
146
143
147
144
- Frame suggestions as questions or proposals, not commands.
148
145
"Could we extract this?" not "Extract this."
149
-
- Explain the _why_ -- "so that X" or "because Y" -- not just the _what_.
146
+
- Explain the *why* -- "so that X" or "because Y" -- not just the *what*.
150
147
- Avoid words like "wrong", "broken", "bad". Describe the consequence
151
148
instead: "this will produce incorrect values when..." not "this is wrong."
152
149
- If the fix is small, suggest it concretely. A one-liner suggestion is
@@ -156,7 +153,7 @@ as you would speak to a colleague:
156
153
157
154
## Describe the Branch As It Stands
158
155
159
-
Review comments and PR descriptions must describe the branch's _current_ diff against the base, not the journey that produced it. The merged result is what ships; intermediate states, earlier review rounds, and pre-iteration code are not part of the artifact.
156
+
Review comments and PR descriptions must describe the branch's *current* diff against the base, not the journey that produced it. The merged result is what ships; intermediate states, earlier review rounds, and pre-iteration code are not part of the artifact.
160
157
161
158
Re-derive the description from `git diff <base>...HEAD` every time. Do not trust the existing PR description — it may have been written before the branch was iterated on, and reviewers reading it now should see what is true now.
162
159
@@ -170,7 +167,7 @@ Past-tense framing rots: as the branch evolves through review, descriptions of "
170
167
171
168
## Cite the Check
172
169
173
-
A review report may include affirmative verification claims — "tests pass," "messages are clean," "no regressions," "convention compliance verified." When a review says something is _verified_, the reader takes that as a checked fact. If the check was never run, the report is dishonest. The dishonesty does not surface until a human reviewer finds the issue the agent claimed did not exist.
170
+
A review report may include affirmative verification claims — "tests pass," "messages are clean," "no regressions," "convention compliance verified." When a review says something is *verified*, the reader takes that as a checked fact. If the check was never run, the report is dishonest. The dishonesty does not surface until a human reviewer finds the issue the agent claimed did not exist.
174
171
175
172
**For every affirmative claim in your review, you must be able to cite the specific check that proved it.** A check is a concrete artifact: a command whose output you read, a tool invocation whose results you inspected, a file/line range you examined for a specific pattern. "I considered it" and "it looked fine to me" are not checks.
176
173
@@ -184,24 +181,24 @@ Some properties — subtle concurrency bugs, performance pathologies, security g
184
181
185
182
**Bad → Good:**
186
183
187
-
- "All commit messages are clean." → cite the specific audit command (see _Commit-Message Style Audit_), or strike.
184
+
- "All commit messages are clean." → cite the specific audit command (see *Commit-Message Style Audit*), or strike.
188
185
- "Tests pass." → "`npm test` exited 0," or strike.
189
186
- "Convention compliance verified." → "diffed naming and error-handling shape in the new handlers against `src/api/user.ts` and `src/api/billing.ts`; same `Result<T, E>` return pattern, same `assert`-style guards," or strike.
190
187
- "No race conditions." → "read `lock.go:42-68`, traced lock acquisition order; no acquire-while-holding cycles in those lines. Did not analyze interactions with `pool.go` or callers outside the diff."
191
188
192
189
## Reviewer-of-Record Checks
193
190
194
-
"Cite the Check" requires that affirmative claims have backing. This rule narrows it: for the checks below, the backing must be the reviewer-of-record's own eyes on raw output. The reviewer-of-record is the agent whose verdict ships — when a workflow delegates the deeper read to a fleet agent, the orchestrator remains the reviewer-of-record and these checks stay with them.
191
+
"Cite the Check" requires that affirmative claims have backing. This rule narrows it: for the checks below, the backing must be the reviewer-of-record's own eyes on raw output. The reviewer-of-record is the agent whose verdict ships — when a workflow delegates the deeper read to a subagent, the orchestrator remains the reviewer-of-record and these checks stay with them.
195
192
196
193
Their value is in catching unknown-unknowns. A delegate asked for "a punch list of findings" returns things that fit the punch-list shape; `Bin 0 -> 8181 bytes` on a `.ts` file does not look like a finding, it looks like stat noise, and gets collapsed away. Only direct inspection preserves the signal.
197
194
198
195
**Reviewer-of-record must run, in-session, and read the raw output:**
199
196
200
197
-`git diff <base>...HEAD --stat` — scan for `Bin` markers on any file you did not expect to be binary (source code, markdown, config) and for files outside the branch's stated scope.
201
198
-`git log --oneline <base>..HEAD` — confirm the commits on the branch match the issue's scope; unexpected or off-topic commits are stop conditions.
202
-
- The subject and body audits enumerated under _Commit-Message Style Audit_. That section is the canonical command catalog and pattern list; this section's contribution is the delegation rule — those audits are reviewer-of-record, not fleet-agent work.
199
+
- The subject and body audits enumerated under *Commit-Message Style Audit*. That section is the canonical command catalog and pattern list; this section's contribution is the delegation rule — those audits are reviewer-of-record, not subagent work.
203
200
204
-
Delegating the deeper read (file-by-file behavioral review, architectural analysis, commit-message coherence) to a fleet agent is fine and often valuable for context isolation. Delegating the checks above is not — their value is the raw output landing in front of the reviewer-of-record's eyes.
201
+
Delegating the deeper read (file-by-file behavioral review, architectural analysis, commit-message coherence) to a subagent is fine and often valuable for context isolation. Delegating the checks above is not — their value is the raw output landing in front of the reviewer-of-record's eyes.
205
202
206
203
## Commit-Message Coherence
207
204
@@ -227,7 +224,7 @@ surprised by what the diff actually contains, that is a problem worth raising.
227
224
228
225
Coherence (above) checks that each message accurately describes its diff. Style audit checks that each message conforms to the project's commit-message rules (see the `style` skill, which is the canonical source for the prefix-family list and other rules). The two are independent; both have to be run.
229
226
230
-
Each check below is reviewer-of-record territory (see _Reviewer-of-Record Checks_) — run them in-session and read the raw output yourself. Do not delegate them; a fleet agent asked to "verify style compliance" will return a generic "looks fine" read with no audit trail.
227
+
Each check below is reviewer-of-record territory (see *Reviewer-of-Record Checks*) — run them in-session and read the raw output yourself. Do not delegate them; a subagent asked to "verify style compliance" will return a generic "looks fine" read with no audit trail.
231
228
232
229
**Subject-line audits.** Most checks scan the output of:
233
230
@@ -274,123 +271,14 @@ Affirmative claims about these audits must cite the specific command whose outpu
274
271
275
272
## Review Checklist
276
273
277
-
Items marked _(reviewer-of-record)_ must be run by the agent whose verdict ships — see _Reviewer-of-Record Checks_. Do not delegate them to a fleet agent. Unmarked items are delegable.
274
+
Items marked *(reviewer-of-record)* must be run by the agent whose verdict ships — see *Reviewer-of-Record Checks*. Do not delegate them to a subagent. Unmarked items are delegable.
278
275
279
276
1. Determine the base branch using the methods in "Base Branch Determination"
280
-
2. Run `git log --oneline <base>..HEAD` to understand the scope _(reviewer-of-record)_
281
-
3. Run `git diff <base>...HEAD --stat` to see which files changed _(reviewer-of-record)_
277
+
2. Run `git log --oneline <base>..HEAD` to understand the scope *(reviewer-of-record)*
278
+
3. Run `git diff <base>...HEAD --stat` to see which files changed *(reviewer-of-record)*
282
279
4. Review each changed file, focusing only on lines modified by the branch
283
280
5. For every commit on the branch, verify:
284
-
- Diff matches the commit message (see "Commit-Message Coherence")
285
-
- Subject and body pass the style audit (see "Commit-Message Style Audit") _(reviewer-of-record)_
281
+
- Diff matches the commit message (see "Commit-Message Coherence")
282
+
- Subject and body pass the style audit (see "Commit-Message Style Audit") *(reviewer-of-record)*
286
283
6. Check that new code follows project conventions
287
284
7. Summarize findings with specific file:line references; cite the check behind any affirmative claim (see "Cite the Check")
288
-
8. When the review targets an open GitHub PR, post the review on the PR (see "Post the Review on GitHub")
289
-
290
-
## Post the Review on GitHub
291
-
292
-
When the branch under review has an open GitHub pull request, **post the finished review on the PR**. A review that only lives in the chat session is not done.
293
-
294
-
This step is the delivery of the review, not a second pass of analysis. By the time you post, findings are already decided. Do not reopen the read while drafting the body.
295
-
296
-
### When to post
297
-
298
-
Post when any of these is true:
299
-
300
-
- The user asked for a PR review (`pull-request-review`, a PR URL, or an explicit "review #N")
301
-
-`linear-issue-workflow` Phase 5 self-review has cleared and Phase 6 is opening or updating the PR
302
-
- An open PR exists for the branch and the review's purpose is to leave a record on it
303
-
304
-
Do **not** post when the user only asked for a private/local read with no PR, or when the branch has no open PR and creating one is out of scope.
305
-
306
-
### Multi-persona reviews
307
-
308
-
When the workflow ran more than one review lens (for example `critic` for behavioral/architecture, `greybeard` for waivers or product judgment, an OSS/quality agent for packaging and public-API bar), each lens that produced a distinct judgment **posts its own review**. Do not collapse independent verdicts into one mushy "team thinks" paragraph.
| Primary / orchestrator | Verdict on the branch as it stands; residual findings; waiver list | Always when posting |
313
-
| Critic | Behavioral bugs, missing tests, architecture, commit coherence | When a critic director ran |
314
-
| Greybeard | Waiver rulings and intentional exceptions | When Greybeard authorized any waiver, or when product/architecture judgment was requested |
315
-
| OSS / quality | Public-API, packaging, polish bar for shippable surface | When that lens was explicitly run |
316
-
317
-
Same GitHub account is fine. Label each post so a human can tell which lens spoke. Prefer separate `gh pr review` / `gh pr comment` posts over one mega-comment when more than one lens has substance.
318
-
319
-
If only the primary review ran, post once. Do not invent extra personas.
320
-
321
-
### Command
322
-
323
-
Use a real GitHub review, not a floating issue comment, for the primary verdict:
Secondary persona posts may use `gh pr review --comment` or `gh pr comment`. Prefer `gh pr review --comment` so they appear in the Reviews timeline. Never `--approve` from a secondary lens that did not own the merge verdict.
346
-
347
-
### Body shape (no AI slop)
348
-
349
-
Write like a senior engineer leaving a review on a busy PR. Short. Specific. Present tense. No journey narration.
350
-
351
-
**Required shape:**
352
-
353
-
```markdown
354
-
## <Lens> · <Approve | Comment | Request changes>
355
-
356
-
<one line: what the branch does, present tense — not how it got there>
- <optional; only load-bearing context the author needs>
366
-
```
367
-
368
-
When the review is clean:
369
-
370
-
```markdown
371
-
## Review · Approve
372
-
373
-
Hub list/get/upload under `/api/tenants/:id/artifacts`; Library reads that plane.
374
-
375
-
No findings.
376
-
```
377
-
378
-
**Hard bans** (delete on sight before posting):
379
-
380
-
- Throat-clearing: "Great work", "Thanks for this", "Overall this looks solid", "Happy to approve"
381
-
- AI filler: "I'd like to highlight", "It's worth noting", "In conclusion", "Going forward"
382
-
- Journey talk: "this PR adds… then fixes… after feedback…"
383
-
- Fake balance: praising three things to soften one finding
384
-
- Emoji, decorative headers, horizontal rules used as ornament
385
-
- Restating the diff file-by-file when there is no finding
386
-
- "LGTM" alone with no one-line present-tense description of what the branch does
387
-
388
-
**Findings rules:**
389
-
390
-
- Every finding has a `path:line` (or `path` when line is meaningless) and a concrete failure mode
391
-
- Severity is the review action (`--request-changes` vs `--comment`), not adjectives in the body
392
-
- No "nit:" / "minor:" / "suggestion:" as a way to smuggle unactionable taste — if it is not worth the author's time, drop it (see Signal Over Noise)
393
-
394
-
### After posting
395
-
396
-
Paste the review URL(s) back to the user. Do not mark the Linear issue Done. `--request-changes` is not merge-ready. While the PR is open and ready for review, the issue stays In Review — including after `--request-changes`. Do not ping-pong it back to In Progress. `linear-issue-workflow` owns the In Review write; this skill does not set Linear state.
0 commit comments