verify — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited verify (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.
The closing gate of the SDD pipeline. Map every acceptance criterion in the spec to a green test, surface any gaps, decide whether the work is ready for review.
interview-to-spec or diagnose) was abandoned mid-way. Finish that first.Identify the spec. A path or slug for an existing spec/<slug>.md. If neither was provided, ask the user — do not guess.
Validate it. The spec must contain ## Acceptance criteria. If missing, abort and tell the user to complete the spec first.
Acceptance criteria and Edge cases (or Related risks for bug specs).tests/, __tests__/, *_test.go, *_spec.rb, etc). Read them.Blocking gaps (auto-fixed via handoff to tdd):
skip / xfail / it.skip / @pytest.mark.skip / t.Skip / equivalent.TODO, commented-out assertions, or empty body.Warnings (surface only, do not auto-fix):
.agents/tdd/test-command.txt if it exists, otherwise infer it the same way the tdd skill does). All tests must pass..agents/verify/last-verdict.txt (see Persisting the verdict).## Verify report — <slug>
### Acceptance criteria coverage
- ✅ AC1 — `tests/auth/test_token.py::test_expired_tokens_rejected`
- ✅ AC2 — `tests/auth/test_token.py::test_valid_tokens_accepted`
- ❌ AC3 — no test found
### Edge cases
- ✅ Empty input — `tests/auth/test_token.py::test_empty_token_returns_400`
- ❌ Concurrent refresh — no test
### Tests without spec mapping (warning — your call)
- ⚠️ `tests/auth/test_token.py::test_token_internal_repr` — does not map to any AC. Intentional extra coverage, or scope-creep test to delete?
### Test run
✅ 47 passed, 0 failed, 0 skipped.
### Verdict
**Not ready.** 2 items lack coverage. See gaps above.When all blocking gaps are absent and the suite is green, the verdict is Ready for review. Tests-without-mapping warnings do not affect the verdict.
Every run of verify ends by writing the one-word verdict to .agents/verify/last-verdict.txt (create the directory if missing). The file is a single line, no trailing newline:
Ready — all blocking gaps resolved and the suite is green.Not ready — at least one blocking gap remains.The Stop hook reads this file. If you forget to write it, the previous run's verdict persists; if you never write it, the hook never blocks. Always overwrite at the end of every run.
review (built-in) or proceed to PR.tdd with the gap list as the new test queue. After tdd is green, re-invoke verify. Repeat until the verdict is Ready.The Stop hook forces this iteration: while the verdict file says Not ready, the turn cannot end. Do not try to skip the loop — fix the gaps via tdd, re-verify, repeat.
Do not try to fix gaps inside verify itself — that's tdd's job. Verify only inspects, iterates, and reports.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.