ears-acceptance-criteria — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ears-acceptance-criteria (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
One criterion, one behavior, one test.
EARS (Easy Approach to Requirements Syntax) constrains free-text requirements to a few keyword-driven templates. The result is unambiguous, reviewable, and maps 1:1 to a test case.
| Pattern | Keyword shape | Use for |
|---|---|---|
| Ubiquitous | THE SYSTEM SHALL <response>. | Always-true invariants |
| Event-driven | WHEN <trigger> THE SYSTEM SHALL <response>. | A reaction to an event |
| State-driven | WHILE <state> THE SYSTEM SHALL <response>. | Behavior during a state |
| Unwanted behavior | IF <condition> THEN THE SYSTEM SHALL <response>. | Errors, faults, abuse |
| Optional feature | WHERE <feature included> THE SYSTEM SHALL <response>. | Behavior gated on a feature/config |
Keywords combine. Compound: WHILE <state> WHEN <trigger> THE SYSTEM SHALL <response>. Keep SHALL (the obligation) in every line.
<pattern keywords> THE SYSTEM SHALL <single observable response>
[within <measurable bound>].internal ("the system processes the data correctly").
| ❌ Bad | ✅ Good (EARS) |
|---|---|
| The system should be fast. | WHEN a user submits the form THE SYSTEM SHALL return a response within 500ms. |
| Handle invalid input gracefully. | IF the email field is malformed THEN THE SYSTEM SHALL reject the submission and show a field-level error. |
| Users can log in and see their dashboard. | WHEN valid credentials are submitted THE SYSTEM SHALL authenticate the user. (then a second criterion for the dashboard) |
| The app supports offline mode. | WHERE offline mode is enabled THE SYSTEM SHALL queue writes and sync them WHEN connectivity returns. |
| Keep the session secure. | WHILE a session is idle for 15 minutes THE SYSTEM SHALL log the user out. |
Always true, no trigger? ............... Ubiquitous (THE SYSTEM SHALL …)
Reaction to a discrete event? .......... Event-driven (WHEN …)
Only while in a mode/state? ............ State-driven (WHILE …)
Error / fault / disallowed case? ....... Unwanted behavior (IF … THEN …)
Only when a feature/flag is present? ... Optional (WHERE …)Each EARS line becomes one --ac item (repeatable):
aim task create "Add login endpoint" \
--ac "WHEN valid credentials are submitted THE SYSTEM SHALL return a session token." \
--ac "IF credentials are invalid THEN THE SYSTEM SHALL respond 401 with no token." \
--ac "WHILE 5+ failures occurred in 10 min THE SYSTEM SHALL rate-limit the account."aim task edit <id> --add-ac "WHEN …".aim task edit <id> --check-ac 2.
requirements.md (see the spec-driven-development skill); the MCP create_task / create_tasks tools accept them via the ac field.
WHEN / WHILE / IF…THEN / WHERE / bare SHALL).If a criterion can't fail a test, it isn't acceptance criteria — it's a wish.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.