Skip to content

Commit c2c4298

Browse files
garrytanclaude
andcommitted
chore: bump version and changelog (v0.6.3.0)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 410e116 commit c2c4298

8 files changed

Lines changed: 105 additions & 13 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## [0.6.3.0] - 2026-03-17
4+
5+
### Added
6+
7+
- **Every PR touching frontend code now gets a design review automatically.** `/review` and `/ship` apply a 20-item design checklist against changed CSS, HTML, JSX, and view files. Catches AI slop patterns (purple gradients, 3-column icon grids, generic hero copy), typography issues (body text < 16px, blacklisted fonts), accessibility gaps (`outline: none`), and `!important` abuse. Mechanical CSS fixes are auto-applied; design judgment calls ask you first.
8+
- **`gstack-diff-scope` categorizes what changed in your branch.** Run `eval $(gstack-diff-scope main)` and get `SCOPE_FRONTEND=true/false`, `SCOPE_BACKEND`, `SCOPE_PROMPTS`, `SCOPE_TESTS`, `SCOPE_DOCS`, `SCOPE_CONFIG`. Design review uses it to skip silently on backend-only PRs. Ship pre-flight uses it to recommend design review when frontend files are touched.
9+
- **Design review shows up in the Review Readiness Dashboard.** The dashboard now distinguishes between "LITE" (code-level, runs automatically in /review and /ship) and "FULL" (visual audit via /plan-design-review with browse binary). Both show up as Design Review entries.
10+
- **E2E eval for design review detection.** Planted CSS/HTML fixtures with 7 known anti-patterns (Papyrus font, 14px body text, `outline: none`, `!important`, purple gradient, generic hero copy, 3-column feature grid). The eval verifies `/review` catches at least 4 of 7.
11+
312
## [0.6.2.0] - 2026-03-17
413

514
### Added

TODOS.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -444,17 +444,17 @@ Shipped as `/design-consultation` on garrytan/design branch. Renamed from `/setu
444444

445445
## Ship Confidence Dashboard
446446

447-
### Smart review relevance detection
447+
### Smart review relevance detection — PARTIALLY SHIPPED
448448

449-
**What:** Auto-detect which of the 4 reviews are relevant based on branch changes (skip Design Review if no CSS/view changes, skip Code Review if plan-only).
449+
~~**What:** Auto-detect which of the 4 reviews are relevant based on branch changes (skip Design Review if no CSS/view changes, skip Code Review if plan-only).~~
450450

451-
**Why:** Currently dashboard always shows 4 rows. On docs-only changes, "Design Review: NOT YET RUN" is noise.
451+
`bin/gstack-diff-scope` shipped — categorizes diff into SCOPE_FRONTEND, SCOPE_BACKEND, SCOPE_PROMPTS, SCOPE_TESTS, SCOPE_DOCS, SCOPE_CONFIG. Used by design-review-lite to skip when no frontend files changed. Dashboard integration for conditional row display is a follow-up.
452452

453-
**Context:** /plan-design-review and /qa already do file-type detection in diff-aware mode. Could reuse that heuristic. Would require a `gstack-diff-scope` helper or enriching `gstack-slug` to also output change categories.
453+
**Remaining:** Dashboard conditional row display (hide "Design Review: NOT YET RUN" when SCOPE_FRONTEND=false). Extend to Eng Review (skip for docs-only) and CEO Review (skip for config-only).
454454

455-
**Effort:** M
455+
**Effort:** S
456456
**Priority:** P3
457-
**Depends on:** Ship Confidence Dashboard (shipped)
457+
**Depends on:** gstack-diff-scope (shipped)
458458

459459
### /merge skill — review-gated PR merge
460460

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.6.2.0
1+
0.6.3.0

plan-ceo-review/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ echo "---CONFIG---"
702702
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null || echo "false"
703703
```
704704

705-
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review). Ignore entries with timestamps older than 7 days. Display:
705+
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review, design-review-lite). Ignore entries with timestamps older than 7 days. For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append "(FULL)" or "(LITE)" to the status to distinguish. Display:
706706

707707
```
708708
+====================================================================+

plan-design-review/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ echo "---CONFIG---"
645645
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null || echo "false"
646646
```
647647

