From SDD Engineering
The craft of turning fuzzy intent into testable requirements — the shared rubric behind a good spec. Covers EARS acceptance criteria (the vague→testable translation), INVEST user stories, acceptance-criteria smells, a completeness checklist for what's missing (failure modes, boundaries, concurrency, tenancy, untrusted input, cross-module, non-functional), and explicit-boundary discipline (Non-goals, MoSCoW, anti-gold-plating). Use WHENEVER authoring or reviewing requirements / acceptance criteria — invoked by the sdd-engineering:write-spec skill, and reusable by implementation-planner and plan-verifier for a shared definition of 'a good criterion'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdd-engineering:requirements-engineeringWhen to use
Trigger phrases: 'acceptance criteria', 'write requirements', 'EARS', 'is this criterion testable', 'user story', 'what's missing from this spec', 'definition of ready'. The authoring rubric the sdd-engineering:write-spec skill applies; a shared quality bar for planner/plan-verifier.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn fuzzy intent into **testable requirements**. This skill is the rubric a spec is graded
Turn fuzzy intent into testable requirements. This skill is the rubric a spec is graded
against — it does not place files or run Q&A (that is the write-spec skill). Apply it while
authoring or reviewing any acceptance criteria.
EARS (Easy Approach to Requirements Syntax) collapses each requirement into one testable statement with an unambiguous trigger, state, and response. Five patterns:
WHEN … SHALL): WHEN the user submits the sign-in form, the system SHALL validate the credentials against the auth provider.WHILE … SHALL): WHILE a sync is running, the system SHALL show a non-dismissable progress indicator.IF … THEN … SHALL): IF credential validation fails 3 times in 60s, THEN the system SHALL lock the account for 15 minutes.WHERE … SHALL): WHERE MFA is enabled, the system SHALL require a TOTP code after the password.The patterns are the easy part. The skill is translating a vague verb into a concrete trigger and a concrete, checkable response:
| Vague | EARS criterion |
|---|---|
| "Should work on big repos" | WHEN the repository exceeds the indexing threshold, the system SHALL generate the overview from deterministic facts only, without full file reads |
| "Shouldn't crash if the model is down" | IF the structured model call fails, THEN the system SHALL render a deterministic overview skeleton with the reason instead of an error |
| "Should hint where to start reading" | The system SHALL order the reading path by file rank from the import graph, not alphabetically or by date |
Each criterion must be atomic, testable, unambiguous, and identified (AC-N). Run each
through: could a single automated test make this fail? If not, rewrite it.
Smells to reject:
AC-a/b/c.Every AC-N carries a Verify: hint — how it is proven (unit / integration / e2e /
manual). An AC no one can verify is a wish, not a requirement.
Form: As a <role>, I want <capability>, so that <outcome>. Grade each against INVEST:
Independent · Negotiable · Valuable · Estimable · Small · Testable. A story that is not Testable
has no business acceptance criteria; a story that is not Small should be split.
Adversarially ask, for the feature in hand, whether each is specified (or explicitly N/A):
workspace_id.What the checklist surfaces becomes either an AC, an Edge case, an Assumption, or — if it
improves the design beyond the ask — a Proposed improvement.
AC-N IDs are stable anchors: the plan reuses them, tests cite them. Never
renumber an approved AC — append.sdd-engineering:write-spec skill invokes this as its authoring rubric while drafting the
spec from the project's spec template.implementation-planner and plan-verifier share this definition of a good criterion, so the
WHAT stays consistent from spec → plan → verification.Requirements bodies are written in English; EARS keywords (WHEN/WHILE/IF/WHERE/SHALL) and
identifiers are verbatim.
npx claudepluginhub rostk/my-monkeys --plugin sdd-engineeringCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.