Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
c03506e
docs: design tools v1 plan — visual mockup generation for gstack skills
garrytan Mar 27, 2026
d9b6bf1
feat: design tools prototype validation — GPT Image API works
garrytan Mar 27, 2026
a4dd5b0
feat: design binary core — generate, check, compare commands
garrytan Mar 27, 2026
289ea3a
feat: design binary variants + iterate commands
garrytan Mar 27, 2026
1ed8f8b
feat: DESIGN_SETUP + DESIGN_MOCKUP template resolvers
garrytan Mar 27, 2026
d037e54
fix: sync package.json version with VERSION file (0.12.2.0)
garrytan Mar 27, 2026
06d54a9
feat: /office-hours visual design exploration integration
garrytan Mar 27, 2026
5a7c2bc
feat: /plan-design-review visual mockup integration
garrytan Mar 27, 2026
9c1b709
feat: design memory — extract visual language from mockups into DESIG…
garrytan Mar 27, 2026
10b843e
feat: mockup diffing + design intent verification
garrytan Mar 27, 2026
1d9b2da
feat: screenshot-to-mockup evolution ($D evolve)
garrytan Mar 27, 2026
dbf6b4a
feat: responsive variants + design-to-code prompt
garrytan Mar 27, 2026
6413175
merge: resolve package.json version conflict (take main 0.12.5.0)
garrytan Mar 27, 2026
859f948
chore: bump version and changelog (v0.13.0.0)
garrytan Mar 27, 2026
495294f
feat: gstack designer as first-class tool in /plan-design-review
garrytan Mar 27, 2026
3c17799
feat: integrate mockups into review passes and outputs
garrytan Mar 27, 2026
9cf9217
feat: gstack designer target mockups in /design-review fix loop
garrytan Mar 27, 2026
41970d0
feat: gstack designer AI mockups in /design-consultation Phase 5
garrytan Mar 27, 2026
d01e4bc
merge: resolve version/changelog/build conflicts with main (v0.12.7.0)
garrytan Mar 27, 2026
1c071b1
merge: resolve version/changelog/build conflicts with main (v0.12.8.0)
garrytan Mar 27, 2026
ceb7f63
fix: make gstack designer the default in /plan-design-review, not opt…
garrytan Mar 27, 2026
25e6e8f
feat: persist design mockups to ~/.gstack/projects/$SLUG/designs/
garrytan Mar 27, 2026
36cd50c
merge: resolve version/changelog conflicts with main (v0.12.8.1)
garrytan Mar 27, 2026
2d4af18
chore: regenerate codex ship skill with zsh glob guards
garrytan Mar 27, 2026
5cc00c9
feat: add browse binary discovery to DESIGN_SETUP resolver
garrytan Mar 27, 2026
3914978
feat: comparison board DOM polling in plan-design-review
garrytan Mar 27, 2026
73395fb
test: comparison board feedback loop integration test
garrytan Mar 27, 2026
41cf566
feat: add $D serve command for HTTP-based comparison board feedback
garrytan Mar 27, 2026
095df5b
feat: dual-mode feedback + post-submit lifecycle in comparison board
garrytan Mar 27, 2026
a0af98c
test: HTTP serve command endpoints and regeneration lifecycle
garrytan Mar 27, 2026
432e20f
feat: add DESIGN_SHOTGUN_LOOP resolver + fix design artifact paths
garrytan Mar 27, 2026
0a4c61d
feat: add /design-shotgun standalone design exploration skill
garrytan Mar 27, 2026
fd67195
chore: regenerate SKILL.md files for design-shotgun + resolver changes
garrytan Mar 27, 2026
eb6126b
feat: add remix UI to comparison board
garrytan Mar 27, 2026
e7816fc
feat: add $D gallery command for design history timeline
garrytan Mar 27, 2026
6d23551
test: gallery generation — sessions, dates, corruption, empty state
garrytan Mar 27, 2026
33d03b6
refactor: replace broken file:// polling with {{DESIGN_SHOTGUN_LOOP}}
garrytan Mar 27, 2026
9788d79
test: add design-shotgun touchfile entries and tier classifications
garrytan Mar 27, 2026
1c62a6a
chore: regenerate SKILL.md files for template refactor
garrytan Mar 27, 2026
576c5b5
merge: resolve version/changelog conflicts with main (v0.12.9.0)
garrytan Mar 27, 2026
8243d58
merge: resolve version/changelog conflicts with main (v0.12.10.0)
garrytan Mar 27, 2026
ebadef0
merge: resolve version/changelog conflicts with main (v0.12.11.0)
garrytan Mar 27, 2026
e665183
feat: comparison board UI improvements — option headers, pick confirm…
garrytan Mar 27, 2026
229db44
fix: use 127.0.0.1 instead of localhost for serve URL
garrytan Mar 27, 2026
b57de95
fix: write ALL feedback to disk so agent can poll in background mode
garrytan Mar 27, 2026
025f7b2
feat: DESIGN_SHOTGUN_LOOP uses file polling instead of stdout reading
garrytan Mar 27, 2026
1fbf6c4
chore: regenerate SKILL.md files for file-polling feedback loop
garrytan Mar 27, 2026
8825332
fix: null-safe DOM selectors for post-submit and regenerating states
garrytan Mar 27, 2026
52bc35b
test: end-to-end feedback roundtrip — browser click to file on disk
garrytan Mar 27, 2026
c0226bf
docs: comprehensive design doc for Design Shotgun feedback loop
garrytan Mar 27, 2026
6c43199
fix: plan-design-review agent guardrails for feedback loop
garrytan Mar 27, 2026
842d226
fix: design-shotgun Step 3 progressive reveal, silent failure detecti…
garrytan Mar 27, 2026
830a546
feat: parallel design-shotgun with concept-first confirmation
garrytan Mar 28, 2026
147059f
docs: update project documentation for v0.13.0.0
garrytan Mar 28, 2026
81d4305
merge: resolve version/changelog conflicts with main (v0.12.12.0)
garrytan Mar 28, 2026
065a6c6
chore: untrack .agents/skills/ — generated at setup, already gitignored
garrytan Mar 28, 2026
0a11336
chore: regenerate design-shotgun SKILL.md for v0.12.12.0 preamble cha…
garrytan Mar 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .agents/skills/gstack-autoplan/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-benchmark/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-browse/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-canary/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-careful/agents/openai.yaml

