Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
595df74
fix(ui): review-surface polish — chrome, review-exit guard, theming, …
angusbezzina Aug 4, 2026
1b0e8d4
chore: formatting
angusbezzina Aug 4, 2026
58ba78e
fix(ci): clear pre-existing clippy and rustfmt failures (attn-rd3j)
angusbezzina Aug 4, 2026
e855882
fix(ui): dialog fit, sidebar empty state, header settings, block rhyt…
angusbezzina Aug 4, 2026
379b1cc
fix(hosted): kill the dark-mode flash, desk zoom overflow, and 203KB …
angusbezzina Aug 5, 2026
ac930be
fix(hosted): restore a destructive colour in INK and define three pha…
angusbezzina Aug 5, 2026
88b5593
fix(landing): stop 200% text from breaking the page layout (attn-n01r…
angusbezzina Aug 5, 2026
05f6f96
fix(landing): give chrome outside .button a hit-target floor (attn-n0…
angusbezzina Aug 5, 2026
b584c82
fix(landing): skip link, banner landmark, honest heading outline, rea…
angusbezzina Aug 5, 2026
cd4c1e5
fix(desk): name destructive actions, give the list semantics, honour …
angusbezzina Aug 5, 2026
dbb33d8
fix(hosted): icons for the repeated actions, with the labels kept whe…
angusbezzina Aug 5, 2026
97d2517
fix(mobile): state icon for save, deliberate affordance for rename (a…
angusbezzina Aug 5, 2026
854bfb2
chore(beads): record findings on the mobile bar gap (attn-n01r.3)
angusbezzina Aug 5, 2026
42ea5a1
fix(desk): caution tier for storage, accent on action, aligned tiles …
angusbezzina Aug 5, 2026
6b8f28f
fix(landing): restore the heading hierarchy and clear the sticky nav …
angusbezzina Aug 5, 2026
3c7836d
fix(desk): make the join panel URL-durable and stop hiding blocked ac…
angusbezzina Aug 5, 2026
4a0559d
chore(desk): delete a dead file and an unreachable branch (attn-n01r.44)
angusbezzina Aug 5, 2026
7ab9769
fix(hosted): scope reduced-motion, retire an orphan token, quarantine…
angusbezzina Aug 5, 2026
48335eb
perf(landing): preload the above-fold faces, taking CLS to zero (attn…
angusbezzina Aug 5, 2026
16d6ac8
fix(landing): return mono to code, green to collaboration, the pencil…
angusbezzina Aug 5, 2026
fed7849
fix(desk): move the metadata layer to the label token (attn-n01r.39)
angusbezzina Aug 5, 2026
cf2081d
fix(sw): fall back to the cached shell on a 404 navigation (attn-n01r…
angusbezzina Aug 5, 2026
16a3382
feat(landing): close on the offer instead of a license colophon (attn…
angusbezzina Aug 5, 2026
e247462
feat(desk): a keyboard model and a row that behaves like a row (attn-…
angusbezzina Aug 5, 2026
3a66b25
fix(desk): mobile fold, reflowed metadata, and a first-run card that …
angusbezzina Aug 5, 2026
7b54fce
fix(landing): uncrop the hero and drop 7.4MB of dead PNG fallbacks (a…
angusbezzina Aug 5, 2026
a9cd61d
fix(worker): send noindex for /homepage-alt at the origin (attn-n01r.38)
angusbezzina Aug 5, 2026
4758d25
fix(landing): give the 680-1180 band a tier and let its type scale (a…
angusbezzina Aug 5, 2026
3e34f73
feat(landing): restore navigation on mobile (attn-n01r.17)
angusbezzina Aug 5, 2026
9d65236
perf(desk): another 102KB off the route, and the runtime cut the issu…
angusbezzina Aug 5, 2026
4147974
feat(landing): make the page argue the product's actual positioning (…
angusbezzina Aug 5, 2026
b2d1c2b
fix(landing): settle the nouns, gloss the crypto, stop offering creat…
angusbezzina Aug 5, 2026
816b1c7
refactor(desk): extend the type ramp and snap the app shell to it (at…
angusbezzina Aug 5, 2026
020a623
fix(desk): show the size a workspace already computed (attn-n01r.6, p…
angusbezzina Aug 5, 2026
da9a493
perf(desk): 1,203KB -> 582KB, ProseMirror off the route entirely (att…
angusbezzina Aug 5, 2026
26d9464
test(hosted): gate the wire, not just the module graph (attn-n01r.41)
angusbezzina Aug 5, 2026
ce40f6a
fix(collab): stop commitNow awaiting an import; it was my flake (attn…
angusbezzina Aug 5, 2026
368f42a
fix(mobile): measure the dock instead of hard-coding its height (attn…
angusbezzina Aug 5, 2026
48cf878
chore(beads): close attn-n01r.3
angusbezzina Aug 5, 2026
0823220
feat(desk): name a workspace after its own first heading (attn-n01r.6)
angusbezzina Aug 5, 2026
72c82dc
fix(desk): 'New workspace' always creates one (attn-n01r.50)
angusbezzina Aug 5, 2026
d62f8fe
feat(review): tallying sink for desk review counts (attn-n01r.34, 1/2)
angusbezzina Aug 5, 2026
cf830ca
feat(desk): show review work on the workspace row (attn-n01r.34, 2/2 UI)
angusbezzina Aug 5, 2026
d2a46ac
feat(desk): wire review counts to real data (attn-n01r.34, 3/3)
angusbezzina Aug 5, 2026
45e79c7
feat(landing): show what the relay can see instead of asserting it (a…
angusbezzina Aug 5, 2026
6c6091a
chore(beads): close attn-n01r — all 49 children complete
angusbezzina Aug 5, 2026
f217d55
chore(beads): close attn-n01r — all 49 children complete
angusbezzina Aug 5, 2026
9428823
test(e2e): repair three route specs against renamed controls and the …
angusbezzina Aug 6, 2026
dc8fa67
fix(desk): snap three surviving fluid headings to the fixed ramp (att…
angusbezzina Aug 6, 2026
1062d1c
feat(review): resizable rail, straight card accent, table surface, sh…
angusbezzina Aug 7, 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
4 changes: 4 additions & 0 deletions .beads/.gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
# Dolt database (managed by Dolt, not git)
dolt/
embeddeddolt/
dolt-access.lock

# Transient auto-import staging file
.auto-import-issues.jsonl

# Runtime files
bd.sock
sync-state.json
Expand Down
159 changes: 159 additions & 0 deletions .beads/interactions.jsonl

Large diffs are not rendered by default.

86 changes: 86 additions & 0 deletions .claude/skills/impeccable/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
name: impeccable
description: Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
version: 4.0.4
user-invocable: true
argument-hint: "[shape · audit|critique · animate|bolder|colorize|delight|layout|overdrive|quieter|typeset · adapt|clarify|distill · harden|onboard|optimize|polish · init|document|extract|live] [target]"
license: Apache 2.0
allowed-tools:
- Bash(npx impeccable *)
- Bash(node .claude/skills/impeccable/scripts/*)
---

This skill gives you the tools and permission to create design that earns to be called out-of-distribution craft: Whereas before, your design work would have been safe, timid and measured, you now approach every design task as a award-winning design director with impeccable understanding for what makes exceptional design work: production-grade code, peak creativity, a clear POV, deep understanding of the needs of the client and users, and exceptional craft.

Core principles:
- Go all out. No hedging, no shortcuts. The deliverable must be complete (except assets the user must provide).
- Dream big and bold. Distinct, beautiful, outstanding and highly inspiring work.
- Verify in bounded passes, not a loop, and the ceiling covers the whole cycle: screenshots, defect scans, micro-edits, and rebuilds alike. Build fully, inspect once with a batched round (desktop and mobile together), fix everything it shows in one batch, confirm with at most one more round, and stop polishing. Open-ended self-QA burns the user's money doing worse what the finish handoffs do better.

## Setup

1. Run `node .claude/skills/impeccable/scripts/context.mjs` once per session (if the runtime shows this skill's loaded base directory, run `node <skill-base-dir>/scripts/context.mjs`; keep cwd at the user's project). Pass a named source file or route as `--target <path>`. It loads PRODUCT.md, DESIGN.md, the matching surface brief, and native-platform guidance when applicable; follow its directives and do not rerun it.
2. Before acting, load the one playbook that owns the request: the Commands table's reference for an explicit or clearly implied sub-command, or [reference/new-work.md](reference/new-work.md) for a new surface or replacement visual world. Then inspect the target and at least one representative source of incumbent visual truth (tokens, theme, CSS, component, or asset) before editing.
3. After analysis and direction are resolved, load [reference/craft-floor.md](reference/craft-floor.md) immediately before editing UI. It carries the quality floor, the absolute bans, and the reflexes no detector catches. Do not load it for planning-only work.

## How to design

- **The brief wins.** Honor pinned aesthetics, eras, materials, fonts, and palettes even when they conflict with a saturated-pattern warning. Redirecting a clear brief toward your taste is failure.
- **Refinement preserves; redesign replaces.** Refinement keeps the incumbent identity, behavior, copy, and everything outside scope. Ask before replacing factual copy or adding claims. Redesign keeps product truth, content, function, native affordances, and constraints, but treats the old look as evidence and anti-reference; choose a replacement world in new-work and replace DESIGN.md. Never split the difference into polish on the discarded look.
- **Visual authority is evidence, not a filename.** Missing DESIGN.md alone does not make a project greenfield; new-work decides whether to preserve, expand, or replace the incumbent world.

## Modes

The mode names what the visitor's success looks like on this surface.

- **Persuade:** the visitor decides and acts; design is the product. Landing pages, marketing, campaigns, pricing. Earn attention and action. Ship real imagery when the brief needs it; follow the committed world, not category habit.
- **Operate:** the visitor completes a task. App UI, dashboards, editors, admin, settings, tools. Scanability, consistency, native expectations, and the real usage scene outrank expression. Brand lives in precise details.
- **Read:** the visitor understands something. Docs, articles, guides, help, changelogs. Structure for comprehension, then make the reading experience worth staying in.
- **Experience:** the visitor is inside the work itself. Portfolios, galleries, showcases. Let the artifact lead from the first viewport; the interface recedes.

Choose the mode from the requested surface, not the product, and persist it only in that surface brief. A tool's landing page is still Persuade; a fashion house's documentation is still Read; a docs index is Read, not Persuade. See [new-work.md](reference/new-work.md) for new surfaces and [operate.md](reference/operate.md) for deeper Operate/Read guidance.

## Commands

| Command | Category | Description | Reference |
|---|---|---|---|
| `craft [feature]` | Build | Deprecated alias for an ordinary new-work request | [reference/craft.md](reference/craft.md) |
| `shape [feature]` | Build | Plan UX/UI before writing code | [reference/shape.md](reference/shape.md) |
| `init` | Build | Capture durable product context in PRODUCT.md | [reference/init.md](reference/init.md) |
| `document` | Build | Generate DESIGN.md from existing project code | [reference/document.md](reference/document.md) |
| `extract [target]` | Build | Pull reusable tokens and components into design system | [reference/extract.md](reference/extract.md) |
| `critique [target]` | Evaluate | UX design review with heuristic scoring | [reference/critique.md](reference/critique.md) |
| `audit [target]` | Evaluate | Technical quality checks (a11y, perf, responsive) | [reference/audit.md](reference/audit.md) · native: [reference/audit.native.md](reference/audit.native.md) |
| `polish [target]` | Refine | Final quality pass before shipping | [reference/polish.md](reference/polish.md) |
| `bolder [target]` | Refine | Amplify safe or bland designs | [reference/bolder.md](reference/bolder.md) |
| `quieter [target]` | Refine | Tone down aggressive or overstimulating designs | [reference/quieter.md](reference/quieter.md) |
| `distill [target]` | Refine | Strip to essence, remove complexity | [reference/distill.md](reference/distill.md) |
| `harden [target]` | Refine | Production-ready: errors, i18n, edge cases | [reference/harden.md](reference/harden.md) |
| `onboard [target]` | Refine | Design first-run flows, empty states, activation | [reference/onboard.md](reference/onboard.md) |
| `animate [target]` | Enhance | Add purposeful animations and motion | [reference/animate.md](reference/animate.md) |
| `colorize [target]` | Enhance | Add strategic color to monochromatic UIs | [reference/colorize.md](reference/colorize.md) |
| `typeset [target]` | Enhance | Improve typography hierarchy and fonts | [reference/typeset.md](reference/typeset.md) |
| `layout [target]` | Enhance | Fix spacing, rhythm, and visual hierarchy | [reference/layout.md](reference/layout.md) |
| `delight [target]` | Enhance | Add personality and memorable touches | [reference/delight.md](reference/delight.md) |
| `overdrive [target]` | Enhance | Push past conventional limits | [reference/overdrive.md](reference/overdrive.md) |
| `clarify [target]` | Fix | Improve UX copy, labels, and error messages | [reference/clarify.md](reference/clarify.md) |
| `adapt [target]` | Fix | Adapt for different devices and screen sizes | [reference/adapt.md](reference/adapt.md) · native: [reference/adapt.native.md](reference/adapt.native.md) |
| `optimize [target]` | Fix | Diagnose and fix UI performance | [reference/optimize.md](reference/optimize.md) |
| `live` | Iterate | Visual variant mode: pick elements in the browser, generate alternatives | [reference/live.md](reference/live.md) |

Routing:

- **No argument:** read [routing.md](reference/routing.md) and present its context-aware menu; never auto-run a command.
- **Explicit or clearly implied command:** load its reference (native variant on native platforms) and follow it. Ask once if two commands fit.
- **Otherwise:** treat the request as general design work. Missing PRODUCT.md routes a new surface or replacement world through init, then new-work; a narrow refinement of existing code proceeds on the incumbent implementation as context.mjs directs, offering init afterward rather than blocking on it.
- `teach` aliases `init`. `craft` is a deprecated alias for ordinary new-work and adds nothing. `shape` owns task discovery, then enters new-work only for visual-world and surface-concept decisions.

After init writes PRODUCT.md, resume without rerunning `context.mjs`; init loads the native platform reference itself when the platform it recorded is `ios`, `android`, or `adaptive`.

**Pin / Unpin:** `node .claude/skills/impeccable/scripts/pin.mjs <pin|unpin> <command>` creates or removes a standalone `/<command>` shortcut. Report the script's result concisely; relay stderr verbatim on error.

**Hooks:** `/impeccable hooks <on|off|status|ignore-rule|ignore-file|ignore-value|reset>` manages the design detector hook for this project (auto-runs the detector after UI file edits and surfaces findings). Load [reference/hooks.md](reference/hooks.md) when the user invokes it with any argument.

**Doctor:** `/impeccable doctor` reports and repairs drift between this project's Impeccable artifacts (PRODUCT.md, DESIGN.md and its sidecar, config, surface briefs, the hook) and what this version reads. Load [reference/doctor.md](reference/doctor.md) when the user invokes it, or when they ask what is out of date, stale, or needs refreshing. A `CONTEXT_STALE` directive in Setup's output is the cheap subset of the same report; act on it there per its own instructions rather than running doctor unasked.

**Never repair drift as a side effect of a design task.** A `CONTEXT_STALE` finding is reported, not acted on, unless the user asks. The one exception is a finding marked `auto`, which the next write to that file performs anyway.
Loading
Loading