648-
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review). Ignore entries with timestamps older than 7 days. Display:
648+
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review, design-review-lite). Ignore entries with timestamps older than 7 days. For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append "(FULL)" or "(LITE)" to the status to distinguish. Display:
649649

650650
```
651651
+====================================================================+

plan-eng-review/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ echo "---CONFIG---"
348348
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null || echo "false"
349349
```
350350

351-
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review). Ignore entries with timestamps older than 7 days. Display:
351+
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review, design-review-lite). Ignore entries with timestamps older than 7 days. For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append "(FULL)" or "(LITE)" to the status to distinguish. Display:
352352

353353
```
354354
+====================================================================+

review/SKILL.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,47 @@ Follow the output format specified in the checklist. Respect the suppressions
196196

197197
---
198198

199+
## Step 4.5: Design Review (conditional)
200+
201+
## Design Review (conditional, diff-scoped)
202+
203+
Check if the diff touches frontend files using `gstack-diff-scope`:
204+
205+
```bash
206+
eval $(~/.claude/skills/gstack/bin/gstack-diff-scope <base> 2>/dev/null)
207+
```
208+
209+
**If `SCOPE_FRONTEND=false`:** Skip design review silently. No output.
210+
211+
**If `SCOPE_FRONTEND=true`:**
212+
213+
1. **Check for DESIGN.md.** If `DESIGN.md` or `design-system.md` exists in the repo root, read it. All design findings are calibrated against it — patterns blessed in DESIGN.md are not flagged. If not found, use universal design principles.
214+
215+
2. **Read `.claude/skills/review/design-checklist.md`.** If the file cannot be read, skip design review with a note: "Design checklist not found — skipping design review."
216+
217+
3. **Read each changed frontend file** (full file, not just diff hunks). Frontend files are identified by the patterns listed in the checklist.
218+
219+
4. **Apply the design checklist** against the changed files. For each item:
220+
- **[HIGH] mechanical CSS fix** (`outline: none`, `!important`, `font-size < 16px`): classify as AUTO-FIX
221+
- **[HIGH/MEDIUM] design judgment needed**: classify as ASK
222+
- **[LOW] intent-based detection**: present as "Possible — verify visually or run /qa-design-review"
223+
224+
5. **Include findings** in the review output under a "Design Review" header, following the output format in the checklist. Design findings merge with code review findings into the same Fix-First flow.
225+
226+
6. **Log the result** for the Review Readiness Dashboard:
227+
228+
```bash
229+
eval $(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)
230+
mkdir -p ~/.gstack/projects/$SLUG
231+
echo '{"skill":"design-review-lite","timestamp":"TIMESTAMP","status":"STATUS","findings":N,"auto_fixed":M}' >> ~/.gstack/projects/$SLUG/$BRANCH-reviews.jsonl
232+
```
233+
234+
Substitute: TIMESTAMP = ISO 8601 datetime, STATUS = "clean" if 0 findings or "issues_found", N = total findings, M = auto-fixed count.
235+
236+
Include any design findings alongside the findings from Step 4. They follow the same Fix-First flow in Step 5 — AUTO-FIX for mechanical CSS fixes, ASK for everything else.
237+
238+
---
239+
199240
## Step 5: Fix-First Review
200241

201242
**Every finding gets action — not just critical ones.**

ship/SKILL.md

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ echo "---CONFIG---"
186186
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null || echo "false"
187187
```
188188

189-
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review). Ignore entries with timestamps older than 7 days. Display:
189+
Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review, design-review-lite). Ignore entries with timestamps older than 7 days. For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append "(FULL)" or "(LITE)" to the status to distinguish. Display:
190190