This file was deleted.

546 changes: 0 additions & 546 deletions .agents/skills/gstack-connect-chrome/SKILL.md

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-cso/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-design-consultation/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-design-review/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-document-release/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-freeze/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-guard/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-investigate/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-land-and-deploy/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-office-hours/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-plan-ceo-review/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-plan-design-review/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-plan-eng-review/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-qa-only/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-qa/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-retro/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-review/agents/openai.yaml

This file was deleted.

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-setup-deploy/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-ship/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-unfreeze/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack-upgrade/agents/openai.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .agents/skills/gstack/agents/openai.yaml

This file was deleted.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.env
node_modules/
browse/dist/
design/dist/
bin/gstack-global-discover
.gstack/
.claude/skills/
Expand Down
4 changes: 3 additions & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,8 @@ Templates contain the workflows, tips, and examples that require human judgment.
| `{{REVIEW_DASHBOARD}}` | `gen-skill-docs.ts` | Review Readiness Dashboard for /ship pre-flight |
| `{{TEST_BOOTSTRAP}}` | `gen-skill-docs.ts` | Test framework detection, bootstrap, CI/CD setup for /qa, /ship, /design-review |
| `{{CODEX_PLAN_REVIEW}}` | `gen-skill-docs.ts` | Optional cross-model plan review (Codex or Claude subagent fallback) for /plan-ceo-review and /plan-eng-review |
| `{{DESIGN_SETUP}}` | `resolvers/design.ts` | Discovery pattern for `$D` design binary, mirrors `{{BROWSE_SETUP}}` |
| `{{DESIGN_SHOTGUN_LOOP}}` | `resolvers/design.ts` | Shared comparison board feedback loop for /design-shotgun, /plan-design-review, /design-consultation |

This is structurally sound — if a command exists in code, it appears in docs. If it doesn't exist, it can't appear.

