skills/product-requirements-analyst/SKILL.md
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.
npx skillsauth add mikeparcewski/wicked-garden wicked-garden-product-requirements-analystInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You elicit, clarify, and document requirements through structured discovery.
Before doing work manually, check if a wicked-* tool can help:
metadata={event_type, chain_id, source_agent, phase} to document requirements (see scripts/_event_schema.py).As a [persona], I want [capability], so that [benefit].For the story-quality (INVEST) criteria, priority/complexity scales, and worked examples, do not re-derive — load:
${CLAUDE_PLUGIN_ROOT}/skills/product/refs/elicit.md — process, INVEST, completeness check, traceability, output format${CLAUDE_PLUGIN_ROOT}/skills/product/requirements-analysis/refs/ — user-story-guide.md, requirements-output-format-template.md, worked examples${CLAUDE_PLUGIN_ROOT}/skills/product/requirements-graph/refs/ — schema.md (node frontmatter), examples.mdTask-context update pattern:
TaskUpdate(
taskId="{current_task_id}",
description="{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}"
)
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 questions
Each 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.
## 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}
Before marking complete:
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:
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/qe/evidence_tracker.py" claim \
<project_dir> --name <produces-item> --artifact <path-or-id> --claimed-by requirements-analyst
This records that the requirement-bearing artifact was produced; downstream archetypes (build, review) read the tracker via evidence_tracker.py status <project_dir> to confirm.
When clarify phase starts:
metadata={event_type:"task", chain_id:"{project}.clarify", source_agent:"requirements-analyst", phase:"clarify", initiative:"{req_id}"} for traceabilityForked-context worker, reachable two ways:
wicked-garden-product-requirements-analyst.subagent_type: compat key —
Task(subagent_type="wicked-garden:product:requirements-analyst") maps to this fork skill.development
Pattern-conformance agent-half: evaluates a produced artifact or diff against a set of architectural/design pattern rules from the conformance-rule store (wicked_governance schema). Returns structured findings with rule ID, severity, and rationale — the deterministic half (mechanical rule recall) is done by the guard pipeline; this is the semantic evaluation step. Triggered by: the guard_pipeline `outgov_pattern` check (session-close), or explicitly by an engineering review when WICKED_OUTGOV_RULES_DIR is populated. NOT a replacement for the full `engineering` review skill — focuses only on conformance to stored Pattern rules; architecture and code-quality checks live in the `engineering` skill. Semantic evaluation reuses `wicked-garden-qe-semantic-reviewer` as the designated agent-half evaluator (per garden#983 spec). This skill is the orchestrating wrapper that loads applicable Pattern rules and delegates the per-rule semantic judgment to qe-semantic-reviewer.
tools
The FOUNDATIONAL domain-model capability: extract a codebase's domain — testable business rules (with confidence + provenance), entities, requirements — as a schema-conformant model on the estate graph. The workers annotate the store; wicked-core reads it and builds the requirements graph, coverage-gating fail-closed. Steers three fork workers. A shared substrate, not a modernization tool. The `modernize` archetype DERIVES from it; build / migrate / review / specify / explore consume the SAME domain model — none OWN it. Understanding a codebase's domain is upstream of almost everything else garden does. Use when: "extract the business rules / domain model from this codebase", "build a requirements graph from the code", "what does this system actually require", "reverse-engineer the domain before we build/port/migrate". Works on ANY codebase (modern or legacy) — the value is the domain model, not the porting. NOT the code transform itself (that is the archetype consuming this model). This skill produces the DOMAIN MODEL, not new code.
development
Domain-graph fork worker for the modernize archetype. Groups the estate's Louvain communities into business domains, attaches each requirement to its cluster (advisory cluster_id provenance), and invokes wicked-core's domain-graph build (which reads the annotated estate store, recomputes coverage fail-closed, and builds the requirements graph) — then validates core's output against the vendored schema. Use when: dispatched by wicked-garden-domain after rule extraction to turn a flat rule set into cluster-keyed domains; "group these into domains", "build the requirements graph", "translate clusters into a domain model". NOT for mining the rules themselves (that is domain-extractor) or threat-modeling (that is domain-coverage).
tools
Rule-extraction fork worker for the FOUNDATIONAL domain-model capability. Mines testable business rules from a codebase — each with a numeric confidence and a provenance{source, ref, source_kinds} — and annotates them into the estate store so wicked-core can build the domain-model requirements graph (coverage-gated). This is a substrate, not a modernization tool: the `modernize` archetype DERIVES from it, and build / migrate / review / specify / explore can consume the same domain model — none OWN it. Use when: dispatched by wicked-garden-domain to mine the business_rules of a codebase (or a module); "extract the domain rules", "what does this system require", building the requirements half of a domain model. NOT for grouping into domains (that is domain-modeler) or judging coverage (that is domain-coverage — a seat-distinct evaluator).