Checks whether an implementation covers a set of requirements by tracing each requirement to code, tests, or both — and flagging gaps where a requirement has no evidence of implementation. Use when auditing for compliance, when answering "is this spec implemented", or before claiming a standard is supported.
Install with Tessl CLI
npx tessl i github:santosomar/general-secure-coding-agent-skills --skill requirement-coverage-checker100
Quality
100%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Every requirement should trace to at least one of: code that implements it, or a test that verifies it. Preferably both. A requirement with neither is either unimplemented or undocumented — both are problems.
| Level | Evidence | Confidence |
|---|---|---|
| Tested | A test asserts the required behavior | High — behavior is checked |
| Implemented | Code exists that (claims to) satisfy it | Medium — no automated check |
| Documented | A comment/doc references the requirement | Low — intent, not evidence |
| Uncovered | No trace anywhere | Zero — gap |
A requirement like "The API MUST validate input and return 400 on invalid data" is two claims:
Trace each separately. The code might validate (1) but return 500 on failure (2 uncovered).
For each atomic claim, search the codebase in order:
| Search | Evidence type |
|---|---|
| Test name/docstring mentions the requirement ID | Tested (explicit trace) |
| Test asserts the specific behavior | Tested (implicit) |
| Code comment references the requirement | Documented |
| Code structure matches the requirement | Implemented |
| Nothing | Uncovered |
Use → code-search-assistant tactics: grep for requirement IDs, grep for key domain terms, structural search for the code pattern.
Not all traces are equal:
| Trace | Strength |
|---|---|
def test_req_4_2_rejects_oversized_payload(): ... assert resp.status == 413 | Strong — ID + behavior |
def test_payload_limit(): ... assert resp.status == 413 | Good — behavior matches |
# Implements REQ-4.2 above a function | Weak — claim, not check |
Function named validate_payload_size | Weak — name suggests, body might differ |
A constant MAX_PAYLOAD = 10 * 1024 * 1024 | Circumstantial |
Requirements (subset):
Search results:
| Req | Evidence found | Level |
|---|---|---|
| REQ-3.1 | auth/hash.py: bcrypt.hashpw(pw, bcrypt.gensalt(rounds=12)). test_hash.py::test_bcrypt_cost_12 asserts rounds >= 12. | Tested ✓ |
| REQ-3.2 | auth/login.py: @ratelimit(key="account", rate="5/m") decorator. No test exercises the 6th attempt. | Implemented — untested |
| REQ-3.3 | settings.py: SESSION_COOKIE_AGE = 1800. That's 30 min — but it's absolute expiry, not inactivity expiry. | PARTIAL / WRONG — implements a different requirement |
Report:
SESSION_COOKIE_AGE is time-since-creation, not time-since-last-activity. The requirement says "inactivity." Need SESSION_SAVE_EVERY_REQUEST = True or a sliding-window middleware. Flag as a compliance bug.| Trap | How to catch |
|---|---|
| Right behavior, wrong condition | Req says "on timeout"; code does it "on any error." Test the timeout case specifically. |
| Implemented but dead code | The validating function exists but is never called. Check the call graph. |
| Configured but overridable | MAX_RETRIES = 3 — but an env var overrides it to 0 in prod. |
| Test exists but is skipped | @pytest.mark.skip — it's there but not running. |
| Test asserts implementation, not requirement | Test checks bcrypt.hashpw was called; doesn't check cost ≥ 12. |
# TODO: implement REQ-4.2 traces to the requirement and means the opposite of covered.validate_input() might not validate anything. Read the body.## Requirements audited
<count> requirements, <count> atomic claims
## Coverage summary
| Level | Count | % |
| ------------ | ----- | - |
| Tested | | |
| Implemented | | |
| Documented | | |
| Uncovered | | |
| Miscovered | | |
## Per-requirement trace
| Req ID | Claim | Evidence (file:line) | Level | Notes |
| ------ | ----- | -------------------- | ----- | ----- |
## Gaps (actionable)
### Uncovered
<req → what's missing → suggested test or implementation>
### Miscovered
<req → what's there → why it doesn't satisfy the req → fix>
### Untested
<req → code exists → suggested test>47d56bb
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.