verify
Drive Houston's TS host + web UI end-to-end to verify a change against the running system (host HTTP battery + Playwright…
The screenshot self-critique loop. Run BEFORE declaring ANY Houston UI work done. Screenshot the touched screens in both themes at desktop + narrow widths, critique against a scored rubric with vision, fix the top 3 issues, repeat. Gate: loop passes + scoped checks + parity.
$ npx -y skills add gethouston/houston --skill design-review --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/design-reviewContext preview
The summary Claude sees to decide when to auto-load this skill.
The screenshot self-critique loop. Run BEFORE declaring ANY Houston UI work done. Screenshot the touched screens in both themes at desktop + narrow widths, critique against a scored rubric with vision, fix the top 3 issues, repeat. Gate: loop passes + scoped checks + parity.
name: design-review description: The screenshot self-critique loop. Run BEFORE declaring ANY Houston UI work done. Screenshot the touched screens in both themes at desktop + narrow widths, critique against a scored rubric with vision, fix the top 3 issues, repeat. Gate: loop passes + scoped checks + parity. Tool-agnostic, Playwright is the default path.
You cannot judge UI from code. Look at it. A picture is worth 1000 tokens.
**Never report UI work complete without running this loop.** Minimum 2 passes; plan on 3–5. Stop when a pass finds nothing above severity-minor.
Read **`/DESIGN.md`** (repo root) FIRST — the spec that defines the rules this loop scores against (hard rules, token quick-reference, motion, banned defaults). The `--ht-*` token values live in `packages/design-tokens/tokens/*.json`. This is what "token compliance" and "motion rules" below are measured against.
**App screens** (`app/src` / `packages/web`) run against an in-memory **fake host** — no real backend, no AI, no credentials. Two paths:
**Website** (`website/`, Eleventy — no fake host): `cd website && npm run dev` serves the built site (`--serve`), or `npm run build` then serve `_site/`. Same rubric applies.
For **every** touched screen, capture the matrix:
| | Desktop (~1280px) | Narrow (~380px) | |------------|-------------------|-----------------| | **Light** | ✓ | ✓ | | **Dark** | ✓ | ✓ |
Toggle theme by setting `data-theme` on the root element (`app/src/lib/theme.ts` applies it): dark = `document.documentElement.setAttribute("data-theme","dark")`; light = remove the attribute (or set `"light"`). In Playwright: `page.evaluate(...)` then screenshot. Capture any designed **states** (empty / loading / error) too — the fake host `/__test__/*` controls or seed data drive them.
Look at every screenshot and score against this rubric. Any score ≤3 is an issue.
Write the findings down (a scratch note), ranked by severity.
Only the worst three this pass. A visual fix is a token/component edit, not a hardcoded literal. Keep changes on the surface ladder and inside the type/spacing scale.
Re-screenshot the full matrix, re-critique. **Minimum 2 passes; stop only when a pass surfaces nothing above severity-minor.**
Only then report the UI work complete.
Open source platform for AI-native products. Pre-built AI agents with real tools and 1000+ integrations, in a Rust engine + Tauri desktop app. Free forever.
Drive Houston's TS host + web UI end-to-end to verify a change against the running system (host HTTP battery + Playwright…
Build Houston App locally (macOS). Clean stale artifacts, pnpm tauri build, notarize DMG manually (Tauri skips), staple, verify,…
Debug bugs in Houston. NEVER guess. Read log files first (dev panes + agent runtime). Add targeted logging if not enough info.…
Design new Houston UI (app screens, components, website sections) with intent, not templated defaults. Two-pass discipline inside…
Ship new Houston version. Bump semver across all packages, tag, push, let CI build + sign + notarize. STOP at draft — user…