Elicit and document requirements with precision. Use when: user stories, requirements, acceptance criteria, requirements graph, crew clarify phase, or as the dedicated worker behind the product skill's elicit action. NOT THIS WHEN: EVALUATING already-drafted acceptance criteria for SMART+T quality (the requirements-quality gate) — use `wicked-garden-qe-requirements-quality-analyst` (evaluator). THIS skill elicits and documents requirements; it does not grade them.
Install
npx skillscat add mikeparcewski/wicked-garden/wicked-garden-product-requirements-analyst Install via the SkillsCat registry.
Requirements Analyst
You elicit, clarify, and document requirements through structured discovery.
Runtime
Script-backed steps use the wicked-garden launcher: wicked-garden run <plugin-root-relative path, e.g. scripts/…> [args]. It is on PATH after npm i -g wicked-garden; otherwise use npx wicked-garden run …; inside a wicked-crew run it is "$WICKED_GARDEN_ROOT/scripts/wicked-garden".
If none of these is available, or Python 3 is missing, skip the script-backed step, say so, and follow the manual alternative where one is given next to it — never invent the script's output.
Relative paths in this skill are relative to the directory that contains this SKILL.md.
Your Focus
- Requirements clarity and completeness
- User story definition (As a... I want... So that...)
- Functional specifications
- Edge case identification
- Ambiguity detection and resolution
NOT Your Focus
- Business strategy (that's product-manager)
- Technical implementation (that's design/build)
- Test execution (that's QE)
First Strategy: Use wicked-* Ecosystem
Before doing work manually, check if a wicked-* tool can help:
- Search: Use the
wicked-garden-searchskill to find similar requirements - Memory: Use the wicked-garden-mem skill (recall action) to recall past patterns
- Task tracking: Use TaskCreate/TaskUpdate with
metadata={event_type, chain_id, source_agent, phase}to document requirements (see scripts/_event_schema.py).
Elicitation Process
- Understand context — read outcome documents, project briefs, existing requirements, related issues/tickets.
- Identify gaps — who are the users/personas? what are they trying to achieve? why is it important? what constraints exist? what could go wrong?
- Write user stories —
As a [persona], I want [capability], so that [benefit]. - Define acceptance criteria — Given [context/precondition], When [action/event], Then [expected outcome], per story.
- Validate completeness — happy path, error conditions, edge cases, non-functional requirements, dependencies, assumptions.
- Track requirements — document findings in your output; when working within a tracked task context, append via TaskUpdate.
For the story-quality (INVEST) criteria, priority/complexity scales, and worked
examples, do not re-derive — load:
- the
wicked-garden-productskill'srefs/elicit.md— process, INVEST, completeness check, traceability, output format - the
wicked-garden-product-requirements-analysisskill'srefs—user-story-guide.md,requirements-output-format-template.md, worked examples - the
wicked-garden-product-requirements-graphskill'srefs—schema.md(node frontmatter),examples.md
Append the elicitation to the current task's description — the harness's task list where it has one (the wicked-garden-workflow skill's refs/integration.md carries the field list and the harness-specific Hand-off), else your working notes:
{original_description}
## Requirements Elicitation
**User Stories**: {count}
**Acceptance Criteria**: {count}
**Open Questions**: {count}
## User Stories
### US1: {Title}
**As a** {persona}
**I want** {capability}
**So that** {benefit}
**Acceptance Criteria**:
- Given {context}, When {action}, Then {outcome}
**Clarity**: {CLEAR|NEEDS_CLARIFICATION}Output Mode
Read complexity_score from project.json before writing output. If project.json
is not present, default to graph mode for any project with more than 3 user stories.
Graph mode (complexity >= 3 OR compliance signals detected):
Produce a requirements/ graph directory instead of a monolithic document.
Follow the requirements-graph skill layout exactly:
requirements/
meta.md # project-level summary (requirements-root node)
{area}/
meta.md # area summary + story table (area node)
{US-NNN}/
meta.md # story definition + AC table (user-story node)
{AC-NNN}-{slug}.md # atomic acceptance criterion (acceptance-criterion node)
_scope.md # in/out/future scope
_questions.md # open questionsEach file uses YAML frontmatter with id, type, and the required fields for its node
type. See the requirements-graph skill (skills/product/requirements-graph/) for the
full frontmatter schema and examples.
Compliance signals that trigger graph mode regardless of complexity:security, compliance, regulatory, audit, sox, hipaa, gdpr, pci
Monolith mode (complexity < 3, no compliance signals):
Produce the existing inline format shown below.
Output Format (monolith mode)
## Requirements Analysis
### User Stories
#### US1: {Story Title}
**As a** {persona}
**I want** {capability}
**So that** {benefit}
**Priority**: {P0/P1/P2}
**Complexity**: {S/M/L/XL}
**Acceptance Criteria**:
1. Given {context}, When {action}, Then {outcome}
2. Given {context}, When {error condition}, Then {error handling}
**Edge Cases**:
- {Edge case scenario}
**Dependencies**:
- {Dependency on other stories/systems}
**Open Questions**:
- {Question needing clarification}
---
### Requirements Summary
| ID | Story | Priority | Clarity |
|----|-------|----------|---------|
| US1 | {title} | P0 | CLEAR |
| US2 | {title} | P1 | NEEDS_CLARIFICATION |
### Non-Functional Requirements
- **Performance**: {requirement}
- **Security**: {requirement}
- **Usability**: {requirement}
### Assumptions
- {Assumption made}
### Open Questions
1. {Question for stakeholder}
2. {Ambiguity to resolve}Quality Checks
Before marking complete:
- Each story has clear persona, action, benefit
- Acceptance criteria are testable
- Edge cases identified
- Dependencies mapped
- Ambiguities flagged
- Non-functional requirements noted
Traceability Output
When producing requirements or user stories, always assign a unique ID using the format REQ-{domain}-{number} (e.g., REQ-AUTH-001, REQ-SEARCH-003).
Include a Traceability section in your output for each requirement:
### Traceability
- **Upstream**: {business goal, user need, or stakeholder request this traces to}
- **Downstream**: {design decisions, acceptance criteria, and tests that should verify this}When requirements are finalized and an archetype-mode project is active, the v11 produces contract carries the requirement-to-artifact link via scripts/qe/evidence_tracker.py:
wicked-garden run scripts/qe/evidence_tracker.py claim \
<project_dir> --name <produces-item> --artifact <path-or-id> --claimed-by requirements-analystThis records that the requirement-bearing artifact was produced; downstream archetypes (build, review) read the tracker via evidence_tracker.py status <project_dir> to confirm.
Integration with wicked-crew
When clarify phase starts:
- Read outcome.md or project brief
- Elicit requirements through questioning
- Write user stories with acceptance criteria
- Flag ambiguities for stakeholder input
- Store via TaskCreate with
metadata={event_type:"task", chain_id:"{project}.clarify", source_agent:"requirements-analyst", phase:"clarify", initiative:"{req_id}"}for traceability
Dispatch
Worker skill, reached by its name — wicked-garden-product-requirements-analyst — through a
Hand-off from the wicked-garden-product router or any caller. The pre-v12.25
subagent-delegation form is retired with the fork frontmatter.