Spec-Driven Requirements Writer Skill
Write a requirements.md document using concise, testable, EARS-syntax requirements.
Your job is to produce a clean requirements artifact that:
- defines the user/business need clearly
- avoids design and implementation details
- gives downstream design and task generation enough structure to work reliably
- preserves traceability through stable requirement IDs
Default path: analyze the request, extract actors and constraints, write concise EARS requirements, validate them, save requirements.md, and return a short review-ready summary.
Read references/requirements-patterns.md when you need example EARS phrasing, stronger observable verbs, or recovery examples for invalid requirement wording.
Process
If long-running-work-planning is available, load it at the start of this phase before drafting requirements. Use it to chunk reasoning, keep progress visible, and avoid holding all analysis until the end.
- Read Project Guidelines (if they exist):
- Use
Glob to find AGENTS.md, STYLEGUIDE.md, ARCHITECTURE.md
- Use
Read to understand existing patterns, naming conventions, and architecture
- Use
Grep to search for keywords or patterns relevant to the feature
- Retrieve Contextual Memory: Invoke the
contextual-stewardship skill to retrieve business rules.
- Analyze user description and any issue context
- Extract actors, actions, and constraints
- Write requirements using valid EARS syntax
- Define glossary terms if domain-specific terminology is needed
- Validate: Call
mcp:verify_requirements_file to ensure compliance
- Write Before Review: Save to
specs/changes/<slug>/requirements.md before asking for approval
Per-Phase Todo List
When this skill begins execution, create a todo list containing the following items in pending state. This list is scoped to this phase only — do not carry over items from any previous phase.
- Read project guidelines
- Retrieve contextual memory (business)
- Analyze user description and context
- Extract actors, actions, and constraints
- Write EARS requirements
- Validate requirements
- Quality grade requirements
- Save requirements.md
Progress Rules
- Mark an item
in_progress when starting that work step.
- Mark an item
completed only after the work step has been verified.
- Do not mark an item
completed until verification passes.
- Create a fresh list when this phase begins; do not append to a prior phase's list.
Output File
specs/changes/<slug>/requirements.md
Required Document Structure
# Requirements
## Overview
<1-3 short paragraphs describing the problem, user value, and scope>
## Glossary
| Term | Definition |
|------|------------|
| <Term> | <Clear, unambiguous definition> |
## Assumptions
- <assumption 1>
- <assumption 2>
## Requirements
### REQ-1: <short requirement title>
**User Story:** As a <role>, I want <capability>, so that <benefit>.
#### Acceptance Criteria
1.1 WHEN <trigger>, THEN the <system name> SHALL <response>.
1.2 IF <undesired condition>, THEN the <system name> SHALL <response>.
### REQ-2: <short requirement title>
**User Story:** As a <role>, I want <capability>, so that <benefit>.
#### Acceptance Criteria
2.1 THE <system name> SHALL <response>.
2.2 WHILE <precondition>, the <system name> SHALL <response>.
EARS Syntax (Canonical)
EARS requirements follow a strict clause order and must include a named system subject.
Generic Form
WHILE <optional precondition>, WHEN <optional trigger>, the <system name> SHALL <system response>.
Allowed Patterns
| Pattern |
Syntax |
Use When |
| Ubiquitous |
THE <system name> SHALL <response>. |
Always active, no conditions |
| State-driven |
WHILE <precondition>, the <system name> SHALL <response>. |
Active during a specific state |
| Event-driven |
WHEN <trigger>, THEN the <system name> SHALL <response>. |
Triggered by an event |
| Optional feature |
WHERE <feature condition>, the <system name> SHALL <response>. |
Feature-gated behavior |
| Unwanted behavior |
IF <undesired condition>, THEN the <system name> SHALL <response>. |
Error handling, recovery |
| Complex |
WHILE <precondition>, WHEN <trigger>, THEN the <system name> SHALL <response>. |
Combined conditions |
Rules
- Every acceptance criterion must use uppercase EARS keywords exactly as shown in the allowed patterns.
- Every acceptance criterion must use exactly one valid EARS pattern (or a valid complex combination).
- Every acceptance criterion must include a named system subject (e.g.,
the application, the auth service, the product catalog).
- Every acceptance criterion must include exactly one
shall.
- Every acceptance criterion must be a single sentence.
- Clauses must appear in canonical order:
WHILE → WHEN/WHERE/IF → THEN when applicable → the <system> → SHALL → <response>.
Invalid Forms (Avoid These)
Do not write:
The system should ... (use SHALL)
The system must be able to ... (weak, vague)
When X, the user can ... (not a system requirement)
If X, the system should ... (use SHALL)
When X then ... (missing system subject)
The system shall, when X, ... (non-canonical clause order)
shall support, shall handle, shall allow, shall manage (vague verbs)
Strong Verbs
Prefer observable, testable verbs:
display, show, hide
create, delete, update, store
validate, reject, accept
send, receive, notify
calculate, compute, determine
log, record, track
prevent, block, allow
require, enforce
Avoid weak verbs:
support, handle, manage
be able to, have the ability to
provide, offer (without specific behavior)
Scope Rules
Include
- user-visible behavior
- business rules
- validation and error handling expectations
- security and privacy requirements when they affect observable behavior
- accessibility requirements when they affect observable behavior
- performance requirements only if explicitly requested or clearly necessary
Exclude
- implementation steps
- code-level details
- class/module/package structure
- database schema design
- internal algorithms unless externally observable
- test plans or test cases
- task breakdowns
Output Rules
- Use
REQ-<number> identifiers in ascending order starting at REQ-1.
- Give each requirement a short, specific title.
- Every requirement must include exactly one user story in
As a <role>, I want <capability>, so that <benefit> format.
- Number acceptance criteria as
<requirement-number>.<criterion-number> (e.g., 1.1, 1.2, 2.1).
- Each acceptance criterion must be testable and use valid EARS syntax.
- Keep requirements implementation-agnostic.
- Resolve all placeholders before returning output.
- Do not include editorial comments, HTML comments, TODO markers, or drafting notes.
- Include
## Glossary only if domain-specific terms need definition.
- Include
## Assumptions only if assumptions materially affect scope or interpretation.
Clarification Policy
Ask a clarifying question only if the ambiguity would materially change one or more of:
- scope
- user roles
- required behavior
- success criteria
- compliance/security posture
When to Ask
- No clear user role or stakeholder
- No discernible goal or outcome
- Conflicting or contradictory requirements
- Scope is too broad to fit one requirements document
When NOT to Ask
- The request contains enough context to write meaningful requirements
- Reasonable assumptions can be made
- The ambiguity is about implementation details (not requirements)
- The user provided examples or references
Instead: proceed with reasonable assumptions and document them in ## Assumptions.
How to Ask
- Present no more than 3 focused questions at a time
- Make each question specific and actionable
- Prefer multiple-choice when possible
- Allow the user to skip questions
Validation and Error Recovery
MCP Validation Failures
When mcp:verify_requirements_file returns errors:
- Fix missing or invalid sections
- Rewrite acceptance criteria with correct EARS syntax
- Add or correct
REQ-* numbering
- Add or correct acceptance criterion numbering
- Remove empty sections or add meaningful content
After 3 failed validation attempts:
- Present all errors in a summary
- Ask: "Should I proceed with best-effort corrections?"
- If yes: make corrections, document assumptions in
## Assumptions, proceed
- If no: request specific guidance
Corrupted Files
If requirements.md is corrupted:
- Read existing content to salvage valid portions
- Identify recoverable requirements
- Rewrite invalid sections with correct EARS syntax
- Re-validate
- Document what was recovered vs rewritten
Quality Bar (Self-Check)
Before returning the requirements, verify:
Response Behavior
If enough information is available, produce the full requirements.md content directly.
If material ambiguity blocks a good requirements document, ask a short clarification first. Do not draft low-confidence requirements.
Contextual Stewardship Integration
At the start of this phase, before analyzing requirements, invoke the contextual-stewardship skill to retrieve established business and domain rules:
Invoke: contextual-stewardship skill
Action: retrieve
Query: business
This ensures the new requirements align with existing product rules, target audience constraints, and domain logic.
Quality Grading Integration
After completing requirements and before requesting approval, invoke the quality-grading skill to assess and improve specification quality:
Invoke: quality-grading skill
Artifact: specs/changes/<slug>/requirements.md
Mode: grade-and-fix
This ensures the requirements document meets quality standards across:
- Design Quality: Logical organization, traceability, clarity of structure
- Originality: Tailored requirements vs boilerplate language
- Craft: Clear writing, consistent terminology, proper EARS syntax
- Functionality: Complete requirements, clear acceptance criteria, no gaps
The quality-grading skill will auto-fix issues scoring below 4 and provide actionable suggestions for remaining gaps.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: spec-driven-requirements-writer3description: Use this skill when the user wants to start Phase 1 of a Spec-Driven change, define behavior, or turn a feature idea into a requirements.md file. It writes EARS-format requirements, validates them, and should not be used for design, task breakdown, or implementation.4---56# Spec-Driven Requirements Writer Skill78Write a `requirements.md` document using concise, testable, EARS-syntax requirements.910Your job is to produce a clean requirements artifact that:11- defines the user/business need clearly12- avoids design and implementation details13- gives downstream design and task generation enough structure to work reliably14- preserves traceability through stable requirement IDs1516Default path: analyze the request, extract actors and constraints, write concise EARS requirements, validate them, save `requirements.md`, and return a short review-ready summary.1718Read `references/requirements-patterns.md` when you need example EARS phrasing, stronger observable verbs, or recovery examples for invalid requirement wording.1920## Process2122If `long-running-work-planning` is available, load it at the start of this phase before drafting requirements. Use it to chunk reasoning, keep progress visible, and avoid holding all analysis until the end.23241. **Read Project Guidelines** (if they exist):25 - Use `Glob` to find `AGENTS.md`, `STYLEGUIDE.md`, `ARCHITECTURE.md`26 - Use `Read` to understand existing patterns, naming conventions, and architecture27 - Use `Grep` to search for keywords or patterns relevant to the feature282. **Retrieve Contextual Memory**: Invoke the `contextual-stewardship` skill to retrieve `business` rules.293. Analyze user description and any issue context304. Extract actors, actions, and constraints315. Write requirements using valid EARS syntax326. Define glossary terms if domain-specific terminology is needed337. **Validate**: Call `mcp:verify_requirements_file` to ensure compliance348. **Write Before Review**: Save to `specs/changes/<slug>/requirements.md` before asking for approval3536## Per-Phase Todo List3738When this skill begins execution, create a todo list containing the following items in `pending` state. This list is scoped to this phase only — do not carry over items from any previous phase.39401. Read project guidelines412. Retrieve contextual memory (business)423. Analyze user description and context434. Extract actors, actions, and constraints445. Write EARS requirements456. Validate requirements467. Quality grade requirements478. Save requirements.md4849### Progress Rules5051- Mark an item `in_progress` when starting that work step.52- Mark an item `completed` only after the work step has been verified.53- Do not mark an item `completed` until verification passes.54- Create a fresh list when this phase begins; do not append to a prior phase's list.5556## Output File5758`specs/changes/<slug>/requirements.md`5960## Required Document Structure6162```markdown63# Requirements6465## Overview66<1-3 short paragraphs describing the problem, user value, and scope>6768## Glossary69| Term | Definition |70|------|------------|71| <Term> | <Clear, unambiguous definition> |7273## Assumptions74- <assumption 1>75- <assumption 2>7677## Requirements7879### REQ-1: <short requirement title>8081**User Story:** As a <role>, I want <capability>, so that <benefit>.8283#### Acceptance Criteria841.1 WHEN <trigger>, THEN the <system name> SHALL <response>.851.2 IF <undesired condition>, THEN the <system name> SHALL <response>.8687### REQ-2: <short requirement title>8889**User Story:** As a <role>, I want <capability>, so that <benefit>.9091#### Acceptance Criteria922.1 THE <system name> SHALL <response>.932.2 WHILE <precondition>, the <system name> SHALL <response>.94```9596## EARS Syntax (Canonical)9798EARS requirements follow a strict clause order and must include a named system subject.99100### Generic Form101102```103WHILE <optional precondition>, WHEN <optional trigger>, the <system name> SHALL <system response>.104```105106### Allowed Patterns107108| Pattern | Syntax | Use When |109|---------|--------|----------|110| Ubiquitous | `THE <system name> SHALL <response>.` | Always active, no conditions |111| State-driven | `WHILE <precondition>, the <system name> SHALL <response>.` | Active during a specific state |112| Event-driven | `WHEN <trigger>, THEN the <system name> SHALL <response>.` | Triggered by an event |113| Optional feature | `WHERE <feature condition>, the <system name> SHALL <response>.` | Feature-gated behavior |114| Unwanted behavior | `IF <undesired condition>, THEN the <system name> SHALL <response>.` | Error handling, recovery |115| Complex | `WHILE <precondition>, WHEN <trigger>, THEN the <system name> SHALL <response>.` | Combined conditions |116117### Rules118119- Every acceptance criterion must use uppercase EARS keywords exactly as shown in the allowed patterns.120- Every acceptance criterion must use exactly one valid EARS pattern (or a valid complex combination).121- Every acceptance criterion must include a named system subject (e.g., `the application`, `the auth service`, `the product catalog`).122- Every acceptance criterion must include exactly one `shall`.123- Every acceptance criterion must be a single sentence.124- Clauses must appear in canonical order: `WHILE` → `WHEN`/`WHERE`/`IF` → `THEN` when applicable → `the <system>` → `SHALL` → `<response>`.125126### Invalid Forms (Avoid These)127128Do not write:129130- `The system should ...` (use `SHALL`)131- `The system must be able to ...` (weak, vague)132- `When X, the user can ...` (not a system requirement)133- `If X, the system should ...` (use `SHALL`)134- `When X then ...` (missing system subject)135- `The system shall, when X, ...` (non-canonical clause order)136- `shall support`, `shall handle`, `shall allow`, `shall manage` (vague verbs)137138### Strong Verbs139140Prefer observable, testable verbs:141142- `display`, `show`, `hide`143- `create`, `delete`, `update`, `store`144- `validate`, `reject`, `accept`145- `send`, `receive`, `notify`146- `calculate`, `compute`, `determine`147- `log`, `record`, `track`148- `prevent`, `block`, `allow`149- `require`, `enforce`150151Avoid weak verbs:152153- `support`, `handle`, `manage`154- `be able to`, `have the ability to`155- `provide`, `offer` (without specific behavior)156157## Scope Rules158159### Include160161- user-visible behavior162- business rules163- validation and error handling expectations164- security and privacy requirements when they affect observable behavior165- accessibility requirements when they affect observable behavior166- performance requirements only if explicitly requested or clearly necessary167168### Exclude169170- implementation steps171- code-level details172- class/module/package structure173- database schema design174- internal algorithms unless externally observable175- test plans or test cases176- task breakdowns177178## Output Rules179180- Use `REQ-<number>` identifiers in ascending order starting at `REQ-1`.181- Give each requirement a short, specific title.182- Every requirement must include exactly one user story in `As a <role>, I want <capability>, so that <benefit>` format.183- Number acceptance criteria as `<requirement-number>.<criterion-number>` (e.g., `1.1`, `1.2`, `2.1`).184- Each acceptance criterion must be testable and use valid EARS syntax.185- Keep requirements implementation-agnostic.186- Resolve all placeholders before returning output.187- Do not include editorial comments, HTML comments, TODO markers, or drafting notes.188- Include `## Glossary` only if domain-specific terms need definition.189- Include `## Assumptions` only if assumptions materially affect scope or interpretation.190191## Clarification Policy192193Ask a clarifying question only if the ambiguity would materially change one or more of:194195- scope196- user roles197- required behavior198- success criteria199- compliance/security posture200201### When to Ask202203- No clear user role or stakeholder204- No discernible goal or outcome205- Conflicting or contradictory requirements206- Scope is too broad to fit one requirements document207208### When NOT to Ask209210- The request contains enough context to write meaningful requirements211- Reasonable assumptions can be made212- The ambiguity is about implementation details (not requirements)213- The user provided examples or references214215Instead: proceed with reasonable assumptions and document them in `## Assumptions`.216217### How to Ask218219- Present no more than 3 focused questions at a time220- Make each question specific and actionable221- Prefer multiple-choice when possible222- Allow the user to skip questions223224## Validation and Error Recovery225226### MCP Validation Failures227228When `mcp:verify_requirements_file` returns errors:2292301. Fix missing or invalid sections2312. Rewrite acceptance criteria with correct EARS syntax2323. Add or correct `REQ-*` numbering2334. Add or correct acceptance criterion numbering2345. Remove empty sections or add meaningful content235236After 3 failed validation attempts:2372381. Present all errors in a summary2392. Ask: "Should I proceed with best-effort corrections?"2403. If yes: make corrections, document assumptions in `## Assumptions`, proceed2414. If no: request specific guidance242243### Corrupted Files244245If `requirements.md` is corrupted:2462471. Read existing content to salvage valid portions2482. Identify recoverable requirements2493. Rewrite invalid sections with correct EARS syntax2504. Re-validate2515. Document what was recovered vs rewritten252253## Quality Bar (Self-Check)254255Before returning the requirements, verify:256257- [ ] Document starts with `# Requirements`258- [ ] Each requirement uses `### REQ-N: Title` format259- [ ] Each requirement has exactly one user story260- [ ] Each acceptance criterion uses valid EARS syntax261- [ ] Each acceptance criterion includes a named system subject262- [ ] Each acceptance criterion includes exactly one `shall`263- [ ] Acceptance criterion numbering matches its parent requirement264- [ ] No placeholders remain265- [ ] No design or implementation details present266- [ ] No `should`, `may`, `might`, or `can` in acceptance criteria267- [ ] No vague verbs (`support`, `handle`, `manage`, `be able to`)268269## Response Behavior270271If enough information is available, produce the full `requirements.md` content directly.272273If material ambiguity blocks a good requirements document, ask a short clarification first. Do not draft low-confidence requirements.274275## Contextual Stewardship Integration276277At the start of this phase, before analyzing requirements, invoke the `contextual-stewardship` skill to retrieve established business and domain rules:278279```text280Invoke: contextual-stewardship skill281Action: retrieve282Query: business283```284285This ensures the new requirements align with existing product rules, target audience constraints, and domain logic.286287## Quality Grading Integration288289After completing requirements and before requesting approval, invoke the `quality-grading` skill to assess and improve specification quality:290291```292Invoke: quality-grading skill293Artifact: specs/changes/<slug>/requirements.md294Mode: grade-and-fix295```296297This ensures the requirements document meets quality standards across:298- **Design Quality**: Logical organization, traceability, clarity of structure299- **Originality**: Tailored requirements vs boilerplate language300- **Craft**: Clear writing, consistent terminology, proper EARS syntax301- **Functionality**: Complete requirements, clear acceptance criteria, no gaps302303The quality-grading skill will auto-fix issues scoring below 4 and provide actionable suggestions for remaining gaps.304305---306> Converted and distributed by [TomeVault](https://tomevault.io/claim/lindoelio) — claim your Tome and manage your conversions.307<!-- tomevault:4.0:skill_md:2026-04-13 -->