5.4 KiB
5.4 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| boo-reviewing-code | Reviews a diff, branch, or PR before merge and produces classified findings with file:line citations. Use when changes exist and need a verdict before merging, including "look this over," "is this safe to ship," "check my branch." Do NOT use for whole-codebase health scans with no diff in scope; use boo-auditing-code-quality. Do NOT use for diagnosing runtime failures; use boo-investigating-failures. Do NOT use to validate an OpenSpec change folder against its specs; use boo-validating-changes. |
|
Reviewing Code
Size
Classify small/medium/large from files touched, subsystems/surfaces affected, and whether security, data, or infrastructure paths are involved. Default: small (single-file change, no cross-cutting concerns). Announce chosen size with one-line justification. Accept $size override.
Process
- Size the review. If no size override provided, classify from the diff scope.
- Always dispatch
junior-developerandadversarial-security-analyst. - Add conditional agents based on what changed files touch:
- Tests or test infrastructure changed: dispatch
test-engineer. - Edge-case surface (validation, parsing, user input): dispatch
edge-case-explorer. - Module boundaries or file organization changed: dispatch
structural-analyst. - Data flow, error handling, or state logic changed: dispatch
behavioral-analyst. - Async, threading, or concurrent access changed: dispatch
concurrency-analyst.
- Tests or test infrastructure changed: dispatch
- Collect all findings. Classify each as:
- Blocking -- must be resolved before merge. Correctness, security, data loss.
- Advisory -- should be addressed but does not block merge. Apply YAGNI gate: if the advisory recommendation lacks evidence of a real problem (a past incident, a performance metric, a bug report), defer it with a reopen trigger.
- Nit -- style preference or minor improvement. No gate needed.
- Produce the review report with verdict. Stop. Do not modify any files.
What NOT to do
- Do not fix code during the review. Findings only, no edits.
- Do not report findings on unchanged code. That is the audit skill's job (boo-auditing-code-quality).
- Do not flag style preferences on lines the diff did not touch.
Gotchas
- Evidence rule: codebase citations (file:line) stand alone. Web claims need corroboration or a single-source flag. No evidence means defer with a reopen trigger.
- Sizing: default is small. Only escalate on concrete signals -- file count, subsystem span, security/data/infra surface.
- Subagent visibility: when the Paseo MCP tools (
mcp__paseo__*) are available, spawn each agent persona as an attached Paseo subagent withcreate_agent(detached: false,notifyOnFinish: true; for an opencode provider also passsettings.modeId: "build"andsettings.features.auto_accept: true) so every persona appears in the operator's Paseo agent track. Resolve each persona's provider/model from the active preset'sagentsmap in~/.paseo/orchestration-preferences.json; supervise on the finish notification (never poll) and read each result withget_agent_activity. - Subagent fallback: when the Paseo MCP tools are not available, use the platform's native subagent dispatch. On a platform with no subagent dispatch at all (for example Pi), read each
agents/<name>.mdpersona and apply its lens in sequential passes. - Subagent concurrency: honor the active preset's
concurrencyvalue in~/.paseo/orchestration-preferences.json. When it is1(local heavy-weight presets, around 27b/35b or larger on a single llama-swap server), dispatch subagents STRICTLY ONE AT A TIME: launch one, wait for its finish notification and read its result, then launch the next. This overrides any parallel fan-out. Absent or higherconcurrencymeans parallel fan-out is fine.
- No commit: never commit, push, or stage changes; never
git add -A. Prove any edits withgit diff --stat. - No em dashes: never use em dashes (U+2014) in output or files you write.
Output format
# Review: <branch/PR/diff identifier>
## Scope
<Files and ref range reviewed>
## Size
<small/medium/large> -- <one-line justification>
## Summary
<1-3 sentence verdict>
| Classification | Count |
|----------------|-------|
| Blocking | N |
| Advisory | N |
| Nit | N |
## Findings
### Blocking
**B1: <title>**
- **Location:** `file:line`
- **Evidence:** <exact code snippet>
- **Standard violated:** <pattern or principle reference>
- **Risk:** <why this must be resolved before merge>
### Advisory
**A1: <title>**
- **Location:** `file:line`
- **Finding:** <description>
- **YAGNI gate:** <evidence of real problem, or defer trigger>
### Nits
**N1: <title>** -- <one-line note>
## Verdict
**Approve** | **Approve with changes** | **Block**
<Blocking findings enumerated if blocked>
## Claims I did not verify
- <anything assumed or not checked>
Failure modes
- Empty diff: no changes to review. Report and stop.
- Unresolvable merge conflict: cannot determine diff baseline. Report and stop.
- Missing repo: no git repository found. Report and stop.
- Ambiguous scope: diff cannot be isolated to a meaningful change set. Request operator clarification.