sdd-prd
Skill36 starsChanged 6 months agoMITView on GitHub
Core cognitive SDD skill for creating or updating requirements.md from an approved idea, plan, or feature request. Use when the conversation calls for defining WHAT and WHY: user stories, acceptance criteria, EARS functional requirements, NFRs, and boundaries, even without an explicit command. Do not use for technical design or coding.
We split this skill into the rules it gives an agent
42 rules. About 0 are common, 16 are distinctive, and 26 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈16
Distinctive · estimate
This author's own choices. Worth a look.
26
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Create a practical requirements.md artifact for a small or medium project feature.
- Very specific: line 19
Read ../_shared/references/templates.md when drafting the artifact.
- Very specific: line 20
Use package-level templates/requirements.md as the user-facing template when available.
- Very specific: line 22
If .ai/strategy/handoff/strategy-brief.md exists, read it as optional upstream context.
- Very specific: line 26
If the user names an existing feature, resolve it from actual .ai/sdd/specs/*/ directories and artifact titles.
- Very specific: line 27
If exactly one existing feature matches, use its directory and validate its .status against the official status values from …
- Very specific: line 28
If an existing feature .status is missing or invalid, stop and ask the user to repair it before updating requirements.
- Distinctive: line 29
If multiple existing features may match, list candidates and ask the user to choose.
- Very specific: line 30
If creating a new feature, determine the next numeric prefix from the filesystem, not from memory and not from .ai/sdd/INDEX.md.
- Distinctive: line 33
Before creating a new spec directory, state the resolved path and continue only when it fits the user's intent.
- Very specific: line 34
Create .status with requirements:draft when starting a new requirements artifact.
- Very specific: line 37
Read relevant .ai/sdd/ideas/*.md if the feature came from IDEA.
- Very specific: line 38
Read .ai/sdd/PLAN.md if it exists.
- Very specific: line 39
Read existing requirements.md when updating.
- Very specific: line 40
When using the optional strategy handoff, preserve its path in the > Source: header or Business Context and translate strategic claims into …
- Distinctive: line 44
Treat clarification as part of PRD, not as a separate public workflow step.
- Distinctive: line 45
Ask one question at a time.
- Distinctive: line 47
Keep questions focused on WHAT and WHY.
- Distinctive: line 48
Avoid database, framework, API, or component-structure questions.
- Distinctive: line 49
Prefer guided choice over open-ended questions when the user may not know how to answer technically.
- Distinctive: line 56
Ask only questions whose answers materially change scope, UX, security/privacy, data behavior, acceptance criteria, or important NFRs.
- Very specific: line 60
Use the Requirements Template from ../_shared/references/templates.md.
- Distinctive: line 62
Write functional requirements using EARS where possible.
- Very specific: line 66
Use Questions to capture unresolved requirement uncertainty instead of guessing.
- Very specific: line 67
Use Decisions to record answered questions or explicit product choices.
- Distinctive: line 68
When a question is answered, update the affected requirements and link the decision back to the source question.
- Very specific: line 71
Keep both sections inside requirements.md.
- Very specific: line 72
Use Q-001, Q-002, ... for questions.
- Very specific: line 73
Use D-001, D-002, ... for decisions.
- Distinctive: line 80
Ask for explicit approval or requested changes.
- Distinctive: line 81
If changes are requested, revise and present again.
- Very specific: line 85
Keep .status as requirements:draft until explicit approval.
- Very specific: line 86
Do not mark requirements approved while critical Questions remain open.
- Very specific: line 87
After explicit approval, update the artifact status to approved and set .status to requirements:approved.
- Very specific: line 88
Update .ai/sdd/INDEX.md with the spec row and current status when practical.
- Distinctive: line 98
Every Must Have requirement must be testable.
- Very specific: line 107
Do not create design.md in this skill.
- Very specific: line 108
Do not guess or reuse feature IDs from memory.
- Very specific: line 109
Do not infer approval from artifact existence.
- Distinctive: line 110
Do not write code in this skill.
- Distinctive: line 111
Do not proceed without explicit user approval before marking requirements approved.
- Distinctive: line 113
If the user asks for a very small change, keep the artifact concise but still preserve the gate.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
SDD PRD / Requirements
Create a practical requirements.md artifact for a small or medium project feature.
Purpose
Requirements define the product contract. They explain what the feature must do, who it serves, why it matters, and how the team will know it is done. They must not prescribe implementation details.
Workflow
- Load the SDD reference.
- Read
../_shared/references/sdd-practical.md. - Apply the Language Policy: respond and write artifacts in the user's initial chat language while keeping skill instructions and templates in EN-US.
- Read
../_shared/references/templates.mdwhen drafting the artifact. - Use package-level
templates/requirements.mdas the user-facing template when available. - Load relevant
.ai/steering/*.mdfiles when present, especiallyproduct.md,tech-stack.md,conventions.md, andprinciples.md. - If
.ai/strategy/handoff/strategy-brief.mdexists, read it as optional upstream context; use it to seed product requirements, but do not require it or let it bypass requirements approval.
- Read
- Locate or create the feature spec directory.
- Use
.ai/sdd/specs/NNN-feature-name/. - If the user names an existing feature, resolve it from actual
.ai/sdd/specs/*/directories and artifact titles. - If exactly one existing feature matches, use its directory and validate its
.statusagainst the official status values fromsdd-practical.md. - If an existing feature
.statusis missing or invalid, stop and ask the user to repair it before updating requirements. - If multiple existing features may match, list candidates and ask the user to choose.
- If creating a new feature, determine the next numeric prefix from the filesystem, not from memory and not from
.ai/sdd/INDEX.md. - Numbering algorithm: list directories under
.ai/sdd/specs/, extract prefixes matching^([0-9]+)-, usemax + 1, zero-pad to at least 3 digits, and preserve wider existing prefix width if present. - Generate a safe short slug from the feature name; ask the user if a safe slug is unclear.
- Before creating a new spec directory, state the resolved path and continue only when it fits the user's intent.
- Create
.statuswithrequirements:draftwhen starting a new requirements artifact.
- Use
- Gather context.
- Read relevant
.ai/sdd/ideas/*.mdif the feature came from IDEA. - Read
.ai/sdd/PLAN.mdif it exists. - Read existing
requirements.mdwhen updating. - When using the optional strategy handoff, preserve its path in the
> Source:header or Business Context and translate strategic claims into testable requirements only after validation. - Inspect nearby project files only enough to understand product context and naming; do not design implementation yet.
- Read relevant
- Clarify scope with guided decisions.
- Treat clarification as part of PRD, not as a separate public workflow step.
- Ask one question at a time.
- Cover: target users, main flows, edge cases, acceptance criteria, non-functional needs, and out-of-scope boundaries.
- Keep questions focused on WHAT and WHY.
- Avoid database, framework, API, or component-structure questions.
- Prefer guided choice over open-ended questions when the user may not know how to answer technically.
- For each important ambiguity, provide:
- a short question;
- why the answer matters;
- a recommended option with a brief reason;
- 2-4 concrete options plus
Customwhen useful; - the practical impact of each option.
- Ask only questions whose answers materially change scope, UX, security/privacy, data behavior, acceptance criteria, or important NFRs.
- Limit each pass to 3-5 high-impact questions unless the user asks to go deeper.
- Draft requirements.
- Use the Requirements Template from
../_shared/references/templates.md. - Include user stories with acceptance criteria.
- Write functional requirements using EARS where possible.
- Classify functional requirements with MoSCoW: Must Have, Should Have, Could Have, Won't Have.
- Include non-functional requirements only when they matter: usability, performance, accessibility, security, reliability.
- Include explicit Out of Scope.
- Use
Questionsto capture unresolved requirement uncertainty instead of guessing. - Use
Decisionsto record answered questions or explicit product choices. - When a question is answered, update the affected requirements and link the decision back to the source question.
- Use the Requirements Template from
- Record Questions and Decisions.
- Keep both sections inside
requirements.md. - Use
Q-001,Q-002, ... for questions. - Use
D-001,D-002, ... for decisions. - A question may be
openoranswered. - A decision should include the decision, reason, source question when applicable, and impacted requirement IDs or sections.
- Open critical questions block approval but do not block saving a draft.
- Keep both sections inside
- Review with the user.
- Present the complete draft.
- Ask for explicit approval or requested changes.
- If changes are requested, revise and present again.
- Save draft and gate.
- Save draft requirements to
.ai/sdd/specs/NNN-feature-name/requirements.mdwith> Status: Draftwhen useful for collaboration. - Keep
.statusasrequirements:draftuntil explicit approval. - Do not mark requirements approved while critical
Questionsremain open. - After explicit approval, update the artifact status to approved and set
.statustorequirements:approved. - Update
.ai/sdd/INDEX.mdwith the spec row and current status when practical; if not updated, tell the user the index may be stale.
- Save draft requirements to
Output
.ai/sdd/specs/NNN-feature-name/requirements.md.ai/sdd/specs/NNN-feature-name/.status- Updated
.ai/sdd/INDEX.mdrow when practical
Quality Bar
- Every Must Have requirement must be testable.
- Acceptance criteria must describe observable behavior.
- Out of Scope must prevent likely scope creep.
- Requirements must not contain implementation decisions.
- Questions must help non-technical users make product decisions through clear options and impacts.
- Decisions must be reflected in the affected user stories, requirements, NFRs, or scope boundaries.
Critical Rules
- Do not create
design.mdin this skill. - Do not guess or reuse feature IDs from memory; always determine the next ID from actual directories under
.ai/sdd/specs/. - Do not infer approval from artifact existence; require valid
.statusfor existing specs. - Do not write code in this skill.
- Do not proceed without explicit user approval before marking requirements approved.
- Draft requirements may be saved, but they do not authorize design as an approved gate.
- If the user asks for a very small change, keep the artifact concise but still preserve the gate.
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- sdd-execSkill
- sdd-ideaSkill
- sdd-initSkill
- sdd-planSkill
- sdd-reviewSkill
- sdd-specSkill
- sdd-statusSkill
- sdd-steeringSkill
- sdd-tasksSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

