From stdd-agents
Use when writing or updating spec.yaml files. Defines requirement format and user story structure.
npx claudepluginhub craigtkhill/stdd-agents --plugin stdd-agentsThis skill uses the workspace's default tool permissions.
This skill defines how to write specifications that follow the project's conventions.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
This skill defines how to write specifications that follow the project's conventions. CRITICAL: Stick to the Domain Specific Language in this document. Do not add your own extra keys or structure.
CRITICAL — before adding any requirements:
spec.yaml in the same feature area to avoid overlapRequirement ID uniqueness is enforced by a linter — see scripts/check-spec-ids.sh.
Specifications live close to the code following the principle of locality of behavior:
spec.yamlsrc/feature/spec.yamlEvery spec.yaml file must follow this YAML structure:
feature:
name: Brief Feature Title
user: user role
goal: goal/capability
solutions:
- Solution 1
- Solution 2
requirements:
- id: REQ-XXX-001
test: to-implement
code: to-implement
description: Specific, testable requirement
- id: REQ-XXX-002
test: to-implement
code: to-implement
description: Another specific requirement
The feature section captures the user story and possible solutions.
name: Brief title for the featureuser: The end user role (always from the user's perspective, never a system component)goal: The goal or capability (what they want)solutions: List of possible implementation approachesRationale for User Goals + Possible Solutions:
Status markers for test field:
to-implement = not yet implementedunit = implemented via unit testacceptance = implemented via acceptance testwont-implement = intentionally not testedStatus markers for code field:
to-implement = not yet implementeddone = implementedwont-implement = intentionally not implementedRequirements are a flat list — do NOT nest or group them. Grouping by category creates artificial structure that encourages duplication and makes it harder to maintain sequential numbering.
Requirement naming:
idCRITICAL - Atomic Requirements:
CRITICAL - User-Facing Requirements Only:
CRITICAL - No Implementation Details in Requirements:
solutions list, not in requirementsCRITICAL - Do Not Duplicate Existing Functionality:
Before adding a requirement, ask:
Use the acceptance-test skill for writing scenarios and acceptance tests.
Scenarios are only needed when the feature requires end-to-end testing across multiple modules. Ask the user if scenarios apply before adding them.
This spec skill is STEP 1 of the spec-test-driven development workflow:
After completing the spec: