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
Copy file name to clipboardExpand all lines: CHANGELOG.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,14 @@
1
1
# Changelog
2
2
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.
**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).~~
450
450
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.
452
452
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).
Copy file name to clipboardExpand all lines: plan-ceo-review/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -702,7 +702,7 @@ echo "---CONFIG---"
702
702
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null ||echo"false"
703
703
```
704
704
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:
Copy file name to clipboardExpand all lines: plan-design-review/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -645,7 +645,7 @@ echo "---CONFIG---"
645
645
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null ||echo"false"
646
646
```
647
647
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:
Copy file name to clipboardExpand all lines: plan-eng-review/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -348,7 +348,7 @@ echo "---CONFIG---"
348
348
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null ||echo"false"
349
349
```
350
350
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:
**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:
-**[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:
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
+
199
240
## Step 5: Fix-First Review
200
241
201
242
**Every finding gets action — not just critical ones.**
Copy file name to clipboardExpand all lines: ship/SKILL.md
+45-3Lines changed: 45 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -186,7 +186,7 @@ echo "---CONFIG---"
186
186
~/.claude/skills/gstack/bin/gstack-config get skip_eng_review 2>/dev/null ||echo"false"
187
187
```
188
188
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:
@@ -226,7 +226,8 @@ If the Eng Review is NOT "CLEAR":
226
226
- Show that Eng Review is missing or has open issues
227
227
- RECOMMENDATION: Choose C if the change is obviously trivial (< 20 lines, typo fix, config-only); Choose B for larger changes
228
228
- 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.
230
231
231
232
3.**If the user chooses A or C,** persist the decision so future `/ship` runs on this branch skip the gate:
232
233
```bash
@@ -642,6 +643,43 @@ Review the diff for structural issues that tests don't catch.
**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:
-**[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:
0 commit comments