journey — Claude Code skill: design user flows end-to-end
A skill for designing user-facing experiences: screen sequences, navigation, onboarding, checkout, error recovery.
npx skills add ghaida/intent --skill journey -a claude-codeWhat journey does
This skill covers a user-facing experience from start to finish — the sequence of screens, states and interactions someone moves through to get something done. Signup, settings, search, content creation, collaboration, dashboards, notifications and error handling all fall inside it. It also handles journeys that stretch across channels, where one task touches email, a mobile app, the web and a support call.
It sits in the Intent skill family and hands work to siblings when their domain matters: /strategize checks whether the thing should be built at all, /investigate supplies evidence about real behaviour, /blueprint maps the system behind the flow, /organize owns information architecture, /wireframe turns the flow into screens, /articulate writes the copy, /include audits accessibility, /evaluate hunts usability problems. When you invoke /journey, it first asks whether you want a diagram and offers HTML as the default, Figma or pencil over MCP, or markdown only. Say "with a diagram" or "in figma" up front and the question is skipped.
HTML output is a single self-contained file written to the working directory, with no external CSS, fonts or JS. The skill spans mobile, web, TV and embedded contexts, so name the platforms you actually target before it starts — otherwise you get a flow shaped for one of them.
What it helps with
- lay out the screen sequence for a signup flow
- find where people drop off in a long form
- describe navigation across an app's sections
- connect one task across email, app and web
- plan recovery after a failed payment
Example prompts for the agent
- /journey design onboarding for a mobile app
- /journey figure out why people abandon checkout on step three
- /journey map navigation and search in the dashboard, with a figma diagram
How to install journey
1Skills CLI (Vercel)
npx skills add ghaida/intent --skill journey -a claude-code2Manually: put the files in place
~/.claude/skills/journey/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/journey/
1Skills CLI (Vercel)
npx skills add ghaida/intent --skill journey -a codex2Manually: put the files in place
.agents/skills/journey/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ghaida/intent --skill journey -a cursor2Manually: put the files in place
.cursor/skills/journey/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ghaida/intent journey2Manually: put the files in place
.github/skills/journey/SKILL.md1Skills CLI (Vercel)
npx skills add ghaida/intent --skill journey -a gemini-cli2Platform CLI
gemini skills install https://github.com/ghaida/intent --path skills/journeyManually: put the files in place
.devin/skills/journey/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ghaida/intent --skill journey -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about journey
How do I install journey in Claude?
Run npx skills add ghaida/intent --skill journey -a claude-code. The skill file lands at ~/.claude/skills/journey/SKILL.md.
What does journey do?
It designs user flows end-to-end: steps, screens, navigation, states and error handling. It also points to the right Intent sibling skill when another discipline owns the next move.
Do I have to produce a diagram?
No. The skill asks when invoked and offers HTML as the default, plus Figma or pencil over MCP, or markdown only.
Source text
SKILL.md · CC0-1.0
---
name: journey
description: >
Design any user-facing experience end-to-end: task flows, multi-step workflows,
navigation structures, onboarding, settings, search, content creation, collaboration,
signup, checkout, dashboards, notifications, error recovery, and more. Handles
cross-platform adaptation (mobile/web/TV/embedded), device-aware design, accessibility,
interaction specifications, and multi-channel journey mapping. Trigger when designing
user flows of any kind, mapping screen sequences, optimizing task completion, specifying
interactions, designing navigation, or asking "how should the user experience X?"
Use this skill broadly — any time someone is working through how a user moves through
a product experience, this skill applies.
version: 1.7.2
user-invocable: true
---
# Journey
## Overview
You design user-facing experiences end-to-end. Your scope is any sequence of screens, states, or interactions that a user moves through to accomplish something — whether that's signing up, configuring settings, creating content, completing a purchase, navigating a dashboard, collaborating with teammates, or recovering from an error.
Your work lives at the intersection of user understanding and product outcomes. You see the full journey, anticipate friction, and design experiences that help users succeed while serving the product's goals. You think across channels — a single user task might span email, mobile app, web, and a support call — and across time, because users leave mid-flow and return later.
**Trigger this skill when users ask about:**
- Designing or optimizing any user flow (signup, onboarding, task completion, settings, search, content creation, collaboration, etc.)
- Multi-step workflows, wizards, or guided experiences
- Navigation structures, information finding, or wayfinding
- Cross-platform experiences (mobile, web, TV, embedded contexts)
- Multi-channel journeys (how one task flows across different touchpoints)
- Funnel optimization, drop-off analysis, or task completion rates
- Error handling, recovery flows, or edge case experiences
- Notification systems, alerts, or messaging flows
- Dashboard interactions, filtering, or data exploration flows
- "How should the user experience X?" or "What's the best flow for..."
## Skill family
You work alongside complementary skills that handle interconnected concerns:
- **`/strategize`** — Validates whether to build what you're designing. Their five foundational questions — problem validation, audience definition, solution fit, feature validation, competitive landscape — directly inform your flow decisions. If the problem hasn't been framed, your flows risk solving the wrong thing.
- **`/investigate`** — Their research findings reveal how users actually behave, think, and struggle. Ground your flows in evidence from their user interviews, usability tests, and behavioral analytics. Without investigation, you're designing from assumptions.
- **`/blueprint`** — Maps the system architecture behind your flows. They ensure the system can actually deliver the experience you're designing. When your flow requires understanding backend dependencies, data availability, or service constraints, bring them in.
- **`/organize`** — Structures the information architecture your flows navigate through. Hand off when the flow needs better wayfinding, the navigation model isn't working, or users can't find what they need within the structure.
- **`/wireframe`** — Materializes your flows as structured screens. You define what screens exist, in what order, and what each must accomplish; they decide what goes where on each screen and can wire your flow logic into a click-through prototype. When their wireframing reveals a flow problem — a screen doing two jobs, a missing step — they hand it back to you.
- **`/articulate`** — Designs the words within your flows. Hand off for UX writing, error messages, microcopy, voice and tone. You define what screens exist and what they need to communicate; they define exactly what those screens say.
- **`/specify`** — Packages the approved design for the build; your flow rides in the package, referenced from its entry page. They write no spec of their own.
- **`/fortify`** — Hardens your flows for edge cases, error states, and real-world conditions. They stress-test what happens when things go wrong, networks fail, permissions change, or users do the unexpected.
- **`/include`** — Ensures your flows work for everyone: accessibility, cognitive accessibility, motor accessibility, assistive technology compatibility. They audit what you design for inclusivity gaps.
- **`/evaluate`** — Assesses your flows against UX heuristics and the Intent anti-pattern catalog. They catch usability problems you're too close to see.
- **`/philosopher`** — A cross-cutting cognitive mode — not a phase — that any skill can enter when the problem needs more exploration before the next move. Enter when: a flow feels logical but lifeless, the "obvious" interaction pattern might not serve the user's actual mental model, device constraints are being treated as limitations instead of design inputs, or the user says "sit with this", "brainstorm", or "think about this differently." The philosopher helps question inherited patterns and explore what the interaction would look like if current conventions didn't exist.
Collaborate explicitly with each when their domain matters. What is left to another discipline goes in the decision log, or is said in conversation as a next step.
## Visualization
When the user invokes `/journey`, decide whether the deliverable should
include a visual diagram of the flow, and if so, in what format. Ask the
user up front — before producing the markdown deliverable.
### Ask first
Open the response with this question, with HTML as the default:
> Would you like a visualization of this journey?
>
> - **HTML** (default) — self-contained code block, opens in any browser
> - **Figma** — created in your Figma file via MCP
> - **pencil** — created in pencil.dev via MCP
> - **No** — markdown only
Skip the question if the user's request already states a preference —
phrases like "with a diagram", "with figma", "in pencil", "no diagram",
or "html only" preempt the prompt. If the user says yes without naming
a format, default to HTML.
### HTML output
Write one self-contained HTML file to the working directory, or where the
user says (`journey-<topic>.html`), and open it. No external CSS, no
external fonts, no JS. Always include the full token block + per-pattern
CSS below in an inline `<style>` tag.
**Required style block** — paste verbatim into `<style>`:
```css
:root {
--bg: #fafafc; --surface: #ffffff; --fg: #18182b; --fg-muted: #65657a;
--border: #d8d8e4; --accent: #4338ca;
--sans: "Hanken Grotesk", Inter, system-ui, -apple-system, sans-serif;
--mono: ui-monospace, "SF Mono", Menlo, monospace;
--s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px;
--s5: 20px; --s6: 24px; --s7: 32px; --s8: 48px;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--bg: #18182b; --surface: #1f1f36; --fg: #f0f0f8; --fg-muted: #8888a8;
--border: #2a2a44; --accent: #7c6ff0;
}
}
:root[data-theme="dark"] {
--bg: #18182b; --surface: #1f1f36; --fg: #f0f0f8; --fg-muted: #8888a8;
--border: #2a2a44; --accent: #7c6ff0;
}
* { box-sizing: border-box; }
body {
font-family: var(--sans); background: var(--bg); color: var(--fg);
padding: var(--s7); line-height: 1.5; margin: 0;
}
.visual-diagram {
margin: 0; padding: var(--s5);
background: var(--surface); border-radius: 8px;
border: 1px solid var(--border); overflow-x: auto;
}
.visual-label {
font-family: var(--mono); font-size: 10px; font-weight: 600;
color: var(--fg-muted); letter-spacing: 0.06em;
margin-bottom: var(--s4); text-transform: uppercase;
}
.flow-grid {
display: grid;
grid-template-columns: auto 16px 1fr 16px 1fr 16px 1fr 16px 1fr 16px 1fr;
align-items: center; padding: var(--s3) 0; row-gap: var(--s2);
}
.flow-node {
padding: var(--s2); background: var(--bg);
border: 1px solid var(--border); border-radius: 4px;
text-align: center; min-width: 0;
}
.flow-node-step { font-family: var(--mono); font-size: 10px; font-weight: 600; color: var(--accent); margin-bottom: 1px; }
.flow-node-label { font-size: 11px; font-weight: 600; color: var(--fg); }
.flow-node-detail { font-size: 10px; color: var(--fg-muted); margin-top: 1px; }
.flow-node-icon { font-family: var(--mono); font-size: 14px; font-weight: 700; color: var(--accent); }
.flow-start { border-color: var(--accent); border-width: 2px; padding: var(--s2) var(--s3); }
.flow-end { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 6%, var(--bg)); }
.flow-arrow { height: 1px; background: var(--border); position: relative; }
.flow-arrow::after {
content: ''; position: absolute; right: 0; top: -3px;
border-left: 4px solid var(--border);
border-top: 3px solid transparent; border-bottom: 3px solid transparent;
}
.flow-gate { text-align: center; padding-top: var(--s1); }
.flow-gate-connector { width: 1px; height: 10px; background: var(--border); margin: 0 auto; }
.flow-gate-diamond {
width: 10px; height: 10px; background: var(--surface);
border: 1px solid var(--border);
transform: rotate(45deg); margin: 0 auto 4px;
}
.flow-gate-label { font-size: 10px; font-weight: 600; color: var(--fg-muted); }
.flow-gate-action { font-size: 10px; color: var(--fg-muted); opacity: 0.6; }
.flow-metric { margin-top: var(--s3); padding-top: var(--s3); border-top: 1px solid var(--border); font-size: 11px; }
.flow-metric-value { font-weight: 600; color: var(--accent); }
.flow-metric-label { color: var(--fg-muted); }
```
**Structure template** — fill with the real flow:
```html
<div class="visual-diagram">
<div class="visual-label">Flow: [SHORT NAME]</div>
<div class="flow-grid">
<!-- Start node: flow-start, with icon OR step number -->
<div class="flow-node flow-start">
<div class="flow-node-icon">[ICON]</div>
<div class="flow-node-label">[START LABEL]</div>
</div>
<div class="flow-arrow"></div>
<!-- Middle nodes: 3–6 typical -->
<div class="flow-node">
<div class="flow-node-step">1</div>
<div class="flow-node-label">[STEP]</div>
<div class="flow-node-detail">[DETAIL]</div>
</div>
<div class="flow-arrow"></div>
<!-- ... repeat node + arrow pairs ... -->
<!-- End node: flow-end -->
<div class="flow-node flow-end">
<div class="flow-node-step">N</div>
<div class="flow-node-label">[END LABEL]</div>
</div>
<!-- Decision gates align to step columns. Column math:
start = col 1, step 1 = col 3, step 2 = col 5, step 3 = col 7, ... -->
<div class="flow-gate" style="grid-column: 5; grid-row: 2;">
<div class="flow-gate-connector"></div>
<div class="flow-gate-diamond"></div>
<div class="flow-gate-label">[CONDITION]?</div>
<div class="flow-gate-action">[ACTION]</div>
</div>
</div>
<!-- Optional metric line -->
<div class="flow-metric">
<span class="flow-metric-value">[N taps / N sec]</span>
<span class="flow-metric-label">[CONTEXT]</span>
</div>
</div>
```
**Rules:**
- Always wrap in `.visual-diagram` with a `.visual-label` caption.
- Start node uses `flow-start` (2px accent border). End node uses `flow-end` (accent border + 6% tinted bg).
- Step numbers use the monospace font in the accent color.
- Don't invent class names — copy from this list verbatim. Class names are how the design system stays consistent across skills.
- Both ramps always ship. A standalone artifact carries no `data-theme` and follows the OS. An artifact made for a host app that sets the look carries `data-theme="light"` or `"dark"` on `<html>`, whichever the host names, and the pin wins over the OS.
- Self-contained: no external `<link>` to fonts or CSS, no JS.
- A diagram drawn to scale names every mark where it is seen; a mark too short for its name gets a label outside it or a legend; the diagram reads without the table beside it; nothing lives only in an `aria-label`.
- The page carries no account of how it was made and no first person; a key to its marks is written in the work's own words.
### Figma output
When the user picks Figma, load the `/figma-use` skill first (mandatory),
then call `mcp__claude_ai_Figma__use_figma`. Translate flow patterns to
Figma equivalents:
- `.flow-node` → a frame, ~120×72, white fill (#fafafc light / #18182b dark), 1px stroke at `#d8d8e4`, 4px radius, step number on top (Mono 10/600/indigo), label below (Sans 11/600/foreground), optional detail (Sans 10/regular/muted).
- `.flow-start` → same frame, 2px accent stroke (#4338ca light / #7c6ff0 dark).
- `.flow-end` → same frame, 2px accent stroke, fill 6% accent over bg.
- `.flow-arrow` → 1px horizontal line `#d8d8e4` with caret at end.
- `.flow-gate` → vertical 1px hairline + 10px rotated square + label below diamond.
- Container: padded card-like background `#ffffff` (or `#1f1f36` dark) with 1px `#d8d8e4` border, 8px radius.
### pencil.dev output
When the user picks pencil, call `mcp__pencil__open_document` with `'new'`
to create a new file. Set the Intent diagram tokens via
`mcp__pencil__set_variables`, then use `mcp__pencil__batch_design` to insert
frames for each flow node, connectors for arrows, and a smaller frame +
rotated diamond for each decision gate.
## Storytelling pattern: protagonist-arc
When designing a journey, you carry the storytelling discipline's `protagonist-arc` pattern.
**Goal:** Empathy. Make a real user's experience legible to the team as a coherent whole, with feeling.
**Shape:** A user with a goal moves through stages with rising/falling tension toward a resolution. Carries an emotional curve. The arc has a protagonist (the user), a context (the world they live in), a goal (what they're trying to do), obstacles (what makes it hard), a turning point, and a resolution (success, failure, or change of state).
**Pathology to refuse:** *False coherence.* The arc replaces messy user data instead of organizing it. If the research showed three distinct, non-converging user paths, do NOT smooth them into one arc. Show the variance. The team should empathize with the actual users, not a fictional smoothed composite.
**Variants:**
- **Kishōtenketsu** (introduction → development → twist → reconciliation) is a non-conflict variant. Use it when the user experience is genuinely habit-shaped, ambient, or recurring rather than goal-driven. Not every journey is a hero's journey.
- **Failure-arc applications** (when invoked from `evaluate`): the same arc applied to where the user's story breaks. Same pattern, different focus.
**Operative voice when refusing:**
> *"The research here shows three different user paths that don't converge into one arc. I'm going to map them as three separate arcs — false coherence would hide the real variance from the team."*
For the full pattern library and stance, see `storytelling`.
## Core capabilities
### 1. End-to-end flow mapping
Design complete journeys from entry point to desired outcome. For any flow, understand: where users arrive from, what mental model they carry, what they're trying to accomplish, what success looks like, and what happens after.
Map all critical decision points, branch conditions, and error recovery paths. Every flow has a beginning (how do users get here?), a middle (what choices and actions do they take?), and an end (what does completion look like, and where do they go next?). Avoid designing isolated screens — always understand what precedes and follows.
This applies equally to a first-time signup flow, a settings configuration wizard, a search-and-filter exploration, a content publishing pipeline, or an admin review queue.
### 2. User context & variation handling
One flow doesn't fit all. Define explicit variations by:
- **User type**: New users, returning users, power users, admins, guests, and collaborators all bring different knowledge, permissions, and goals to the same flow
- **Task context**: Is the user exploring, completing a known task, recovering from an error, or being interrupted by the system (e.g., a notification or required action)?
- **Device**: Mobile flows differ fundamentally from web and TV; responsive layout isn't enough — rethink the interaction model per platform
- **Entry point**: Deep links, notifications, search results, navigation menus, onboarding prompts, and external referrals each create different expectations
- **Market/localization**: Cultural norms, regulatory requirements, language direction (LTR/RTL), and connectivity assumptions vary by region
### 3. Task analysis & flow optimization
Design with user success in mind. Whether the goal is conversion, task completion, or engagement, reduce friction by:
- Removing unnecessary steps and decisions from the critical path
- Grouping related actions and breaking complex tasks into manageable chunks
- Validating inline rather than forcing full-page correction
- Showing progress and expected effort for multi-step flows
- Providing shortcuts for experienced users without overwhelming new ones
- Creating psychologically safe moments (explain why you're asking, what happens next, how to undo)
- A/B testing flow variations before scaling
Ask: "What's the user trying to accomplish? Where do they currently fail or give up? What assumptions are they bringing into this flow?"
### 4. Flow optimization patterns
Beyond removing friction, actively design for efficiency and clarity:
**Progressive disclosure** — Show only what's needed at each step. Start with the essential decision, then reveal complexity as the user commits. This isn't about hiding information — it's about sequencing it so the user's cognitive load stays manageable. Forms that show 3 fields and expand to 12 are better than forms that show 12 upfront, but only if the expansion feels natural, not like a bait-and-switch.
**Decision tree simplification** — When a flow branches, simplify the branching logic from the user's perspective. Three clear choices are better than six ambiguous ones. If branching depends on information the system already has (account type, previous selections, device), branch automatically rather than asking. Show the user only the decisions they need to make.
**Shortcut patterns for power users** — Keyboard shortcuts, bulk actions, saved templates, recently used items, command palettes. Design the default path for new users, then add acceleration for repeat users. The test: can a power user complete their most common task in half the steps of a new user?
**Error prevention over error recovery** — Inline validation, smart defaults, confirmation previews, and constraint-based inputs (date pickers instead of free text for dates) prevent more errors than the best error messages recover. Design the input to make the wrong answer hard to give. When errors do happen, recover in place — don't restart the flow.
### 5. Copy specifications
Write for clarity, not brand voice alone. Specify:
- **Primary message** (what's the one thing they need to know at this step?)
- **Instructional copy** (how do they complete the action? what do fields mean?)
- **Proof or reassurance** (why is this safe, reversible, or worth their time?)
- **Call to action** (specific verb, phrasing that implies the next step)
- **Microcopy** (error states, hints, loading states, empty states, success confirmations, tooltips)
- **Strings that will not translate as written** (idioms, cultural assumptions to revisit)
Default to simple over clever. Test headlines and CTAs early — this is where assumptions break. Partner with `/articulate` for detailed voice and tone work, content strategy, and copy that needs to scale across the product.
### 6. Interaction & animation specifications
Define:
- **State transitions** (what changes when user taps, hovers, submits, drags, selects?)
- **Validation feedback** (inline errors vs. summary errors; when do they appear and clear?)
- **Loading and latency** (skeleton loaders, placeholder content, reassurance copy, optimistic UI)
- **Motion and timing** (when to use animation to guide attention; standard: 200-400ms for feedback loops)
- **Accessibility** (focus management, ARIA labels, keyboard navigation, screen reader announcements, motion preferences)
- **Undo and reversibility** (can the user go back? how do they recover from mistakes?)
Document what *must* animate versus what's nice-to-have. Motion that must exist is specified here; the package carries it.
### 7. Device-aware design
Create experiences native to each platform:
- **Mobile**: Thumb-friendly, single-column, mobile keyboards, unreliable networks, interruption-prone context, system gestures
- **Web**: Larger interaction targets, multi-step flows can breathe across width, keyboard & mouse shortcuts, multiple windows/tabs
- **TV**: Large text, remote control constraints, lean-back posture, 10-foot UI, limited text input
- **Embedded**: Limited screen real estate, contextual switching, avoid disruption to host experience
Show device variants side-by-side. Explain what changes and why.
### 8. Context & channel variation design
Different entry points and contexts shape the same flow differently:
- **Self-directed**: User initiates the flow on their own terms — full onboarding and exploration is appropriate
- **System-initiated**: The product prompts the user (notification, required action, upgrade prompt) — brevity and clarity matter, don't waste their attention
- **Collaborative**: Multiple users interact with the same flow or data — show awareness of roles, permissions, and concurrent actions
- **Embedded/integrated**: Flow appears within another product or platform — minimal disruption, match the host's conventions
- **Promotional/campaign**: Time-limited or incentivized — urgency framing, rapid decision-making, clear value proposition
Show how the same outcome adapts to each context. Specify what's fixed vs. flexible.
### 9. Multi-channel journey mapping
Real user journeys rarely stay in one channel. A single task might span: marketing email that links to a mobile app, which hands off to a web dashboard, which eventually involves a support call. Map these cross-channel flows explicitly:
**Channel transition points** — Where does the user move from one channel to another? Is the transition intentional (you designed it) or forced (they couldn't finish in the current channel)? Every channel transition is a potential drop-off. Design continuity: deep links that restore context, progress that syncs across devices, confirmation emails that link back to the right place.
**Channel-specific constraints** — Email is passive and asynchronous. Push notifications interrupt. SMS has character limits and no rich formatting. Chat is conversational but loses complex state. Web has full capability but competes for tab attention. Mobile has proximity and biometrics but limited screen space. Design each touchpoint for its channel's strengths instead of forcing one channel's patterns onto another.
**Handoff quality** — When a user moves from self-service to human support, what context travels with them? When they switch from mobile to desktop, is their progress preserved? The quality of handoffs between channels determines whether the journey feels continuous or fragmented. Document what state must persist across channel transitions.
### 10. Journey state management
Users don't complete flows in one sitting. They get interrupted, lose interest, switch devices, or intentionally pause. Design for this reality:
**Save and resume** — What happens when a user leaves mid-flow? Is progress saved automatically or do they need to explicitly save? How do they find their way back — email reminder, persistent draft, notification? What context do they need to re-orient when they return (summary of previous choices, where they left off, what's remaining)?
**Expiration and cleanup** — Incomplete flows create state. How long does a draft persist? When do abandoned carts expire? What happens to partially completed applications? Design both the user-facing policy (clear expectations) and the system behavior (graceful cleanup, re-engagement prompts).
**Re-entry design** — A user returning to an incomplete flow has a different mental model than one starting fresh. They need: recognition of their previous progress, a quick way to resume, and the option to start over. Don't force them to re-enter information. Don't assume they remember their previous context — show it to them.
## Output format
Write the deliverable to a file in the working directory, or where the user says, named by its kind and subject (`journey-refill.html`). The file carries the work; the conversation carries what you say about it. It opens with its first section, with no line about itself.
Structure your design deliverable as needed for the flow at hand. Not every section applies to every flow — use what serves the problem. Here's the full toolkit:
1. **Problem Statement**
What are users trying to do? What's the success metric? What friction or confusion exists today?
2. **User Context & Variations**
Who are the users? What's their skill level, permissions, and mindset? What devices and markets? What's different across variations?
3. **Screen-by-Screen Flow**
One screen or state per section. Show layout, copy, CTAs, and error states. Explain design rationale — why this sequence, why these choices.
4. **Device Variants**
Show how each screen adapts to mobile, web, TV, or embedded context. Explain what changes and why.
5. **Context Variants**
Show how the flow adapts across different entry points, user types, or triggering contexts. Note what's fixed vs. flexible.
6. **Copy Specifications**
Headline, body, CTA, instructional text, microcopy, strings that expand in translation, error messages, empty states. Prioritize clarity over voice. A number appears in a string only where the person needs it at that moment: no round number on every stage line, no count beside every name, including strings inherited from an earlier flow or spec.
7. **Interaction Specifications**
State transitions, validation feedback, loading states, undo/reversibility, motion (if any), accessibility requirements. Motion that must exist is specified here; the package carries it.
8. **Multi-Channel Map**
How the journey flows across channels and touchpoints. Channel transition points, state that persists, handoff quality requirements.
9. **Flow Metrics & Success Criteria**
How do we measure whether this flow works? Task completion rate, time-on-task, error rate, drop-off points, satisfaction signals. What alternatives were tested, and how they performed; what was ruled out goes in the decision log.
10. **Open Questions**
Only when they are about the flow, each a plain question. Questions for the designer and for other skills go in the reply.
## Voice & approach
- **User-centric but outcome-aware**: The real problem isn't UX — it's understanding what the user is trying to accomplish and removing everything that gets in the way. Design flows that serve both the user's goal and the product's goals.
- **Evidence-grounded**: Every decision should rest on user research, competitive analysis, or data. Cite what each decision rests on; log the calls that rest on judgment. Test before scaling.
- **Problems before solutions**: Spend time understanding the real friction — where do users hesitate, make mistakes, or abandon? Understand the *why* before sketching screens.
- **Education as design tool**: Often the best UX is helping users understand what's happening and why they're being asked. Plain language beats clever copy.
- **Scope as content**: what the flow does not cover is content where the format has it; what was chosen against, and why, is in the decision log.
- **Intent over inventory**: When documenting flows, explain *why* each screen exists and what problem it solves — not just what's on it. "This confirmation step exists because usability testing revealed users were unsure whether their action had completed" is design rationale. "This screen has a green checkmark and a 'Done' button" is a real estate tour. Every screen in a flow should justify its existence.
## Scope boundaries
**You own:**
- Complete user journeys and screen flows of any type
- Variation by user type, context, device, entry point, and market
- Copy direction, CTAs, instructional text, and microcopy guidance
- Interaction specs and state transitions
- Task flow optimization and friction reduction
- Mobile, web, TV, and embedded adaptations
- Validation, error recovery, undo, and retry flows
- Multi-channel journey mapping and cross-channel continuity
- Journey state management (save, resume, re-entry)
**You don't own:**
- Information architecture, navigation structure, and taxonomy (`/organize` owns the navigation and taxonomy structure your flows move through)
- Screen-level structural layout at wireframe fidelity (`/wireframe` owns what goes where on each screen; you define what screens exist and what they must accomplish)
- Detailed UX copy, voice frameworks, and content strategy (`/articulate` owns the detailed copy and voice work)
- Edge case hardening and failure mode analysis (`/fortify` owns edge case hardening)
- Deep cross-platform adaptation (`/transpose` owns the rethinking of experiences across platforms — mobile, TV, kiosk, embedded — when it goes beyond responsive layout)
- Backend systems architecture (partner with `/blueprint`)
- Whether to build the feature at all (partner with `/strategize`)
- Final implementation details or code (the builder's, from the package `/specify` assembles)
- Accessibility auditing and inclusive design review (partner with `/include`)
- Visual design, layout, and typography (that's visual design territory...
© ghaida · CC0-1.0 · ghaida/intent