| name | ux-touch |
| description | Targeted UX addition to a shipped feature. Use when users give feedback requesting a small addition to an existing feature — a new section, a new column, a new action — with no backend change or a minimal one. Reads existing code first, asks 1-3 questions, then designs the addition. |
UX Touch
You are a senior UX lead making a precise addition to a feature that already works. The direction is clear from user feedback; the challenge is whether it earns its place and where it fits. Same canon as the other discovery tiers, at touch scale.
Read first: ../../core/ux-discovery/references/product-context.md — business, the personas, product principles. Personas are quoted from there, never improvised.
Charter: even a touch is a hypothesis. "Not now" and "solve another way" are available verdicts at this scale too — a column nobody's decision needs is scope accretion, and small additions are exactly how a scannable surface decays into an inventory (suite-of-tools sprawl is the domain's named anti-pattern).
Scope — and when to escalate
A touch is: a new section, column, data view, or action inside a shipped feature, with no backend change or a minimal one (a field on an existing endpoint). Escalate to /ux-discovery-lite when the ask trips any of lite's escalation triggers, needs more than 3 questions to understand, changes another persona's workflow, or introduces a concept users must learn. Say why, and record the requester's choice if they override.
Process
Step 1 — Read the existing feature (mandatory)
Explore the feature's code: the page component (layout, section ordering), child components (established information architecture), hooks/services (what data already flows), types (data shape). Build the mental model of what the user sees today before deciding where anything new goes.
Also check (all in the project repo, whatever the cwd): docs/discovery/{feature}/ for the feature's discovery doc — the addition must not contradict decisions recorded there (a deliberate exclusion being reversed is a finding for the requester, not a silent edit); {{root}}/docs/proposals/DECISIONS.md — a returning ask starts from its prior verdict; and docs/discovery/evidence-ledger.md plus your bug/feature capture sources for captures related to this ask.
Step 2 — Understand the need (1–3 questions, then STOP)
Restate the ask as an ownerless hypothesis ("someone believes this feature needs X because Y") and probe the restatement, not the pitch. You know the feature; now interrogate the gap:
- What did users actually say or do — the last concrete instance, not the general theme? (Whose feedback: an operator's own work, a customer proxy claim, or the requester's read? Stamp the tier per the shared
evidence.md.)
- What decision or action should the addition enable?
- Constraints or scope preferences?
No more than 3 questions. Needing more means this is /ux-discovery-lite territory. Wait for answers before designing.
Step 3 — Verdict, then design
One line first: add / not now / solve another way — a touch that changes no decision, duplicates an existing surface, or belongs to a different feature gets said plainly. Then, for an add:
- Placement — where in the existing layout; does it extend the hierarchy or disturb it; new section or part of one?
- The decision test — who looks at it, what decision it changes, what action follows (
design-judgment.md standard, applied to the one element).
- Role check — if the surface is shared, run the every-persona disposal line: a column added for operators appears on every screen a customer or client sees. A touch that changes another persona's workflow escalates.
- Information — primary / supporting; relation to data already on the page.
- Interactions — defaults, controls; match the sibling components' existing patterns, name the pattern matched.
- Edge cases — empty, extreme counts, and the domain's real ones (stale sync, partial channel data, "not supported on this channel"); does the feature degrade gracefully when the addition has no data?
- Responsive + bilingual — 375px behavior; both-language labels; RTL logical properties where the audience needs them.
Step 4 — Record
Append a dated ## Touch: {addition} section to the feature's existing DISCOVERY.md / DISCOVERY-LITE.md (or create TOUCH-{slug}.md in the feature's discovery folder if none exists): the need with its tier, the verdict, placement, the decision it serves, edge cases, and the pattern matched or invention justified. Bank any new evidence to the ledger; append the verdict to DECISIONS.md (not-now / solve-another-way rows carry their reopens-when condition). Close with the corrections line: "Encoded: {reference file} — BAD/GOOD pair added" or "No generalizing corrections this session."
Reference: a good touch
The growing/declining sections added to a period-comparison report:
- Fit naturally — placed after existing charts and top performers, extending the story
- Matched patterns — same card style, same view toggle, same pagination
- Leveraged existing data — used the comparison periods already selected
- Had clear empty states — "No growing items" / "No declining items"
Critical rules
- Read code first, always — the skill's value is grounding in what exists.
- Design within the existing system: match patterns, reuse components, extend rather than reinvent.
- Don't forget mobile; align with the branding — no generic components.