191191
```
192192
+====================================================================+
@@ -226,7 +226,8 @@ If the Eng Review is NOT "CLEAR":
226226
- Show that Eng Review is missing or has open issues
227227
- RECOMMENDATION: Choose C if the change is obviously trivial (< 20 lines, typo fix, config-only); Choose B for larger changes
228228
- Options: A) Ship anyway B) Abort — run /plan-eng-review first C) Change is too small to need eng review
229-
- If CEO/Design reviews are missing, mention them as informational ("CEO Review not run — recommended for product changes") but do NOT block or recommend aborting for them
229+
- If CEO Review is missing, mention as informational ("CEO Review not run — recommended for product changes") but do NOT block
230+
- For Design Review: run `eval $(~/.claude/skills/gstack/bin/gstack-diff-scope <base> 2>/dev/null)`. If `SCOPE_FRONTEND=true` and no design review (plan-design-review or design-review-lite) exists in the dashboard, mention: "Design Review not run — this PR changes frontend code. The lite design check will run automatically in Step 3.5, but consider running /plan-design-review for a full visual audit." Still never block.
230231

231232
3. **If the user chooses A or C,** persist the decision so future `/ship` runs on this branch skip the gate:
232233
```bash
@@ -642,6 +643,43 @@ Review the diff for structural issues that tests don't catch.
642643
- **Pass 1 (CRITICAL):** SQL & Data Safety, LLM Output Trust Boundary
643644
- **Pass 2 (INFORMATIONAL):** All remaining categories
644645

646+
## Design Review (conditional, diff-scoped)
647+
648+
Check if the diff touches frontend files using `gstack-diff-scope`:
649+
650+
```bash
651+
eval $(~/.claude/skills/gstack/bin/gstack-diff-scope <base> 2>/dev/null)
652+
```
653+
654+
**If `SCOPE_FRONTEND=false`:** Skip design review silently. No output.
655+
656+
**If `SCOPE_FRONTEND=true`:**
657+
658+
1. **Check for DESIGN.md.** If `DESIGN.md` or `design-system.md` exists in the repo root, read it. All design findings are calibrated against it — patterns blessed in DESIGN.md are not flagged. If not found, use universal design principles.
659+
660+
2. **Read `.claude/skills/review/design-checklist.md`.** If the file cannot be read, skip design review with a note: "Design checklist not found — skipping design review."
661+
662+
3. **Read each changed frontend file** (full file, not just diff hunks). Frontend files are identified by the patterns listed in the checklist.
663+
664+
4. **Apply the design checklist** against the changed files. For each item:
665+
- **[HIGH] mechanical CSS fix** (`outline: none`, `!important`, `font-size < 16px`): classify as AUTO-FIX
666+
- **[HIGH/MEDIUM] design judgment needed**: classify as ASK
667+
- **[LOW] intent-based detection**: present as "Possible — verify visually or run /qa-design-review"
668+
669+
5. **Include findings** in the review output under a "Design Review" header, following the output format in the checklist. Design findings merge with code review findings into the same Fix-First flow.
670+
671+
6. **Log the result** for the Review Readiness Dashboard:
672+
673+
```bash
674+
eval $(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)
675+
mkdir -p ~/.gstack/projects/$SLUG
676+
echo '{"skill":"design-review-lite","timestamp":"TIMESTAMP","status":"STATUS","findings":N,"auto_fixed":M}' >> ~/.gstack/projects/$SLUG/$BRANCH-reviews.jsonl
677+
```
678+
679+
Substitute: TIMESTAMP = ISO 8601 datetime, STATUS = "clean" if 0 findings or "issues_found", N = total findings, M = auto-fixed count.
680+
681+
Include any design findings alongside the code review findings. They follow the same Fix-First flow below.
682+
645683
4. **Classify each finding as AUTO-FIX or ASK** per the Fix-First Heuristic in
646684
checklist.md. Critical findings lean toward ASK; informational lean toward AUTO-FIX.
647685

@@ -863,7 +901,11 @@ gh pr create --base <base> --title "<type>: <summary>" --body "$(cat <<'EOF'
863901
<If Step 3.4 ran: "Tests: {before} → {after} (+{delta} new)">
864902
865903
## Pre-Landing Review
866-
<findings from Step 3.5, or "No issues found.">
904+
<findings from Step 3.5 code review, or "No issues found.">
905+
906+
## Design Review
907+
<If design review ran: "Design Review (lite): N findings — M auto-fixed, K skipped. AI Slop: clean/N issues.">
908+
<If no frontend files changed: "No frontend files changed — design review skipped.">
867909
868910
## Eval Results
869911
<If evals ran: suite names, pass/fail counts, cost dashboard summary. If skipped: "No prompt-related files changed — evals skipped.">

0 commit comments

Comments
 (0)