Use when mapping user journeys, analyzing touchpoints, or understanding the user experience end-to-end. Also triggers on 'user journey', 'journey map', 'user flows', 'what is the user experience', 'touchpoint analysis', or 'pain points'.
From pmnpx claudepluginhub etusdigital/etus-plugins --plugin pmThis skill uses the workspace's default tool permissions.
knowledge/template.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
Reference: .claude/skills/orchestrator/dependency-graph.yaml
BLOCKS (must exist — auto-invoke if missing):
docs/ets/projects/{project-slug}/discovery/product-vision.md — Needed for personas, BO-#, and value proposition.ENRICHES (improves output — warn if missing):
docs/ets/projects/{project-slug}/planning/user-stories.md — User flows and acceptance criteria improve journey accuracy.Resolution protocol:
dependency-graph.yaml → user-journey.requires: [product-vision]product-vision.md exist, non-empty, not DRAFT?product-vision skill → wait → continueMANDATORY: This skill MUST write its artifact to disk before declaring complete.
mkdir -p if neededIf the Write fails: Report the error to the user. Do NOT proceed to the next skill.
This skill follows the ETUS interaction standard. Your role is a thinking partner, not an interviewer — suggest alternatives, challenge assumptions, and explore what-ifs instead of only extracting information.
One question per message — Never batch multiple questions. Ask one, wait for the answer, then ask the next. Use the AskUserQuestion tool when available for structured choices.
3-4 suggestions for choices — When the user needs to choose a direction, present 3-4 concrete options with a brief description of each. Highlight your recommendation.
Propose approaches before generating — Before generating any content section, propose 2-3 approaches with tradeoffs and a recommendation.
Present output section-by-section — Don't generate the full document at once. Present each major section, ask "Does this capture it well? Anything to adjust?" and only proceed after approval.
Track outstanding questions — If something can't be answered now, classify it:
Multiple handoff options — At completion, present 3-4 next steps as options.
Resume existing work — Before starting, check if the target artifact already exists at the expected path. If it does, ask the user: "I found an existing user-journey.md at [path]. Should I continue from where it left off, or start fresh?" If resuming, read the document, summarize the current state, and continue from outstanding gaps.
This skill reads and writes persistent memory to maintain context across sessions.
On start (before any interaction):
docs/ets/.memory/project-state.md — know where the project isdocs/ets/.memory/decisions.md — don't re-question closed decisionsdocs/ets/.memory/preferences.md — apply user/team preferences silentlydocs/ets/.memory/patterns.md — apply discovered patternsOn finish (after saving artifact, before CLOSING SUMMARY):
project-state.md is updated automatically by the PostToolUse hook — do NOT edit it manually.python3 .claude/hooks/memory-write.py decision "<decision>" "<rationale>" "<this-skill-name>" "<phase>" "<tag1,tag2>"python3 .claude/hooks/memory-write.py preference "<preference>" "<this-skill-name>" "<category>"python3 .claude/hooks/memory-write.py pattern "<pattern>" "<this-skill-name>" "<applies_to>"The .memory/*.md files are read-only views generated automatically from memory.db. Never edit them directly.
Use full version when:
Use short version when:
Generate a comprehensive user-journey.md that documents how each persona interacts with the product across all lifecycle stages: Awareness → Consideration → Adoption → Goal Completion → Advocacy. This document provides emotional intelligence, identifies friction points, and surfaces opportunities for improvement.
The journey map is the first UX document in the design phase, feeding directly into the ux-sitemap. It ensures that all subsequent UX decisions (information architecture, wireframes, interaction design) are grounded in real user needs and emotional contexts.
[upstream-path] provided, load that documentdocs/ets/projects/{project-slug}/planning/user-stories.md (personas, pain points)docs/ets/projects/{project-slug}/discovery/product-vision.md (vision, users)Load the following sections from upstream:
Document structure:
This is the first UX document generated in the design phase. All subsequent UX work validates and operationalizes this journey.
Every journey in this document receives a unique ID: JOUR-01, JOUR-02, etc. This enables traceability between journeys and features.
Each JOUR-# entry should contain all of the following fields (this ensures downstream skills have the context they need):
### JOUR-[NN]: [Journey Name]
**Category:** [Onboarding | Core Task | Recovery | Admin | Edge Case]
**Persona:** [Persona name from product-vision.md]
**Preconditions:** [State that must be true BEFORE the journey starts]
**Postconditions:** [State expected AFTER completing the journey]
#### Steps
| # | Intent | User Interaction | Features (PRD-F-#) | Expected Response | Emotion |
|---|--------|-----------------|---------------------|-------------------|---------|
| 1 | [goal of this step] | [how user interacts with UI] | [PRD-F-1, PRD-F-3] | [what system does] | [positive/neutral/negative] |
| 2 | ... | ... | ... | ... | ... |
#### Edge Cases
- **[Scenario]:** [What could go wrong] → **Recovery:** [How user/system recovers]
- **[Scenario]:** ... → **Recovery:** ...
#### Success Metrics
- [Metric]: [Target] (e.g., "Task completion: <2 minutes")
Features column, creating bidirectional traceability (feature → journey, journey → feature)ux-sitemap uses JOUR-# steps to identify required screens. wireframes uses JOUR-# for interaction flows. quality-checklist uses JOUR-# edge cases as test scenarios.Before finalizing, ask yourself:
User journey maps (JOUR-#), persona journey contexts, touchpoint inventory, and journey edge cases are ONLY defined here. Do not duplicate in wireframes.md or style-guide.md. Emotional states, pain points, and journey preconditions/postconditions remain the authoritative reference for all UX work.
JOUR-# is the SST for:
Refer to docs/ets/projects/{project-slug}/ux/template-user-journey.md for:
Execution instruction: Load context, extract personas, map journey stages with touchpoints, document emotions and pain points, generate opportunities, and output user-journey.md to docs/ets/projects/{project-slug}/ux/.
product-vision.md (BLOCKS):
user-stories.md (ENRICHES):
Before marking this document as COMPLETE:
If any check fails → mark document as DRAFT with <!-- STATUS: DRAFT --> at top.
After saving and validating, display:
✅ user-journey.md saved to `docs/ets/projects/{project-slug}/ux/user-journey.md`
Status: [COMPLETE | DRAFT]
IDs generated: [list JOUR-# IDs, e.g., JOUR-01, JOUR-02, JOUR-03]
→ Next step: ux-sitemap — Define hierarchical page/screen structure from journey touchpoints
Run: /design or let the orchestrator continue
Do NOT proceed to the next skill without displaying this summary first.
product-vision.md (BLOCKS), user-stories.md (ENRICHES)ux-sitemap (BLOCKS) and wireframes (indirect)docs/ets/projects/{project-slug}/ux/ — create if missingdocs/ets/projects/{project-slug}/ux/user-journey.md using the Write tooldocs/ets/projects/{project-slug}/ux/user-journey.md) + paths to upstream documents (BLOCKS: docs/ets/projects/{project-slug}/discovery/product-vision.md)"Document saved to
docs/ets/projects/{project-slug}/ux/user-journey.md. The spec reviewer approved it. Please review and let me know if you want any changes before we proceed." Wait for the user's response. If they request changes, make them and re-run the spec review. Only proceed to validation after user approval.
When invoked with a specific feature argument (e.g., /user-journey checkout or "map the checkout feature journey"), switch to feature-centric mode instead of persona-centric:
## JOUR-[NN]: Feature Journey — [Feature Name] (PRD-F-[NN])
**Category:** Feature Deep-Dive
**Personas Involved:**
- [Persona A] — Goal: X, Pain point: Y
- [Persona B] — Goal: Z, Pain point: W
**Preconditions:** [State required before feature is accessible]
**Postconditions:** [State after successful feature completion]
### Primary Flow
| # | Intent | User Interaction | Features (PRD-F-#) | Expected Response | Persona | Emotion |
|---|--------|-----------------|---------------------|-------------------|---------|---------|
| 1 | [goal] | [how user interacts] | PRD-F-[NN] | [system response] | [who] | [state] |
### Error Flows
| Error Scenario | User Sees | Recovery Path | Fallback | Severity |
|---------------|-----------|---------------|----------|----------|
### Edge Cases
- **[Scenario]:** [description] → **Recovery:** [path]
### Experience Validation
- [ ] All personas can complete primary flow
- [ ] Error flows have recovery paths
- [ ] Every step links to PRD-F-#
- [ ] Emotional arc trends toward satisfaction
- [ ] Accessibility touchpoints verified
| Error | Severity | Recovery | Fallback |
|---|---|---|---|
| BLOCKS dep missing (product-vision.md) | Critical | Auto-invoke product-vision skill | Block execution |
| No personas found in product-vision | High | Ask user to define at least 2 personas | Proceed with generic "User A/B" |
| Output validation fails | High | Mark as DRAFT | Proceed with DRAFT status |
| Feature journey requested but no feature specified | Low | Ask user which feature | Default to persona mode |