mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-18 10:31:30 +08:00
feat: design review lite in /review and /ship + gstack-diff-scope (v0.6.3) (#142)
* feat: gstack-diff-scope helper + design review checklist
bin/gstack-diff-scope categorizes branch changes into SCOPE_FRONTEND,
SCOPE_BACKEND, SCOPE_PROMPTS, SCOPE_TESTS, SCOPE_DOCS, SCOPE_CONFIG.
review/design-checklist.md is a 20-item code-level checklist with
HIGH/MEDIUM/LOW confidence tags for detecting design anti-patterns
from source code.
* feat: integrate design review lite into /review and /ship
Add generateDesignReviewLite() resolver, insert {{DESIGN_REVIEW_LITE}}
partial in review Step 4.5 and ship Step 3.5. Update dashboard to
recognize design-review-lite entries. Ship pre-flight uses
gstack-diff-scope for smarter design review recommendations.
* test: E2E eval for design review lite detection
Planted CSS/HTML fixtures with 7 design anti-patterns. E2E test
verifies /review catches >= 4 of 7 (Papyrus font, 14px body text,
outline:none, !important, purple gradient, generic hero copy,
3-column feature grid).
* chore: bump version and changelog (v0.6.3.0)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
86
test/fixtures/review-eval-design-slop.css
vendored
Normal file
86
test/fixtures/review-eval-design-slop.css
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Planted design anti-patterns for E2E eval — 7 issues */
|
||||
|
||||
/* Issue 1: [HIGH] Blacklisted font (Papyrus) */
|
||||
/* Issue 2: [HIGH] Body text < 16px (14px) */
|
||||
body {
|
||||
font-family: 'Papyrus', sans-serif;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Issue 5: [MEDIUM] Purple/violet gradient background */
|
||||
.hero {
|
||||
background: linear-gradient(135deg, #6366f1, #8b5cf6);
|
||||
text-align: center;
|
||||
padding: 80px 20px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.hero h1 {
|
||||
text-align: center;
|
||||
font-size: 48px;
|
||||
}
|
||||
|
||||
.hero p {
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
/* Issue 7: [LOW] 3-column feature grid with icon circles */
|
||||
.features {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 24px;
|
||||
padding: 60px 40px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.feature-card {
|
||||
border-radius: 24px;
|
||||
padding: 32px;
|
||||
text-align: center;
|
||||
background: #f9fafb;
|
||||
}
|
||||
|
||||
/* Icon in colored circle — AI slop pattern */
|
||||
.icon-circle {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 50%;
|
||||
background: #ede9fe;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 0 auto 16px;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
/* Issue 3: [HIGH] outline: none without replacement */
|
||||
button {
|
||||
outline: none;
|
||||
background: #6366f1;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 12px 24px;
|
||||
border-radius: 24px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.small-link {
|
||||
font-size: 11px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
/* Issue 4: [HIGH] !important usage */
|
||||
.override {
|
||||
color: red !important;
|
||||
margin-left: 10px !important;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 40px;
|
||||
background: #1e1b4b;
|
||||
color: white;
|
||||
}
|
||||
41
test/fixtures/review-eval-design-slop.html
vendored
Normal file
41
test/fixtures/review-eval-design-slop.html
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<title>Our Platform</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Issue 6: [MEDIUM] Generic hero copy ("Welcome to...", "all-in-one solution") -->
|
||||
<div class="hero">
|
||||
<h1>Welcome to Our Platform</h1>
|
||||
<p>Your all-in-one solution for everything you need</p>
|
||||
<button>Get Started</button>
|
||||
</div>
|
||||
|
||||
<!-- Issue 7: [LOW] 3-column feature grid with icon-in-circle + title + description -->
|
||||
<div class="features">
|
||||
<div class="feature-card">
|
||||
<div class="icon-circle">★</div>
|
||||
<h3>Feature One</h3>
|
||||
<p>A short description of this amazing feature that will change your life.</p>
|
||||
</div>
|
||||
<div class="feature-card">
|
||||
<div class="icon-circle">⚡</div>
|
||||
<h3>Feature Two</h3>
|
||||
<p>Another incredible capability that sets us apart from the competition.</p>
|
||||
</div>
|
||||
<div class="feature-card">
|
||||
<div class="icon-circle">⚙</div>
|
||||
<h3>Feature Three</h3>
|
||||
<p>Yet another powerful tool to streamline your workflow effortlessly.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p class="override">Unlock the power of our platform today</p>
|
||||
<a href="#" class="small-link">Terms of Service</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user