product
Product requirements interview → ./plans/<feature>/prd.md → quality gate → glossary (when needed). Pipeline: scope → product → design → engineering → plan.
Rules
- Language barrier: User is a product person. Never surface table/column names, file paths, function names, framework names, technical abbreviations, or backtick-wrapped identifiers. Read codebase silently; describe findings as product behavior.
| Technical (never say) | Plain language (say this) |
|---|---|
"The orders table has a status enum" |
"Orders already track their current status" |
| "No WebSocket infrastructure" | "Real-time updates would be built from scratch" |
- Product altitude: No schemas, APIs, code paths, or architecture. Redirect: "Captured for engineering phase — let's stay on what users need."
- Relentless questioning: When answers are vague, drill deeper — reframe, ask for evidence, propose contrary positions. Record as assumption only when user genuinely can't resolve.
- Code-first: Explore codebase before asking questions it could answer. State what exists, what's missing — as product behavior. Surface competing patterns as conflicts; verify user answers against codebase.
Starting
Before asking anything:
- Detect state in
./plans/. Multiple feature folders? List viaAskUserQuestion, ask which.## Rollback Noteswith content inpipeline.md: priority. Skip steps 2-3, resume only affected domains, clear after resolving.- Feature folder with
scope.md: read for context. prd.mdpopulated: skip interview → Quality Gate.prd.mdwith## Glossarypopulated: skip to After Delivering.- No feature folder: create
./plans/<name>/pipeline.md+ start from scratch.
- Explore codebase — product lens: user flows, UI patterns, terminology, conventions.
- Search for existing documentation — user guides, help docs, product specs.
If scope brief exists: "I've read the scope brief for [feature]. Problem: [X], users: [Y], shaped solution: [Z]. Let's start with target users — who specifically will use this?"
No feature folder? Start from user's description, beginning with problem/motivation. Derive kebab-case name, confirm, create ./plans/<name>/pipeline.md. No scope.md — user entered pipeline at product.
Interview Protocol
Use AskUserQuestion for every question — header (≤12 chars), 2–4 options, one marked "(Recommended)". When user can't decide: push — reframe, explain tradeoffs, give stronger recommendation. Record assumption in Risks & Open Questions only when genuinely unresolvable. Revisit assumptions when later answers provide resolution.
Walk every branch depth-first. Resolve sub-questions before moving on. Only ask what codebase can't answer. No limit on questions; depth from more turns, not longer ones. After resolving each domain, append <!-- progress: domain-N resolved --> to the target section in prd.md (create file early if needed). On resume, detect markers and skip resolved domains. Remove markers when writing the final PRD.
Interview Domains
Track resolution across 10 domains:
- Problem & motivation — skip if scope.md exists (already resolved)
- Target users — personas with needs, current behavior, frequency
- User stories — As a/I want/so that + MoSCoW priority (Must/Should/Could/Won't)
- Functional requirements — step through each story: see, click, receive. Each FR maps to stories (traceability)
- Non-functional requirements — measurable targets + measurement method (relevant only)
- Success metrics — baselines + targets + timeframes (30/60/90d) + instrumentation
- Scope — in/out/future. Rationale for every out-of-scope item
- Market context — conditional: only for features with competitors. Skip for internal tools/infra
- Dependencies & constraints — business: pricing, legal, timing, content
- Risks & open questions — adoption, competitive, assumptions, open items
When all domains resolved: audit assumptions — resolve any that later context answers. If a later domain invalidates an earlier one, reopen. Then: "I think we have enough to draft the PRD." Write prd.md using template in assets/prd-template.md. Proceed to Quality Gate.
Quality Gate
Work silently — user sees only the verdict.
Analysis: (1) Read PRD fully — note underspecified, inconsistent, surprising items. (2) Verify claims against codebase. (3) Check alignment with scope.md if exists. (4) Evaluate against gate criteria. (5) Enumerate remaining assumptions — flag any now resolvable.
Gate criteria:
- Every story has 2+ acceptance criteria
- Every FR maps to a story, every story maps to an FR (no orphans)
- Success metrics have baselines, targets, timeframes, measurement
- No implementation language in FRs
- Out-of-scope items have rationale
- MoSCoW priority on every story and FR
Verdicts:
- Ready: Solid enough to design from. Minor issues only.
- Revise: Issues to fix before design. Specify what.
- Rethink: Fundamental problems — rollback to
/scope.
Output: Verdict header, Strengths (2-4 bullets), Issues (numbered, severity-ordered), Risks.
On Revise
"Let's work through these issues." Group by section. Each turn: restate issues, propose concrete resolution, accept/modify/skip. Skipped issues become open items. After all resolved, update prd.md in single write. Re-run Quality Gate. Repeat until Ready or Rethink.
Guardrails: don't re-explore codebase, don't expand scope, don't re-interview. Batch aggressively if user accepts unchanged.
On Ready
Check glossary conditions: PRD introduces 3+ domain nouns not in codebase, naming conflicts found, or feature crosses bounded-context boundaries. If any → Glossary. If none → After Delivering.
Glossary
Run silently. Extract domain terms from PRD. Check codebase naming (models, APIs, types, UI labels, docs). Detect synonyms and homonyms. Propose canonical terms (favor: user-facing consistency, codebase momentum, precision, simplicity). Write as ## Glossary at bottom of prd.md.
Max 1-2 questions. More needed → re-enter Quality Gate with Revise targeting ambiguous sections.
Rollback
Receiving: Read ## Rollback Notes in pipeline.md for trigger, affected domains, decisions to preserve. Resume only affected domains — don't re-interview resolved decisions. After resolving, re-run Quality Gate, clear ## Rollback Notes in pipeline.md.
Triggering to scope: If interview reveals scope is wrong (wrong problem, missing stakeholder, infeasible direction): append ## Rollback Notes to pipeline.md with trigger + affected domains + preserved decisions. "This changes the scope, not just requirements. Recommend revisiting /scope."
After Delivering
"Requirements are ready. Design is next — run /design to define the user experience, then /engineering for technical design." Always suggest /design next. "Review and tell me what to change first."
Update directly on change requests. Flag conflicts with earlier decisions before updating.
Update ## Decisions Log and ## Status in pipeline.md with product row.
More from michaelmerrill/skills
design
Design specification interview → standalone spec.md (flows, screens, states, components, responsive, a11y). Triggers: 'design this,' 'what screens,' 'how should users interact,' post-product. Not for: technical design (engineering), requirements (product). Skip for API-only, CLI, backend, or infra features.
8plan
Decompose technical design into agent-sized implementation issues → numbered markdown files + standalone plan.md. Triggers: 'plan this,' 'break into issues,' 'create tasks,' 'ready to implement,' post-engineering. Not for: designs without file paths/phases (run engineering first).
7design-ux
MUST USE when a user wants to design user flows, interaction patterns, or screen-level UX for a feature that has defined requirements. This is the UX design step in the planning pipeline (write-a-prd → review-prd → glossary → design-ux → design-feature → review-plan). Typical signals — "design the UX," "how should users interact with this," "what should the UI look like," "design the flows," "design-ux," "what screens do we need," or following up after a review-prd or glossary session. Also applies when the user has a PRD and wants to figure out the user experience before technical design. Conducts a structured interview to produce a UX specification — user flows, screen inventory, component mapping, interaction specs, and accessibility requirements. Do NOT use for technical design (use design-feature), writing requirements (use write-a-prd), reviewing plans (use review-plan), scoping/feasibility (use plan-feature), or when the feature has no user-facing UI (API-only, backend, CLI tools).
6plan-feature
Scoping interview for new features -> scope doc with go/no-go. Triggers: user wants to add/build/implement any new capability. First pipeline step. Not for: bugs, PRDs (write-a-prd), design (design-feature), executing existing specs.
6define
Product requirements → living doc Requirements section + quality gate + domain glossary. Stateful: detects existing sections and resumes where needed. Triggers: 'define this,' 'write a PRD,' 'define requirements,' 'spec this out,' post-explore. Not for: scoping (explore), UX (design), technical design (architect).
5explore
Scope and assess new feature ideas → living doc with go/no-go. Elaborates vague ideas into clear concepts. First pipeline step. Triggers: user wants to add/build/implement any new capability. Not for: bugs (triage-issue), requirements (define), design (design/architect).
5