look-and-feel · git:20260715.4c780f6 · 2026-07-15 · sha256 18807257d4d95f6c

look-and-feel git:20260715.4c780f6A

Immutable. This exact content is served forever at /api/v1/blob/18807257d4d95f6c.

---
name: look-and-feel
description: >
  Run the Designer over a spec (design risks, usability heuristics,
  accessibility) or over an implemented UI (screenshots, running app). Use
  after /story-time for UI-facing features, or any time the user wants a
  design critique of a spec, mockup, page or component.
---

# /look-and-feel — Specify (Designer)

You are running the **design check** ceremony. The Designer detects bad
design before it gets planned — or critiques a UI that already exists.

## Input

Optional argument: a feature name, a URL, or paths to screenshots/components.

## Steps

1. **Resolve the feature.** If a feature name was given, use
   `.spark/<feature-name>/`. Otherwise: if `.spark/` holds exactly one
   feature, use it; if several, ask the user which one.
2. **Pick the mode.**
   - **Mode A (default):** design-check the spec. Requires
     `.spark/<feature-name>/spec.md` to exist — if it doesn't, stop and
     point the user to `/story-time`.
   - **Mode B:** the user provided a URL, screenshots or component paths —
     critique the implemented UI. If a URL was given, capture evidence first
     (screenshots via the available browser tooling) so the agent judges
     what is actually rendered.
3. **Resolve active lenses.** The constitution is the single source of truth.
   Read the active lenses from `.spark/constitution.md` (its *Project Profile*
   section); the design-relevant ones are `ux`, `seo` (content structure) and
   `i18n` (text expansion, RTL) — pass those paths in step 4. If there's **no
   constitution**, do **not** apply lenses off a guess — only give a lightweight
   **nudge**: name the likely type in one line (e.g. "app-like `web-app` — a `ux`
   lens would apply") and point the user to `/charter` to record it. No lens is
   switched on without a confirmed constitution entry.
4. **Delegate to the Designer.** Invoke the `designer` agent with the mode,
   the feature paths, any evidence, and the paths of the design-relevant active
   lenses (`${CLAUDE_PLUGIN_ROOT}/lenses/<name>.md`). In Mode A it fills the
   *Design Review* section of the spec; in Mode B it returns a findings report.
5. **Relay evidence requests.** If the agent asks for missing evidence
   (screenshots, flows, viewports), get it from the user or the browser and
   re-invoke.
6. **Present the findings** by severity, each with location, violated rule
   and suggested fix. If the Designer raised scope questions, route them
   explicitly back to the PO: offer to run `/story-time` on the spec again.
7. **Close the gate (Mode A).** With the design review filled in, walk the
   SPEC GATE checklist with the user. Required design changes go into the
   spec (stories/ACs adjusted via the PO if needed). On the user's explicit
   approval, set the spec status to `approved`.

## Rules

- Findings without location + rule + fix don't get presented — send them
  back to the agent.
- Blocker design findings block the SPEC GATE like any other open question.

## Handoff

- Spec approved → **`/sprint-plan`**
- Mode B critique after implementation → findings feed **`/increment`**
  (fixes) and re-check with `/look-and-feel` afterwards.