Agent-led beta DX/UX readiness walk. Walk a product's critical user journeys as a skeptical first-time user and treat friction as a bug: anything that makes the user pause, guess, reread, or ask for help is a logged issue. At every step test two things - can the user understand what to do next, and can they recover when something fails. Triage each finding as blocks-beta, confuses-beta, or polish, with tried / expected / happened plus evidence, and end with a ship-or-hold readiness verdict. Use for beta readiness, onboarding and first-run QA, pre-launch UX gates, "walk the beta path", "is this ready for users", or "treat friction as a bug". Project-agnostic.
Walk the critical path of a product the way a real first-time beta user would, and treat every moment of friction as a bug. The deliverable is a friction report plus an explicit beta-readiness verdict (ship or hold), not a code change.
This skill is the first-run-user lens. It is process, not domain - it works on any web product. For which browser/test tool to use, defer to wiki/meta/capability-routing-map.md; for fixing what you find, hand off to agent-iteration-loop.
| Skill | Question it answers |
|---|---|
| beta-dx-walk (this) | Can a first-time user complete the critical journeys and recover from failure? Is it ready for beta? |
dogfood | What bugs / UX issues exist anywhere across the app surface? (breadth-first hunt) |
gstack-qa | Code-level QA with atomic commits + regression tests |
agent-iteration-loop | The full implement -> validate -> ship loop; this skill is its "verify live" lens for first-run UX and a source of follow-up fixes |
eval-loop | Scored, benchmarked output quality over time |
Reuse dogfood's browser + evidence mechanics. This skill adds the comprehension / recovery lens, the friction triage, and the readiness call.
agent-iteration-loop. Never touch prod data / infra or growth / marketing surfaces; flag those as owner decisions.block_until_ms: 0) and smoke-read its output, or use the provided beta / staging URL.wiki/meta/capability-routing-map.md: browser-harness or agent-browser, screenshot-first). Sign up as a new user; do not reuse seeded admin state.At every step ask the four friction questions:
Did I have to PAUSE (stop and figure out what this means)?
Did I have to GUESS (act without being sure it is right)?
Did I have to REREAD (parse the same copy / UI more than once)?
Would I ASK FOR HELP (search docs, ping support, give up)?Also ask: is the next action obvious? and, when something breaks, is the error legible and is there a visible path to recover? Narrate expected vs actual as you go.
Any yes to a friction question is an issue. Append each immediately using templates/friction-report-template.md:
### FRICTION-NNN - <one-line title>
- Journey / step: <which journey, which step>
- What I tried: <the user's intent>
- What I expected: <the mental model>
- What happened: <actual behavior / copy / state>
- Severity: blocks-beta | confuses-beta | polish
- Recovery: <could the user self-recover? how?>
- Evidence: <screenshot path, console / network log, URL, repro steps>
- Suggested fix: <optional, one line>Severity rubric (user outcome, not fix size):
Beta users break things. Trigger the likely failure modes and confirm the user can understand and recover:
Empty states and error states are first-class journeys, not edge cases.
Close the report with:
blocks-beta + high-impact confuses-beta.staying-in-the-loop-with-agents).blocks / confuses items into agent-iteration-loop as scoped fixes, then re-walk after fixes. This is a standing loop (agent-looping).cleanup-terminals-browsers); keep the IDE, agent runtime, and shared MCP.- [ ] Walked as a fresh first-time user (new / incognito session, new account)
- [ ] Covered the agreed 3-6 critical journeys + the failure / recovery journey
- [ ] Logged every pause / guess / reread / ask as a FRICTION issue with evidence
- [ ] Each issue severity = user outcome (blocks / confuses / polish)
- [ ] Probed empty states + error / recovery paths explicitly
- [ ] Report ends with counts, must-fix list, and a SHIP / HOLD verdict + top 3
- [ ] Did not change prod / growth surfaces; fixes routed to agent-iteration-loop
- [ ] Spawned servers / browsers torn down