M CHANGELOG.md => CHANGELOG.md +6 -1
@@ 1,7 1,12 @@
# Changelog
-## 0.5.1 — 2026-03-17
+## 0.5.2 — 2026-03-17
+
+- **Your design consultant now takes creative risks.** `/design-consultation` doesn't just propose a safe, coherent system — it explicitly breaks down SAFE CHOICES (category baseline) vs. RISKS (where your product stands out). You pick which rules to break. Every risk comes with a rationale for why it works and what it costs.
+- **See the competition before you choose.** When you opt into research, the agent browses competitor sites with screenshots and accessibility tree analysis — not just web search results. You see what the landscape looks like before making design decisions.
+- **Preview pages that look like your product.** The preview page now renders realistic product mockups — dashboards with sidebar nav and data tables, marketing pages with hero sections, settings pages with forms — not just font swatches and color palettes.
+## 0.5.1 — 2026-03-17
- **Know where you stand before you ship.** Every `/plan-ceo-review`, `/plan-eng-review`, and `/plan-design-review` now logs its result to a review tracker. At the end of each review, you see a **Review Readiness Dashboard** showing which reviews are done, when they ran, and whether they're clean — with a clear CLEARED TO SHIP or NOT READY verdict.
- **`/ship` checks your reviews before creating the PR.** Pre-flight now reads the dashboard and asks if you want to continue when reviews are missing. Informational only — it won't block you, but you'll know what you skipped.
- **One less thing to copy-paste.** The SLUG computation (that opaque sed pipeline for computing `owner-repo` from git remote) is now a shared `bin/gstack-slug` helper. All 14 inline copies across templates replaced with `eval $(gstack-slug)`. If the format ever changes, fix it once.
M README.md => README.md +43 -24
@@ 20,7 20,7 @@ Thirteen opinionated workflow skills for [Claude Code](https://docs.anthropic.co
| `/plan-ceo-review` | Founder / CEO | Rethink the problem. Find the 10-star product hiding inside the request. |
| `/plan-eng-review` | Eng manager / tech lead | Lock in architecture, data flow, diagrams, edge cases, and tests. |
| `/plan-design-review` | Senior product designer | Designer's eye audit. 80-item checklist, letter grades, AI Slop detection, DESIGN.md inference. Report only — never touches code. |
-| `/design-consultation` | Design consultant | Build a complete design system from scratch. Researches competitors, proposes aesthetic + typography + color + spacing + motion, generates a preview page, and writes DESIGN.md. |
+| `/design-consultation` | Design consultant | Build a complete design system from scratch. Browses competitors to get in the ballpark, proposes safe choices AND creative risks, generates realistic product mockups, and writes DESIGN.md. |
| `/review` | Paranoid staff engineer | Find the bugs that pass CI but blow up in production. Triages Greptile review comments. |
| `/ship` | Release engineer | Sync main, run tests, resolve Greptile reviews, push, open PR. For a ready branch, not for deciding what to build. |
| `/browse` | QA engineer | Give the agent eyes. It logs in, clicks through your app, takes screenshots, catches breakage. Full QA pass in 60 seconds. |
@@ 344,11 344,15 @@ This is my **design partner mode**.
`/plan-design-review` audits a site that already exists. `/design-consultation` is for when you have nothing yet — no design system, no font choices, no color palette. You are starting from zero and you want a senior designer to sit down with you and build the whole visual identity together.
-It is a conversation, not a form. The agent asks about your product, your users, and your space. If you want, it researches what top competitors in your category are doing — fonts, colors, layout patterns, aesthetic direction. Then it proposes a complete, coherent design system: aesthetic direction, typography (3+ fonts with specific roles), color palette with hex values, spacing scale, layout approach, and motion strategy. Every recommendation comes with a rationale. Every choice reinforces every other choice.
+It is a conversation, not a form. The agent asks about your product, your users, and your audience. It thinks about what your product needs to communicate — trust, speed, craft, warmth, whatever fits — and works backward from that to concrete choices. Then it proposes a complete, coherent design system: aesthetic direction, typography (3+ fonts with specific roles), color palette with hex values, spacing scale, layout approach, and motion strategy. Every recommendation comes with a rationale. Every choice reinforces every other choice.
-The key insight: individual design decisions are easy to make but hard to make coherently. Picking a font is simple. Picking a font that works with your color palette, your spacing density, your aesthetic direction, and your product's personality — that is the actual job. `/design-consultation` solves the coherence problem by proposing everything as one package, then letting you adjust any piece while it checks that the rest still holds together.
+But coherence is table stakes. Every dev tool dashboard looks the same — clean sans-serif, muted grays, a blue accent. They are all coherent. They are all forgettable. The difference between a product that looks "nice" and one that people actually recognize is the **deliberate creative risks**: the unexpected serif for headings, the bold accent nobody else in your category uses, the tighter spacing that makes your data feel authoritative instead of airy.
-After you agree on the system, it generates an interactive HTML preview page — your fonts rendered at real sizes, your color palette as actual UI components (buttons, cards, form inputs, alerts), light/dark mode toggle, all using your product name instead of lorem ipsum. You open the page in your browser and see the design system rendered before a single line of product code is written.
+That is what `/design-consultation` is really about. It does not just propose a safe system. It proposes safe choices AND risks — and tells you which is which. "Here are the choices that keep you literate in your category. And here is where I think you should break from convention, and why." You pick which risks to take. The agent checks that the whole system still coheres either way.
+
+If you want, the agent will browse your competitors' actual sites — take screenshots, analyze their fonts and colors and spacing — so you can see the landscape before you make choices. This is not about copying. It is about getting in the ballpark so you know what the conventions are, and then deciding which ones are worth breaking.
+
+After you agree on the system, it generates an interactive HTML preview page — not just swatches and font samples, but realistic product pages. If you are building a dashboard, you see a dashboard with a sidebar, data tables, and stat cards. If you are building a marketing site, you see a hero section with real copy and a CTA. Everything rendered in your design system, with your product name, in light and dark mode. You see what your product could feel like before a single line of production code is written.
Then it writes `DESIGN.md` to your repo root — your project's design source of truth — and updates `CLAUDE.md` so every future Claude Code session respects the system. From that point on, `/qa-design-review` can audit against it, and any agent working on your frontend knows the rules.
@@ 356,44 360,59 @@ Then it writes `DESIGN.md` to your repo root — your project's design source of
You: /design-consultation
Claude: From the README, this looks like a developer analytics dashboard
- for engineering teams. Sound right? And would you like me to
- research what other dev tools are doing for design, or should
- I work from what I know?
+ for engineering teams. Sound right? Tell me about the feeling
+ you want — and would you like me to browse some competitors
+ first so we can see the landscape?
+
+You: Yes, it's for eng managers. Show me what's out there.
-You: Yes, it's a dashboard for eng managers. Research would be great.
+Claude: [browses Linear, Vercel, Datadog, Posthog — takes screenshots]
-Claude: I looked at Linear, Vercel, Railway, Planetscale, and Posthog.
- They converge on clean sans-serifs and muted palettes, but
- Linear stands out with its dark-first approach and tight spacing.
- The gap: most of these feel interchangeable. Here's my proposal:
+ Here's the landscape. They all converge on clean sans-serifs
+ and muted blue-gray palettes. Linear stands out with dark-first
+ and tight spacing. The rest feel interchangeable.
- AESTHETIC: Industrial/Utilitarian — data-first, no decoration tax
+ Here's my proposal — and where I'd play it safe vs. take risks:
+
+ AESTHETIC: Industrial/Utilitarian — data-first, every pixel earns its place
TYPOGRAPHY: Geist (body + UI), Instrument Serif (display), JetBrains Mono (data)
COLOR: Restrained — slate neutrals, single teal accent (#0D9488)
SPACING: 4px base, compact density
LAYOUT: Grid-disciplined, 12-column
MOTION: Minimal-functional — only transitions that aid comprehension
- This coheres because the utilitarian aesthetic demands a tight
- spacing grid and restrained color. The serif display font creates
- hierarchy contrast without adding visual noise. The monospace for
- data tables feels native to the engineering audience.
+ SAFE CHOICES (match category expectations):
+ Geist for body — your users already know this font from Vercel
+ Slate neutrals — warm grays feel right for data-heavy UIs
+ Grid-disciplined layout — dashboards need predictable alignment
+
+ RISKS (where you'd stand out):
+ Instrument Serif for display headings — nobody in dev tools
+ uses a serif. It creates instant hierarchy contrast and
+ signals "we care about craft" in a space full of sans-serifs.
+ Single teal accent instead of blue — every competitor uses blue.
+ Teal is close enough to feel trustworthy, different enough
+ to be recognizable.
+ 4px compact density — tighter than Linear, says "we respect
+ your screen real estate."
- Want to adjust anything, or should I generate the preview page?
+ The safe choices keep you literate. The risks are where your
+ product gets its own face. Which risks appeal to you?
-You: Generate it.
+You: Love the serif risk. Let's see it.
Claude: Preview opened in your browser.
[/tmp/design-consultation-preview-1710000000.html]
- The page shows Instrument Serif at hero scale, Geist in body
- paragraphs, JetBrains Mono in a sample data table. Color swatches
- with your teal accent against slate grays. Buttons, cards, and
- alerts rendered in both light and dark mode.
+ The page shows a realistic dashboard: sidebar nav, header with
+ avatar, stat cards, data table — all in your design system.
+ Instrument Serif at hero scale, Geist in body text, JetBrains
+ Mono in the data table. Teal accent on buttons and active states.
+ Light and dark mode toggle in the corner.
How does it feel? Want to adjust anything before I write DESIGN.md?
-You: Looks great. Ship it.
+You: Ship it.
Claude: Wrote DESIGN.md (typography, color, spacing, layout, motion).
Updated CLAUDE.md with design system guidelines.
M VERSION => VERSION +1 -1
@@ 1,1 1,1 @@
-0.5.1
+0.5.2
M design-consultation/SKILL.md => design-consultation/SKILL.md +76 -15
@@ 123,6 123,29 @@ If brainstorm output exists, read it — the product context is pre-filled.
If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to brainstorm first with `/brainstorm`? Once we know the product direction, we can set up the design system."*
+**Find the browse binary (optional — enables visual competitive research):**
+
+## SETUP (run this check BEFORE any browse command)
+
+```bash
+_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
+B=""
+[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/gstack/browse/dist/browse" ] && B="$_ROOT/.claude/skills/gstack/browse/dist/browse"
+[ -z "$B" ] && B=~/.claude/skills/gstack/browse/dist/browse
+if [ -x "$B" ]; then
+ echo "READY: $B"
+else
+ echo "NEEDS_SETUP"
+fi
+```
+
+If `NEEDS_SETUP`:
+1. Tell the user: "gstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait.
+2. Run: `cd <SKILL_DIR> && ./setup`
+3. If `bun` is not installed: `curl -fsSL https://bun.sh/install | bash`
+
+If browse is not available, that's fine — visual research is optional. The skill works without it using WebSearch and your built-in design knowledge.
+
---
## Phase 1: Product Context
@@ 143,17 166,40 @@ If the README or brainstorm gives you enough context, pre-fill and confirm: *"Fr
If the user wants competitive research:
+**Step 1: Identify competitors via WebSearch**
+
Use WebSearch to find 5-10 products in their space. Search for:
- "[product category] website design"
- "[product category] best websites 2025"
- "best [industry] web apps"
-For each competitor found, note: fonts used, color palette, layout approach, aesthetic direction.
+**Step 2: Visual research via browse (if available)**
+
+If the browse binary is available (`$B` is set), visit the top 3-5 competitor sites and capture visual evidence:
-Summarize your findings conversationally:
-> "I looked at [competitors]. They tend toward [patterns] — lots of [common choices]. The opportunity to be distinctive is [gap]. Here's what I'd recommend based on this..."
+```bash
+$B goto "https://competitor-site.com"
+$B screenshot "/tmp/design-research-competitor-name.png"
+$B snapshot
+```
-If WebSearch is unavailable or returns poor results, fall back gracefully: *"Couldn't get good research results, so I'll work from my design knowledge of the [industry] space."*
+For each competitor, analyze: fonts actually used, color palette, layout approach, spacing density, aesthetic direction. The screenshot gives you the feel; the snapshot gives you structural data.
+
+If a competitor site blocks the headless browser or requires login, skip it and note why.
+
+If browse is not available, rely on WebSearch results and your built-in design knowledge — this is fine.
+
+**Step 3: Synthesize findings**
+
+The goal of research is NOT to copy. It is to get in the ballpark — to understand the visual language users in this category already expect. This gives you the baseline. The interesting design work starts after you have the baseline: deciding where to follow conventions (so the product feels literate) and where to break from them (so the product is memorable).
+
+Summarize conversationally:
+> "I looked at [competitors]. Here's the landscape: they converge on [patterns]. Most of them feel [observation — e.g., interchangeable, polished but generic, etc.]. The opportunity to stand out is [gap]. Here's where I'd play it safe and where I'd take a risk..."
+
+**Graceful degradation:**
+- Browse available → screenshots + snapshots + WebSearch (richest research)
+- Browse unavailable → WebSearch only (still good)
+- WebSearch also unavailable → agent's built-in design knowledge (always works)
If the user said no research, skip entirely and proceed to Phase 3 using your built-in design knowledge.
@@ 163,7 209,7 @@ If the user said no research, skip entirely and proceed to Phase 3 using your bu
This is the soul of the skill. Propose EVERYTHING as one coherent package.
-**AskUserQuestion Q2 — present the full proposal:**
+**AskUserQuestion Q2 — present the full proposal with SAFE/RISK breakdown:**
```
Based on [product context] and [research findings / my design knowledge]:
@@ 178,12 224,21 @@ MOTION: [approach] — [rationale]
This system is coherent because [explain how choices reinforce each other].
-Want to adjust anything? You can drill into any section, or just tell me
-what feels off and I'll rework it. Or if this looks right, I'll generate
-a preview page so you can see the fonts and colors rendered.
+SAFE CHOICES (category baseline — your users expect these):
+ - [2-3 decisions that match category conventions, with rationale for playing safe]
+
+RISKS (where your product gets its own face):
+ - [2-3 deliberate departures from convention]
+ - For each risk: what it is, why it works, what you gain, what it costs
+
+The safe choices keep you literate in your category. The risks are where
+your product becomes memorable. Which risks appeal to you? Want to see
+different ones? Or adjust anything else?
```
-**Options:** A) Looks great — generate the preview page. B) I want to adjust [section]. C) Start over with a different direction. D) Skip the preview, just write DESIGN.md.
+The SAFE/RISK breakdown is critical. Design coherence is table stakes — every product in a category can be coherent and still look identical. The real question is: where do you take creative risks? The agent should always propose at least 2 risks, each with a clear rationale for why the risk is worth taking and what the user gives up. Risks might include: an unexpected typeface for the category, a bold accent color nobody else uses, tighter or looser spacing than the norm, a layout approach that breaks from convention, motion choices that add personality.
+
+**Options:** A) Looks great — generate the preview page. B) I want to adjust [section]. C) I want different risks — show me wilder options. D) Start over with a different direction. E) Skip the preview, just write DESIGN.md.
### Your Design Knowledge (use to inform proposals — do NOT display as tables)
@@ 273,7 328,7 @@ The agent writes a **single, self-contained HTML file** (no framework dependenci
1. **Loads proposed fonts** from Google Fonts (or Bunny Fonts) via `<link>` tags
2. **Uses the proposed color palette** throughout — dogfood the design system
3. **Shows the product name** (not "Lorem Ipsum") as the hero heading
-4. **Font comparison section:**
+4. **Font specimen section:**
- Each font candidate shown in its proposed role (hero heading, body paragraph, button label, data table row)
- Side-by-side comparison if multiple candidates for one role
- Real content that matches the product (e.g., civic tech → government data examples)
@@ 281,11 336,17 @@ The agent writes a **single, self-contained HTML file** (no framework dependenci
- Swatches with hex values and names
- Sample UI components rendered in the palette: buttons (primary, secondary, ghost), cards, form inputs, alerts (success, warning, error, info)
- Background/text color combinations showing contrast
-6. **Light/dark mode toggle** using CSS custom properties and a JS toggle button
-7. **Clean, professional layout** — the preview page IS a taste signal for the skill
-8. **Responsive** — looks good on any screen width
-
-The page should make the user think "oh nice, they thought of this." It's selling the design system visually, not just listing hex codes.
+6. **Realistic product mockups** — this is what makes the preview page powerful. Based on the project type from Phase 1, render 2-3 realistic page layouts using the full design system:
+ - **Dashboard / web app:** sample data table with metrics, sidebar nav, header with user avatar, stat cards
+ - **Marketing site:** hero section with real copy, feature highlights, testimonial block, CTA
+ - **Settings / admin:** form with labeled inputs, toggle switches, dropdowns, save button
+ - **Auth / onboarding:** login form with social buttons, branding, input validation states
+ - Use the product name, realistic content for the domain, and the proposed spacing/layout/border-radius. The user should see their product (roughly) before writing any code.
+7. **Light/dark mode toggle** using CSS custom properties and a JS toggle button
+8. **Clean, professional layout** — the preview page IS a taste signal for the skill
+9. **Responsive** — looks good on any screen width
+
+The page should make the user think "oh nice, they thought of this." It's selling the design system by showing what the product could feel like, not just listing hex codes and font names.
If `open` fails (headless environment), tell the user: *"I wrote the preview to [path] — open it in your browser to see the fonts and colors rendered."*
M design-consultation/SKILL.md.tmpl => design-consultation/SKILL.md.tmpl +59 -15
@@ 58,6 58,12 @@ If brainstorm output exists, read it — the product context is pre-filled.
If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to brainstorm first with `/brainstorm`? Once we know the product direction, we can set up the design system."*
+**Find the browse binary (optional — enables visual competitive research):**
+
+{{BROWSE_SETUP}}
+
+If browse is not available, that's fine — visual research is optional. The skill works without it using WebSearch and your built-in design knowledge.
+
---
## Phase 1: Product Context
@@ 78,17 84,40 @@ If the README or brainstorm gives you enough context, pre-fill and confirm: *"Fr
If the user wants competitive research:
+**Step 1: Identify competitors via WebSearch**
+
Use WebSearch to find 5-10 products in their space. Search for:
- "[product category] website design"
- "[product category] best websites 2025"
- "best [industry] web apps"
-For each competitor found, note: fonts used, color palette, layout approach, aesthetic direction.
+**Step 2: Visual research via browse (if available)**
+
+If the browse binary is available (`$B` is set), visit the top 3-5 competitor sites and capture visual evidence:
+
+```bash
+$B goto "https://competitor-site.com"
+$B screenshot "/tmp/design-research-competitor-name.png"
+$B snapshot
+```
+
+For each competitor, analyze: fonts actually used, color palette, layout approach, spacing density, aesthetic direction. The screenshot gives you the feel; the snapshot gives you structural data.
-Summarize your findings conversationally:
-> "I looked at [competitors]. They tend toward [patterns] — lots of [common choices]. The opportunity to be distinctive is [gap]. Here's what I'd recommend based on this..."
+If a competitor site blocks the headless browser or requires login, skip it and note why.
-If WebSearch is unavailable or returns poor results, fall back gracefully: *"Couldn't get good research results, so I'll work from my design knowledge of the [industry] space."*
+If browse is not available, rely on WebSearch results and your built-in design knowledge — this is fine.
+
+**Step 3: Synthesize findings**
+
+The goal of research is NOT to copy. It is to get in the ballpark — to understand the visual language users in this category already expect. This gives you the baseline. The interesting design work starts after you have the baseline: deciding where to follow conventions (so the product feels literate) and where to break from them (so the product is memorable).
+
+Summarize conversationally:
+> "I looked at [competitors]. Here's the landscape: they converge on [patterns]. Most of them feel [observation — e.g., interchangeable, polished but generic, etc.]. The opportunity to stand out is [gap]. Here's where I'd play it safe and where I'd take a risk..."
+
+**Graceful degradation:**
+- Browse available → screenshots + snapshots + WebSearch (richest research)
+- Browse unavailable → WebSearch only (still good)
+- WebSearch also unavailable → agent's built-in design knowledge (always works)
If the user said no research, skip entirely and proceed to Phase 3 using your built-in design knowledge.
@@ 98,7 127,7 @@ If the user said no research, skip entirely and proceed to Phase 3 using your bu
This is the soul of the skill. Propose EVERYTHING as one coherent package.
-**AskUserQuestion Q2 — present the full proposal:**
+**AskUserQuestion Q2 — present the full proposal with SAFE/RISK breakdown:**
```
Based on [product context] and [research findings / my design knowledge]:
@@ 113,12 142,21 @@ MOTION: [approach] — [rationale]
This system is coherent because [explain how choices reinforce each other].
-Want to adjust anything? You can drill into any section, or just tell me
-what feels off and I'll rework it. Or if this looks right, I'll generate
-a preview page so you can see the fonts and colors rendered.
+SAFE CHOICES (category baseline — your users expect these):
+ - [2-3 decisions that match category conventions, with rationale for playing safe]
+
+RISKS (where your product gets its own face):
+ - [2-3 deliberate departures from convention]
+ - For each risk: what it is, why it works, what you gain, what it costs
+
+The safe choices keep you literate in your category. The risks are where
+your product becomes memorable. Which risks appeal to you? Want to see
+different ones? Or adjust anything else?
```
-**Options:** A) Looks great — generate the preview page. B) I want to adjust [section]. C) Start over with a different direction. D) Skip the preview, just write DESIGN.md.
+The SAFE/RISK breakdown is critical. Design coherence is table stakes — every product in a category can be coherent and still look identical. The real question is: where do you take creative risks? The agent should always propose at least 2 risks, each with a clear rationale for why the risk is worth taking and what the user gives up. Risks might include: an unexpected typeface for the category, a bold accent color nobody else uses, tighter or looser spacing than the norm, a layout approach that breaks from convention, motion choices that add personality.
+
+**Options:** A) Looks great — generate the preview page. B) I want to adjust [section]. C) I want different risks — show me wilder options. D) Start over with a different direction. E) Skip the preview, just write DESIGN.md.
### Your Design Knowledge (use to inform proposals — do NOT display as tables)
@@ 208,7 246,7 @@ The agent writes a **single, self-contained HTML file** (no framework dependenci
1. **Loads proposed fonts** from Google Fonts (or Bunny Fonts) via `<link>` tags
2. **Uses the proposed color palette** throughout — dogfood the design system
3. **Shows the product name** (not "Lorem Ipsum") as the hero heading
-4. **Font comparison section:**
+4. **Font specimen section:**
- Each font candidate shown in its proposed role (hero heading, body paragraph, button label, data table row)
- Side-by-side comparison if multiple candidates for one role
- Real content that matches the product (e.g., civic tech → government data examples)
@@ 216,11 254,17 @@ The agent writes a **single, self-contained HTML file** (no framework dependenci
- Swatches with hex values and names
- Sample UI components rendered in the palette: buttons (primary, secondary, ghost), cards, form inputs, alerts (success, warning, error, info)
- Background/text color combinations showing contrast
-6. **Light/dark mode toggle** using CSS custom properties and a JS toggle button
-7. **Clean, professional layout** — the preview page IS a taste signal for the skill
-8. **Responsive** — looks good on any screen width
-
-The page should make the user think "oh nice, they thought of this." It's selling the design system visually, not just listing hex codes.
+6. **Realistic product mockups** — this is what makes the preview page powerful. Based on the project type from Phase 1, render 2-3 realistic page layouts using the full design system:
+ - **Dashboard / web app:** sample data table with metrics, sidebar nav, header with user avatar, stat cards
+ - **Marketing site:** hero section with real copy, feature highlights, testimonial block, CTA
+ - **Settings / admin:** form with labeled inputs, toggle switches, dropdowns, save button
+ - **Auth / onboarding:** login form with social buttons, branding, input validation states
+ - Use the product name, realistic content for the domain, and the proposed spacing/layout/border-radius. The user should see their product (roughly) before writing any code.
+7. **Light/dark mode toggle** using CSS custom properties and a JS toggle button
+8. **Clean, professional layout** — the preview page IS a taste signal for the skill
+9. **Responsive** — looks good on any screen width
+
+The page should make the user think "oh nice, they thought of this." It's selling the design system by showing what the product could feel like, not just listing hex codes and font names.
If `open` fails (headless environment), tell the user: *"I wrote the preview to [path] — open it in your browser to see the fonts and colors rendered."*