skills/product/requirements-graph/SKILL.md
Graph-based requirements as atomic markdown files with rich frontmatter. Filesystem-as-graph: each AC is a node, directories are groupings, meta.md files are the human interface, frontmatter traces are the edges. Use when: defining requirements as a filesystem graph of atomic ACs, eliciting user stories, or laying out acceptance criteria with traceable edges.
npx skillsauth add mikeparcewski/wicked-garden requirements-graphInstall 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.
Atomic, graph-structured requirements using the filesystem. Each acceptance
criterion is a file. Each user story is a directory. Traces live in frontmatter.
meta.md files aggregate for humans.
| Monolith (old) | Graph (new) | |----------------|-------------| | 200-260 line single file | 10-30 line atomic nodes | | Duplicates stories + functional reqs | One node per concept | | Traceability in separate store | Traces in frontmatter | | Grep for coverage | FTS5 + frontmatter queries | | All-or-nothing context load | Progressive: frontmatter, meta.md, or full |
requirements/
meta.md # Project-level summary
{area}/ # Epic/feature area (kebab-case)
meta.md # Area summary + story table
{US-NNN}/ # User story directory
meta.md # Story definition + AC table
{AC-NNN}-{slug}.md # Atomic acceptance criterion
{NFR-NNN}-{slug}.md # Non-functional requirements (area-level)
_decisions/ # ADR-style decision records
{DEC-NNN}-{slug}.md
_scope.md # In/out/future scope
_risks.md # Risk register
_questions.md # Open questions
Five node types, each a small markdown file with YAML frontmatter:
| Type | Lives at | Required fields |
|------|----------|----------------|
| acceptance-criterion | {area}/{US-NNN}/{AC-NNN}-{slug}.md | id, type, priority, category, story |
| user-story | {area}/{US-NNN}/meta.md | id, type, priority, complexity, persona, status |
| area | {area}/meta.md | id, type |
| nfr | {area}/{NFR-NNN}-{slug}.md | id, type, priority, category, target |
| decision | _decisions/{DEC-NNN}-{slug}.md | id, type, status, date |
| requirements-root | meta.md | type, project, created, status |
Minimal AC (the atomic unit):
---
id: auth/US-001/AC-001
type: acceptance-criterion
priority: P0
category: happy-path
story: auth/US-001
---
Given valid credentials
When user submits login form
Then user is redirected to dashboard and session is created
12 lines. See refs/schema.md for all fields and refs/examples.md for
complete story, area, NFR, and decision examples.
Required fields (all node types):
id — path-derived slug, canonical referencetype — acceptance-criterion, user-story, area, nfr, decision, requirements-rootRequired for ACs:
priority — P0/P1/P2category — happy-path, error, edge-case, non-functionalstory — parent story slugRequired for stories:
priority, complexity, persona, statusOptional (all types):
traces — list of {target, type} objects (graph edges)tags — keyword list for searchcompliance — regulatory refs (SOC2, HIPAA, GDPR controls)Trace types (edges):
DECOMPOSES_TO — story to ACsTRACES_TO — requirement to designIMPLEMENTED_BY — AC to source codeTESTED_BY — AC to test fileVERIFIES — test result back to ACSATISFIES — evidence to requirementDEPENDS_ON — cross-story/cross-area dependencyCreate requirements/ with root meta.md, _scope.md, _questions.md:
mkdir -p requirements
# Write root meta.md, _scope.md, _risks.md, _questions.md
For each feature area, create requirements/{area}/meta.md.
For each story, create requirements/{area}/{US-NNN}/meta.md with
the As a/I want/So that definition.
For each acceptance criterion, create individual files:
requirements/{area}/{US-NNN}/{AC-NNN}-{slug}.md
Keep AC files small: Given/When/Then + frontmatter. No essays.
Update traces: frontmatter as code and tests are written.
Traces are bidirectional by convention — if AC-001 has
IMPLEMENTED_BY: src/login.ts, the navigate skill can reverse-query.
| Crew Phase | Graph Action | |------------|-------------| | clarify | Create requirements/ structure, areas, stories, ACs | | design | Add TRACES_TO links from stories to design docs | | build | Add IMPLEMENTED_BY links from ACs to code | | test | Add TESTED_BY links from ACs to test files | | review | Navigate skill generates fresh meta.md, gate checks coverage |
development
--- name: large-scale-migration description: How to execute a LARGE MECHANICAL change across any codebase with LEVERAGE instead of an agent-grind or hand-edits — a cross-cutting migration, refactor, rename, dialect/framework/DB port, library adoption, or bulk transform. The map→transform→gate pattern: a deterministic transform driven by a source-of-truth map, proven by a differential-equivalence gate. Use when the work is "migrate all X to Y", "rename Z everywhere", "port to a new DB/dialect/fra
testing
v11 LLM-based work-shape classifier. Replaces the regex archetype detector with the model's own reasoning. Reads the user's prompt, picks the right archetype(s) from the catalog, identifies signals (blast_radius, novelty, reversibility, etc.), and persists to SessionState so subsequent turns steer correctly. Use when: the prompt_submit hook emitted a `<wg classify-due />` directive, OR explicitly invoked at session start, OR when re-classifying after the user changes scope mid-session.
tools
v11 work-shape archetype runner. When a prompt has been routed to one of the 9 archetypes (triage, explore, specify, decide, ship, review, incident, build, migrate), this skill is the entry point. It picks the right per-archetype playbook from refs/ and executes the phase shape declared in `.claude-plugin/archetypes.json`. Use when: a `<wg archetype="X">` or `<wg archetypes>` system-reminder tag appears, an explicit "let's run the X archetype" request, or when one of the per-archetype slash commands resolves to this skill.
development
Show or set the session intent variable. Intent gates how loud the framework is — simple-edit (silent), feature/research (synthesis directive), rigor (full crew context). Auto-detected on turn 1; this skill overrides explicitly. Sticky for the session. Use when: "set intent", "intent override", "/wicked-garden:intent", "make the framework quiet", "force rigor", "what's my intent".