Expand Down Expand Up @@ -357,4 +359,4 @@ Tier 1 runs on every `bun test`. Tiers 2+3 are gated behind `EVALS=1`. The idea:
- **No MCP protocol.** MCP adds JSON schema overhead per request and requires a persistent connection. Plain HTTP + plain text output is lighter on tokens and easier to debug.
- **No multi-user support.** One server per workspace, one user. The token auth is defense-in-depth, not multi-tenancy.
- **No Windows/Linux cookie decryption.** macOS Keychain is the only supported credential store. Linux (GNOME Keyring/kwallet) and Windows (DPAPI) are architecturally possible but not implemented.
- **No iframe support.** Playwright can handle iframes but the ref system doesn't cross frame boundaries yet. This is the most-requested missing feature.
- **No iframe auto-discovery.** `$B frame` supports cross-frame interaction (CSS selector, @ref, `--name`, `--url` matching), but the ref system does not auto-crawl iframes during `snapshot`. You must explicitly enter a frame context first.
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
# Changelog

## [0.13.0.0] - 2026-03-27 — Your Agent Can Design Now

gstack can generate real UI mockups. Not ASCII art, not text descriptions of hex codes, real visual designs you can look at, compare, pick from, and iterate on. Run `/office-hours` on a UI idea and you'll get 3 visual concepts in Chrome with a comparison board where you pick your favorite, rate the others, and tell the agent what to change.

### Added

