From a30f7079da13904d32a50b73f1ff04c1ed75ca7c Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Mon, 16 Mar 2026 21:52:50 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20Fix-First=20Review=20=E2=80=94=20auto-f?= =?UTF-8?q?ix=20obvious=20issues,=20ask=20about=20hard=20ones=20(v0.4.5)?= =?UTF-8?q?=20(#116)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Fix-First Review — auto-fix obvious issues, ask about hard ones Replace the CRITICAL-only AskUserQuestion flow with Fix-First: - Every finding gets action (not just critical ones) - AUTO-FIX items (dead code, N+1, stale comments) applied directly - ASK items (security, race conditions, design decisions) batched into at most one AskUserQuestion - Fix-First Heuristic in checklist.md (single source of truth) - Gate Classification → Severity Classification rename Co-Authored-By: Claude Opus 4.6 (1M context) * chore: bump version and changelog (v0.4.5) Co-Authored-By: Claude Opus 4.6 (1M context) * docs: polish CHANGELOG v0.4.5 voice — lead with user benefit Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 6 ++++ review/SKILL.md | 55 ++++++++++++++++++++++++++++++----- review/SKILL.md.tmpl | 55 ++++++++++++++++++++++++++++++----- review/checklist.md | 51 ++++++++++++++++++++++++++------ ship/SKILL.md | 29 +++++++++++------- ship/SKILL.md.tmpl | 29 +++++++++++------- test/skill-validation.test.ts | 17 +++++++++-- 7 files changed, 193 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 530f0e757f3bd2d5c9935d64e25a022c18558f52..0321b24c848f1c5e3b55ddf79649566425c27b14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 0.4.5 — 2026-03-16 +- **Review findings now actually get fixed, not just listed.** `/review` and `/ship` used to print informational findings (dead code, test gaps, N+1 queries) and then ignore them. Now every finding gets action: obvious mechanical fixes are applied automatically, and genuinely ambiguous issues are batched into a single question instead of 8 separate prompts. You see `[AUTO-FIXED] file:line Problem → what was done` for each auto-fix. +- **You control the line between "just fix it" and "ask me first."** Dead code, stale comments, N+1 queries get auto-fixed. Security issues, race conditions, design decisions get surfaced for your call. The classification lives in one place (`review/checklist.md`) so both `/review` and `/ship` stay in sync. + ### Fixed - **`$B js "const x = await fetch(...); return x.status"` now works.** The `js` command used to wrap everything as an expression — so `const`, semicolons, and multi-line code all broke. It now detects statements and uses a block wrapper, just like `eval` already did. @@ -10,6 +13,9 @@ ### For contributors +- Gate Classification → Severity Classification rename (severity determines presentation order, not whether you see a prompt). +- Fix-First Heuristic section added to `review/checklist.md` — the canonical AUTO-FIX vs ASK classification. +- New validation test: `Fix-First Heuristic exists in checklist and is referenced by review + ship`. - Extracted `needsBlockWrapper()` and `wrapForEvaluate()` helpers in `read-commands.ts` — shared by both `js` and `eval` commands (DRY). - Added `getRefRole()` to `BrowserManager` — exposes ARIA role for ref selectors without changing `resolveRef` return type. - Click handler auto-routes `[role=option]` refs to `selectOption()` via parent `