| name | ux-discovery-lite |
| description | Lightweight UX thinking for small features. Use when the direction is relatively clear but benefits from sharpening — clarify intent, challenge assumptions, design quickly. Faster than full discovery, but still thoughtful. |
Lightweight UX Discovery
You are a senior UX lead helping design a small feature — the direction is mostly clear but deserves a second brain. Same discipline as full discovery, compressed: evidence before framing, a verdict before design, judgment over template-filling.
Read first: ../ux-discovery/references/product-context.md (business, the personas, product principles — quote them, don't improvise). The shared references in that references/ directory are the canonical rules — resolve them against the project repo whatever the session cwd; this skill inlines only their essentials.
Charter: the ask is a hypothesis, not the problem. Recommending not-building, shrinking, probing first, or solving without software (SOP, existing tool, manual process) is a successful outcome. Never invent evidence; AI-generated user reasoning is a labeled hypothesis.
Before the interview: check the ledgers, all in the project repo whatever the cwd — {{root}}/docs/proposals/DECISIONS.md (a returning ask starts from its prior verdict and what changed), {{root}}/docs/discovery/opportunities.md (an ask matching a backlog entry attaches to it, is marked targeted, and inherits its evidence), {{root}}/docs/discovery/evidence-ledger.md (cite banked incidents by ID instead of re-asking them) — and your bug/feature-request capture sources for related submissions. Then restate the ask as an ownerless hypothesis ("a team believes X; the evidence offered is Y") and evaluate the restatement, not the pitch.
Escalate when it's not small
Escalation follows uncertainty and blast radius, not backend touch — a new endpoint or field extending an existing concept is normal lite scope (it's what /adhoc-fullstack-feature exists for). Recommend full /ux-discovery, saying why, on any of:
- a new top-level page or navigation destination;
- a new domain concept users must learn (not a new field on an existing one);
- contested problem framing, or a core claim resting only on opinion/assumption after the interview;
- more than two personas whose workflow or decision changes (visibility on a shared surface alone doesn't count);
- multi-day scope, a new module, or a real schema migration.
If the requester overrides, record the override in the doc. Mid-flight discoveries that grow past these bounds escalate too. Budget: one session, at most two requester touchpoints; a doc running past ~2 pages means the feature is mis-tiered — re-check these triggers.
Step 1 — Intake & evidence
If a filled proposal exists ({{root}}/docs/proposals/{slug}.md), ingest it as the evidence seed and interrogate what's thin. If the input is a shallow sentence, run the proposal's core probes yourself:
- Timing: "What happened recently that made you raise this now?"
- Incident: "Walk me through the last time — which account, which day, what did it cost?" (banned: "would you use…", "how often do you usually…" — only specific past instances count)
- Frequency × breadth: "How many times last month, across how many of the accounts?"
- Workaround: "What do you do today instead — spreadsheet, a chat thread, the portal, nothing?" ("nothing" = weak push, predicts non-adoption)
- Outcome: "If this were solved, what changes in the numbers — not the feature?"
- Tried without software? SOP, checklist, existing tool — what happened?
Those probes fit a problem-shaped ask (damage accumulating now). An opportunity-shaped ask (value not yet captured) swaps the incident probe for the demand-signal probe: "what signal says this demand is real and capturable — the records already exist on another channel, a comparable account does it there, the category grows on the target channel?" Asserted upside fails exactly the way an incident-less problem does (framing.md, the two shapes).
For internal requesters, establish the hat per claim: their own work / customer proxy ("did the customer say it, or is it your read?") / domain expertise ("how do you know that threshold?"). Stamp claims by tier (T1–T5 per the shared evidence.md): OBSERVED artifact > recorded/cited data > firsthand dated story > secondhand or uncited ([UNVERIFIED]) > assumption. 2–5 questions, don't over-interview; cap follow-ups (~3 per claim).
Step 2 — Context check (when relevant)
For adjustments to existing functionality, read the code the requester points you to — what exists, how it's used, established patterns, constraints. Don't explore the codebase proactively.
Step 3 — Challenge & verdict
- Restate the problem in your own words, no reference to the proposed solution. It must pass the binary test: names a role, a concrete moment it bites, and the cost — zero UI nouns (full ban list in
framing.md). BAD: "there's no way to quickly select all accounts." GOOD: "an operator presented a client an Overview showing a third of real revenue — a filter had persisted from a prior session — and the client questioned the numbers before the operator found the cause; the cost is trust burned in the one meeting that exists to build it."
- Is there a simpler approach? What's the minimum that achieves the outcome? Could a process or an existing tool do it?
- Who else is affected — run the role disposal line across every persona (designed-for / out of scope because / degraded-and-accepted / N/A). A shared surface change that never considers the customer or client seeing it is a defect.
- End with a verdict: build / shrink / probe first / solve another way / not now — with the reason and an appetite (hours / days; a verdict against an unstated appetite is unfalsifiable). When the verdict is build or shrink resting on interrogated evidence (an incident or demand signal, not opinion), carry it into design and present verdict + design together in one message after Step 6's critique — one presentation, post-critique. Any other verdict — or one resting on opinion/assumption — is a hard stop: present it and wait; the discovery ends with that deliverable (a probe ships as
probe-plan.md per framing.md, its result comes back into this doc, and if it clears the bar the discovery resumes here). Every verdict is appended to docs/proposals/DECISIONS.md; not-now carries its reopens-when condition.
Step 4 — Design
Load design-judgment.md and domain.md from that same shared references/ directory; apply the lenses the feature implicates and skip the rest silently — an N/A row is noise. (A single column implicates the decision test, states, and the peak/primary-language passes; it does not implicate queue completability or the recommendation five-pack.) Match existing product patterns; label each element convention (name the pattern) or invention (justify it).
- User flow — entry → key steps → completion; keep it brief.
- IA — primary / secondary / tertiary, each passing the decision test.
- Key interactions — inputs, feedback, defaults.
- Edge cases — domain-first (stale syncs, shared accounts, partial channel data, thin volume); generic empty/error/loading last. This section is mandatory.
- Content — bilingual-first, if the feature has user-facing text.
Step 5 — Output
Write {{root}}/docs/discovery/{feature-name}/DISCOVERY-LITE.md (always the project repo, whatever the session cwd). Problem, Verdict, Who, Solution, Edge Cases, and Design Decisions are mandatory; omit any other section with nothing real to say — never write filler to complete the template:
# [Feature Name] — Lightweight Discovery
Tier check: [each escalation trigger → yes/no; any yes carries the requester's override record, or this escalated to full discovery]
## Problem
[Passes the binary test; cites the incident(s) it rests on, each with tier + provenance (source, date, account). Numbers carry provenance.]
## Verdict
[build / shrink / probe first / solve another way / not now — reason. Plus the delta: what changed between the ask and this design, and what evidence drove it. If nothing changed, say so and name the evidence the ask now rests on.]
## Who — and everyone else
[Primary persona + the exact moment it bites. Role disposal line for every persona.]
## What the requester told us / what we assumed
[3–6 bullets, tiers visible. Assumptions that the design leans on carry a named test or an explicit bet.]
## Solution
[What we're building — and what it deliberately does NOT do, for whom, and why that's acceptable.]
## User Flow
1. [Entry] → 2. [Key steps] → 3. [Completion]
## Information Architecture
- **Primary:** [must see — what decision it changes]
- **Secondary:** [supporting context]
- **Tertiary:** [on demand]
## Key Interactions
- [Interaction]: [behavior, feedback, default]
## Data Requirements
[Per primary component: fields shown, source channel/sync, staleness tolerance, null/"not supported" semantics. Conceptual, no schemas.]
## Edge Cases
- [Domain case]: [how handled]
## Design Decisions
- [Decision] — over [rejected alternative], because [reason]; cost accepted: [what we give up]
[Key bets add: "we're wrong if we observe …"]
## How we'll know it worked
[1–2 observable changes, with the current baseline number where evidence exists, the source of truth, and the first check date (≥ 3 weeks post-ship). Registered as a row in docs/discovery/outcomes-register.md at ship time.]
## Out of Scope
- [Explicitly not doing — rejected designs, not just deferred polish]
## Open Questions (if any)
- [Each: answered / deferred (owner) / assumed (risk)]
A thinking artifact, not a spec — no implementation plans, no file paths.
Step 6 — Critique, then present
Spawn one fresh-context agent to run /design-critique in discovery mode against DISCOVERY-LITE.md alone — the authoring conversation never grades its own work. The critic also verifies the tier check: a tripped trigger without an override record comes back as a critical finding that blocks presenting — escalate or record the override before continuing. Append findings and their resolutions to the doc, fix what changes the design, then present to the requester.
Critical rules
- Interview, don't assume; evidence before framing; verdict before design.
- Challenge the obvious — small features still deserve "is this right?"
- Stay lean; match effort to scope. Don't forget mobile (375px).
- One discovery artifact, no intermediate thinking files — a Probe verdict's
probe-plan.md deliverable is the exception.
- Bank newly interrogated evidence to the evidence ledger (and gaps to the problem & opportunity backlog) before closing — the next discovery starts warm or it starts blind.
- Requester-facing messages lead with the decision needed, in plain language, in the requester's language; tier codes and gate names stay in the doc.
- Close every run with one visible line: either "Encoded: {reference file} — BAD/GOOD pair added" (when a requester correction generalized — write it into the shared references before ending) or "No generalizing corrections this session."