- **Design binary** (`$D`). New compiled CLI wrapping OpenAI's GPT Image API. 13 commands: `generate`, `variants`, `iterate`, `check`, `compare`, `extract`, `diff`, `verify`, `evolve`, `prompt`, `serve`, `gallery`, `setup`. Generates pixel-perfect UI mockups from structured design briefs in ~40 seconds.
- **Comparison board.** `$D compare` generates a self-contained HTML page with all variants, star ratings, per-variant feedback, regeneration controls, a remix grid (mix layout from A with colors from B), and a Submit button. Feedback flows back to the agent via HTTP POST, not DOM polling.
- **`/design-shotgun` skill.** Standalone design exploration you can run anytime. Generates multiple AI design variants, opens a comparison board in your browser, and iterates until you approve a direction. Session awareness (remembers prior explorations), taste memory (biases new generations toward your demonstrated preferences), screenshot-to-variants (screenshot what you don't like, get improvements), configurable variant count (3-8).
- **`$D serve` command.** HTTP server for the comparison board feedback loop. Serves the board on localhost, opens in your default browser, collects feedback via POST. Stateful: stays alive across regeneration rounds, supports same-tab reload via `/api/progress` polling.
- **`$D gallery` command.** Generates an HTML timeline of all design explorations for a project: every variant, feedback, organized by date.
- **Design memory.** `$D extract` analyzes an approved mockup with GPT-4o vision and writes colors, typography, spacing, and layout patterns to DESIGN.md. Future mockups on the same project inherit the established visual language.
- **Visual diffing.** `$D diff` compares two images and identifies differences by area with severity. `$D verify` compares a live site screenshot against an approved mockup, pass/fail gate.
- **Screenshot evolution.** `$D evolve` takes a screenshot of your live site and generates a mockup showing how it should look based on your feedback. Starts from reality, not blank canvas.
- **Responsive variants.** `$D variants --viewports desktop,tablet,mobile` generates mockups at multiple viewport sizes.
- **Design-to-code prompt.** `$D prompt` extracts implementation instructions from an approved mockup: exact hex colors, font sizes, spacing values, component structure. Zero interpretation gap.

### Changed

- **/office-hours** now generates visual mockup explorations by default (skippable). Comparison board opens in your browser for feedback before generating HTML wireframes.
- **/plan-design-review** uses `{{DESIGN_SHOTGUN_LOOP}}` for the comparison board. Can generate "what 10/10 looks like" mockups when a design dimension rates below 7/10.
- **/design-consultation** uses `{{DESIGN_SHOTGUN_LOOP}}` for Phase 5 AI mockup review.
- **Comparison board post-submit lifecycle.** After submitting, all inputs are disabled and a "Return to your coding agent" message appears. After regenerating, a spinner shows with auto-refresh when new designs are ready. If the server is gone, a copyable JSON fallback appears.

### For contributors

- Design binary source: `design/src/` (16 files, ~2500 lines TypeScript)
- New files: `serve.ts` (stateful HTTP server), `gallery.ts` (timeline generation)
- Tests: `design/test/serve.test.ts` (11 tests), `design/test/gallery.test.ts` (7 tests)
- Full design doc: `docs/designs/DESIGN_TOOLS_V1.md`
- Template resolvers: `{{DESIGN_SETUP}}` (binary discovery), `{{DESIGN_SHOTGUN_LOOP}}` (shared comparison board loop for /design-shotgun, /plan-design-review, /design-consultation)

## [0.12.12.0] - 2026-03-27 — Security Audit Compliance

Fixes 20 Socket alerts and 3 Snyk findings from the skills.sh security audit. Your skills are now cleaner, your telemetry is transparent, and 2,000 lines of dead code are gone.
Expand Down
27 changes: 20 additions & 7 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ gstack/
│ └── dist/ # Compiled binary
├── scripts/ # Build + DX tooling
│ ├── gen-skill-docs.ts # Template → SKILL.md generator
│ ├── resolvers/ # Template resolver modules (preamble, design, review, etc.)
│ ├── skill-check.ts # Health dashboard
│ └── dev-skill.ts # Watch mode
├── test/ # Skill validation + eval tests
Expand Down Expand Up @@ -93,6 +94,15 @@ gstack/
├── document-release/ # /document-release skill (post-ship doc updates)
├── cso/ # /cso skill (OWASP Top 10 + STRIDE security audit)
├── design-consultation/ # /design-consultation skill (design system from scratch)
├── design-shotgun/ # /design-shotgun skill (visual design exploration)
├── connect-chrome/ # /connect-chrome skill (headed Chrome with side panel)
├── design/ # Design binary CLI (GPT Image API)
│ ├── src/ # CLI + commands (generate, variants, compare, serve, etc.)
│ ├── test/ # Integration tests
│ └── dist/ # Compiled binary
├── extension/ # Chrome extension (side panel + activity feed)
├── lib/ # Shared libraries (worktree.ts)
├── docs/designs/ # Design documents
├── setup-deploy/ # /setup-deploy skill (one-time deploy config)
├── .github/ # CI workflows + Docker image
│ ├── workflows/ # evals.yml (E2E on Ubicloud), skill-docs.yml, actionlint.yml
Expand Down Expand Up @@ -181,13 +191,14 @@ symlinking to create the per-skill symlinks with your preferred naming. Pass
gen-skill-docs pipeline, consider whether the changes should be tested in isolation
before going live (especially if the user is actively using gstack in other windows).

## Compiled binaries — NEVER commit browse/dist/
## Compiled binaries — NEVER commit browse/dist/ or design/dist/

The `browse/dist/` directory contains compiled Bun binaries (`browse`, `find-browse`,
~58MB each). These are Mach-O arm64 only — they do NOT work on Linux, Windows, or
Intel Macs. The `./setup` script already builds from source for every platform, so
the checked-in binaries are redundant. They are tracked by git due to a historical
mistake and should eventually be removed with `git rm --cached`.
The `browse/dist/` and `design/dist/` directories contain compiled Bun binaries
(`browse`, `find-browse`, `design`, ~58MB each). These are Mach-O arm64 only — they
do NOT work on Linux, Windows, or Intel Macs. The `./setup` script already builds
from source for every platform, so the checked-in binaries are redundant. They are
tracked by git due to a historical mistake and should eventually be removed with
`git rm --cached`.

**NEVER stage or commit these files.** They show up as modified in `git status`
because they're tracked despite `.gitignore` — ignore them. When staging files,
Expand Down Expand Up @@ -336,4 +347,6 @@ The active skill lives at `~/.claude/skills/gstack/`. After making changes:
2. Fetch and reset in the skill directory: `cd ~/.claude/skills/gstack && git fetch origin && git reset --hard origin/main`
3. Rebuild: `cd ~/.claude/skills/gstack && bun run build`

Or copy the binary directly: `cp browse/dist/browse ~/.claude/skills/gstack/browse/dist/browse`
Or copy the binaries directly:
- `cp browse/dist/browse ~/.claude/skills/gstack/browse/dist/browse`
- `cp design/dist/design ~/.claude/skills/gstack/design/dist/design`
Loading
Loading