Use when a spec and a test suite both exist but nobody can say which requirements are covered, before a release sign-off, an audit or planning test effort. Uses an LLM to map existing tests to spec sections, outputs a coverage matrix per spec ID and names the gaps. It does not write new tests.
84%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Deep reference for the ai-spec-coverage-mapper SKILL.md. Consult when
scheduling the mapper on a cadence, or when hardening the report against
LLM-hallucinated coverage claims.
A single mapping goes stale the moment ACs or tests change. Schedule it weekly and open an issue with the report:
on:
schedule:
- cron: '0 4 * * MON'
jobs:
spec-coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- run: python scripts/ai-coverage.py
- uses: peter-evans/create-issue-from-file@v5
with:
title: 'Spec coverage report - week of ${{ github.event.repository.updated_at }}'
content-filepath: spec-coverage-report.mdFilter to the ACs and tests changed since the last run to keep cost and runtime down - re-mapping the whole codebase every week is slow and expensive for no new signal.
LLMs may claim a test "covers" an AC when it doesn't. Before trusting a
full row:
gherkin-from-stories's ATDD mode (in the qa-bdd
plugin) if the team uses @AC-X.Y tags - those tags are the ground
truth the LLM's semantic guess can be checked against.The mapper reads code; it does not run it. A test that imports cleanly but throws at runtime can still be classified "covered," so a green matrix is a prompt to verify, not a sign-off on its own.