Conducts Jobs-to-be-Done analysis, UX journey design, and requirements gathering through interactive discovery. Use when starting feature analysis, defining user stories, or creating acceptance criteria.
Wave: DISCUSS (wave 2 of 6) | Agent: Luna (nw-product-owner) | Command: /nw-discuss
Execute DISCUSS wave through Luna's integrated workflow: JTBD analysis|UX journey discovery|emotional arc design|shared artifact tracking|requirements gathering|user story creation|acceptance criteria definition. Luna uncovers jobs users accomplish, maps to journeys and requirements, handles complete lifecycle from user motivations through DoR-validated stories ready for DESIGN. Establishes ATDD foundation.
For greenfield projects (no src/ code, no docs/feature/ history), Luna proposes Walking Skeleton as Feature 0.
Question: What type of feature is this? :
Question: Should we start with a walking skeleton? Options:
Question: Priority for UX research depth? Options:
Question: Include Jobs-to-be-Done analysis? Options:
Before beginning DISCUSS work, read SSOT and prior wave artifacts:
docs/product/ exists):
docs/product/journeys/{name}.yaml — existing journey to extend (if applicable)docs/product/jobs.yaml — validated jobs and opportunity scoresdocs/product/vision.md — product visiondocs/project-brief.md | docs/stakeholders.yamldocs/feature/{feature-id}/discover/ (if present)docs/feature/{feature-id}/diverge/recommendation.md and job-analysis.md (if present — job is already validated, do not re-run JTBD)Migration gate: If docs/product/ does not exist but docs/feature/ has existing features, STOP. The project has old-model features that should be migrated to SSOT before new waves run. Guide the user to docs/guides/migrating-to-ssot-model/README.md and complete the migration first. If docs/product/ does not exist and no old features exist (greenfield), DISCUSS will bootstrap it.
DISCUSS follows DISCOVER and optionally DIVERGE — reading SSOT first ensures continuity with prior features, then prior wave artifacts ground requirements in evidence.
READING ENFORCEMENT: You MUST read every file listed in Prior Wave Consultation above using the Read tool before proceeding. After reading, output a confirmation checklist (✓ {file} for each read, ⊘ {file} (not found) for missing). Do NOT skip files that exist — skipping causes requirements disconnected from evidence.
After reading, check whether any DISCUSS decisions would contradict DISCOVER evidence. Flag contradictions and resolve with user before proceeding. Example: DISCOVER found "users don't want automation" but DISCUSS story assumes "automated workflow" — this must be resolved.
When DISCUSS decisions change assumptions established in DISCOVER:
## Changed Assumptions section at the end of the affected DISCUSS artifact. Gate: section exists in artifact.@nw-product-owner
IF Decision 4 = Yes: Execute *jtbd-analysis for {feature-id}, then *journey informed by JTBD artifacts, then *story-map, then *gather-requirements with outcome KPIs. IF Decision 4 = No (default): Execute *journey for {feature-id}, then *story-map, then *gather-requirements with outcome KPIs.
Context files: see Prior Wave Consultation above + project context files.
Configuration:
At the start of execution, create these tasks using TaskCreate and follow them in order:
Grounds all subsequent artifacts in real user motivations.
| Artifact | Path |
|---|---|
| Job Stories | docs/feature/{feature-id}/discuss/jtbd-job-stories.md |
| Four Forces | docs/feature/{feature-id}/discuss/jtbd-four-forces.md |
| Opportunity Scores | docs/feature/{feature-id}/discuss/jtbd-opportunity-scores.md (when multiple jobs) |
Luna runs deep discovery (mental model|emotional arc|shared artifacts|error paths) informed by JTBD, produces visual journey + YAML schema + Gherkin scenarios. Each journey maps to one or more identified jobs.
${variable} or artifact passed between steps. Document single source of truth for each. Gate: every shared artifact has one documented source.| Artifact | Path |
|---|---|
| Visual Journey | docs/feature/{feature-id}/discuss/journey-{name}-visual.md |
| Journey Schema | docs/feature/{feature-id}/discuss/journey-{name}.yaml |
| Gherkin Scenarios | docs/feature/{feature-id}/discuss/journey-{name}.feature |
| Artifact Registry | docs/feature/{feature-id}/discuss/shared-artifacts-registry.md |
Luna loads user-story-mapping skill before this phase.
user-story-mapping skill. Gate: skill loaded.docs/feature/{feature-id}/slices/slice-NN-name.md with: goal (one sentence), IN scope, OUT scope, learning hypothesis (what this disproves if it fails, what it confirms if it succeeds), acceptance criteria, dependencies, effort estimate, reference class, pre-slice SPIKE if uncertainty is high. Each brief is ≤100 lines. Gate: brief exists for each slice listed in the story map.| Artifact | Path |
|---|---|
| Story Map | docs/feature/{feature-id}/discuss/story-map.md |
| Prioritization | docs/feature/{feature-id}/discuss/prioritization.md |
| Slice Briefs | docs/feature/{feature-id}/slices/slice-NN-*.md (one per slice) |
Luna crafts LeanUX stories informed by JTBD + journey artifacts. Every story traces to at least one job story. Validates against DoR, invokes peer review, prepares handoff.
### Elevator Pitch subsection immediately after the story narrative, with exactly these three lines:### Elevator Pitch
Before: {one sentence — what the user cannot do today}
After: run `{exact command / endpoint / UI action}` → sees `{exact observable output}`
Decision enabled: {one sentence — what the user decides with that output}
Rules:
@infrastructure and BLOCK the slice — a slice containing only @infrastructure stories cannot be releasedGate: every non-@infrastructure story has a complete Elevator Pitch. Slices with only @infrastructure stories are flagged for re-slicing.
| Artifact | Path |
|---|---|
| User Stories (includes requirements + embedded AC) | docs/feature/{feature-id}/discuss/user-stories.md |
| DoR Validation | docs/feature/{feature-id}/discuss/dor-validation.md |
| Outcome KPIs | docs/feature/{feature-id}/discuss/outcome-kpis.md |
docs/feature/{id}/slices/slice-NN-*.md, all carpaccio taste tests passed)Handoff To: nw-solution-architect (DESIGN wave) + nw-platform-architect (DEVOPS wave, KPIs only) Deliverables: User stories + story map + outcome KPIs + SSOT journey/jobs updates | JTBD artifacts (when selected)
DISCUSS hands off to BOTH DESIGN (full artifacts) and DEVOPS (outcome-kpis.md only). DEVOPS and DESIGN can proceed in parallel — DESIGN receives the complete artifact set while DEVOPS receives only the KPI file to drive observability and instrumentation design.
Before completing DISCUSS, produce docs/feature/{feature-id}/discuss/wave-decisions.md:
# DISCUSS Decisions — {feature-id}
## Key Decisions
- [D1] {decision}: {rationale} (see: {source-file})
## Requirements Summary
- Primary jobs/user needs: {1-3 sentence summary}
- Walking skeleton scope: {if applicable}
- Feature type: {user-facing|backend|infrastructure|cross-cutting}
## Constraints Established
- {constraint from requirements analysis}
## Upstream Changes
- {any DISCOVER assumptions changed, with rationale}
This summary enables DESIGN to quickly assess DISCUSS outcomes. DESIGN reads this plus key artifacts (user-stories.md, story-map.md, outcome-kpis.md) rather than all DISCUSS files.
docs/feature/{feature-id}/discuss/ (feature delta)
user-stories.md (requirements + embedded AC, each story traces to a job)
story-map.md
dor-validation.md
outcome-kpis.md
wave-decisions.md
docs/product/ (SSOT updates)
journeys/{name}.yaml (create or extend journey schema)
journeys/{name}-visual.md (human-readable journey narrative)
jobs.yaml (add validated job if new)
/nw-discuss first-time-setup
Orchestrator asks Decision 1-3. User selects "User-facing", "No skeleton", "Comprehensive". Luna starts with JTBD analysis: discovers jobs like "When I first open the app, I want to feel productive immediately, so I can justify the purchase." Maps four forces for each job. Scores opportunities. Then runs journey discovery informed by JTBD, produces visual journey + YAML + Gherkin. Finally crafts stories where each traces to a job, validates DoR, and prepares handoff.
/nw-discuss --phase=jtbd onboarding-flow
Runs only Luna's JTBD analysis phase (job discovery + dimensions + four forces + opportunity scoring). Produces JTBD artifacts without proceeding to journey design or requirements. Useful for early discovery when you need to understand user motivations before committing to UX design.
/nw-discuss --phase=journey release-nwave
Runs only Luna's journey design phases (discovery + visualization + coherence validation). Produces journey artifacts without proceeding to requirements crafting. Useful when JTBD is already done and journey design needs standalone iteration.
/nw-discuss --phase=requirements new-plugin-system
Runs only Luna's requirements phases (gathering + crafting + DoR validation). Assumes JTBD and journey artifacts already exist or are not needed (e.g., backend feature).