Agent skill

Verifying Change Coverage

by jaktestowac in jaktestowac/awesome-copilot-for-testers

Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk…

MITAuto-check passedDevelopment

Install Verifying Change Coverage

skills CLI
$ npx skills add jaktestowac/awesome-copilot-for-testers --skill verifying-change-coverage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jaktestowac/awesome-copilot-for-testers verifying-change-coverage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jaktestowac/awesome-copilot-for-testers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/verifying-change-coverage .claude/skills/verifying-change-coverage && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
verifying-change-coverage
GitHub stars
116
Token cost
~2.6k tokens
SKILL.md length
1,386 words
Files
4
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk…

  • Works in 5 steps: Get the two inputs → Intersect → Classify each uncovered group → …
  • A pull request needs a coverage gate that unrelated tests cannot satisfy
  • SKILL.md covers When to Use, Operating Principles, Workflow and Wiring It Into CI, plus 4 more sections
  • Calls npx and git

What it does

Verifying Change Coverage is an agent skill from jaktestowac/awesome-copilot-for-testers. Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk changes into a blocking finding. Use when a pull request needs a coverage gate that unrelated tests cannot satisfy, when total coverage looks healthy but the diff is untested, when wiring diff coverage into CI, or when someone claims a change is covered because the suite is green.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `resources/ci-wiring.md`, `resources/coverage-artifacts.md` and `resources/exceptions-and-thresholds.md`).

It sits in Development, covering Pull requests. The repository describes itself as: 👨💻 Instructions, prompts, and chat modes to help You with test automation for GitHub Copilot 🤖. The licence is MIT.

When your agent uses it

  • A pull request needs a coverage gate that unrelated tests cannot satisfy
  • Total coverage looks healthy but the diff is untested
  • Wiring diff coverage into CI
  • Someone claims a change is covered because the suite is green

Example prompts

  • “Use the verifying-change-coverage skill to verify that the lines and branches a change actually touched are executed by tests, using LCOV or…”
  • “/verifying-change-coverage”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Get the two inputs
  2. Intersect
  3. Classify each uncovered group
  4. Set the verdict
  5. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 8910672. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Verifying Change Coverage loads about 2.6k tokens when it runs. Until then it costs about 125 tokens; SKILL.md has 1,386 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~125
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jaktestowac/awesome-copilot-for-testers at commit 8910672, republished under its MIT licence (© jaktestowac). 1,386 words, ~2,635 tokens.

Download SKILL.mdSave it as .claude/skills/verifying-change-coverage/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
verifying-change-coverage
description
Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk changes into a blocking finding. Use when a pull request needs a coverage gate that unrelated tests cannot satisfy, when total coverage looks healthy but the diff is untested, when wiring diff coverage into CI, or when someone claims a change is covered because the suite is green.
argument-hint
Base ref, the coverage artifact path (LCOV/Cobertura) or the command that produces it, and the diff or PR under review
user-invocable
true

Verifying Change Coverage

Use this skill to answer one question honestly: were the lines this change introduced actually executed by a test?

Repo-wide coverage cannot answer it. A repo at 84% can merge an untested payment path and stay at 84%, because a big denominator absorbs a small numerator. Diff coverage changes the denominator to the lines you just wrote, which is the only denominator that maps to the risk you just added.

The distinction that runs through this skill: configured is not verified. A test runner in package.json proves the practice exists. Executed lines prove this change was tested. Report which of the two you measured.

When to Use

  • a PR gate needs a coverage signal that cannot be gamed by unrelated tests
  • total coverage is stable but defects keep escaping in new code
  • diff coverage has to be wired into CI for the first time
  • a reviewer needs to know which specific new lines nothing executes
  • an agent wrote tests and someone needs to know whether they exercise the new code
  • coverage numbers are being quoted in a release decision and nobody knows what they measure

Operating Principles

  • Executed lines, not configured tools. The whole point. Say plainly which one you have.
  • No artifact, no verdict. Without a coverage report you have static linkage - "a test file exists that imports this module" - which is weaker evidence and must be labelled as such. Never present it as coverage.
  • Branches matter more than lines on changed code. New code is where new conditionals live. A line hit once with the if never taken is half-tested.
  • Uncovered is a question, not a verdict. Some uncovered lines are fine: logging, type guards, unreachable defaults. The output is a list of uncovered changed lines with a judgement per group, not a percentage with a pass stamp.
  • Coverage proves execution, never correctness. An assertion-free test covers everything and verifies nothing. Pair this with unslop-tests - a diff-coverage gate is exactly the pressure that produces coverage theatre.
  • Escalate by risk, not by count. Three uncovered lines in auth outrank thirty in a formatter.
  • The gate belongs on changed lines only. Demanding a repo-wide floor on a legacy codebase produces a permanently red gate that gets disabled within a month.

Workflow

Phase 0: Get the two inputs

The changed lines.

bash
git diff <base>...HEAD --unified=0 -- '***.ts' '***.tsx'

--unified=0 gives added-line ranges with no context, which is what you want to intersect against coverage. Keep the file → line-numbers map; discard removed lines, generated files, and anything the contract excludes.

The coverage artifact. Produce one if it does not exist:

bash
npx vitest run --coverage --coverage.reporter=lcov   # → coverage/lcov.info
npx jest --coverage --coverageReporters=lcov
npx playwright test    # + c8/istanbul instrumentation for E2E coverage

See ./resources/coverage-artifacts.md for the formats, the merge problem across suites, and the monorepo path pitfalls.

If no artifact can be produced: stop and say so. Report static linkage instead, labelled as static linkage, and state what it cannot tell you. Then make producing an artifact the first remediation item - this is the single highest-leverage change to a coverage story.

Phase 1: Intersect

For each changed source file, intersect its added-line numbers with the executed lines in the report. Produce, per file:

  • changed lines - added or modified executable lines (exclude blank lines, comments, pure type declarations, and import statements)
  • covered - changed lines the report marks as executed at least once
  • uncovered - changed lines with zero hits
  • partial branches - changed lines with branch data where at least one path was never taken

Diff coverage = covered ÷ changed executable lines, per file and overall. Compute branch coverage on changed lines separately; do not average it into the line number.

The exclusions matter and are the most common source of a wrong figure - see ./resources/coverage-artifacts.md for what counts as an executable line in TypeScript once it has been compiled or transformed.

Phase 2: Classify each uncovered group

Never hand over a raw list. Group contiguous uncovered lines and judge each group:

ClassWhat it isAction
Untested logicbranches, calculations, validation, error pathswrite the test - this is the finding
Untested integrationcode only reachable with a real dependencyintegration test, or a documented exception
Defensivedefault: on an exhaustive switch, never guards, invariant throwsacceptable; record why
Instrumentationlogging, metrics, tracing callsacceptable
Unreachabledead codedelete it rather than test it
Hard to reachneeds an exotic environment or a failure that cannot be simulatedexception with an owner and an expiry

The first two are findings. The rest are exceptions and must be recorded, not silently subtracted - see ./resources/exceptions-and-thresholds.md.

Phase 3: Set the verdict

Combine diff coverage with the risk tags from scoping-change-relevance:

ConditionVerdict
Changed lines below threshold and the file carries an escalation tag (auth, critical-path, db-migration, new-endpoint)BLOCK
Changed lines below threshold on ordinary sourceWARN
Threshold met but changed branches materially uncoveredWARN
Threshold met, uncovered lines all classified as acceptable exceptionsOK with the exceptions listed
No coverage artifact availableINFO - static linkage only, artifact required

The escalation rule is the reason this beats a flat percentage: 70% on a logging module and 70% on session handling are not the same result, and one number cannot say so.

Show full SKILL.md (551 more words)Show less
Phase 4: Report

Report per file, worst first: changed lines, diff coverage, branch coverage on changed lines, and the uncovered groups with their class and a one-line judgement. Point at exact line ranges - src/pricing.ts:142-149 - so the fix needs no hunting.

Finish with the two sentences that make the report honest:

  1. What this measured: executed lines on the diff, from <artifact>, produced by <which suites>.
  2. What it did not measure: whether the executing tests assert anything meaningful.

Wiring It Into CI

./resources/ci-wiring.md has working GitHub Actions and GitLab CI jobs, the base-ref fetch depth that trips everyone up on the first attempt, artifact merging across suites, and the sticky-PR-comment pattern.

Three rules for the gate itself:

  • Gate on changed lines, never on a repo-wide floor.
  • Fail loudly or not at all. || true on a coverage step is worse than no gate, because it reports green.
  • Ship the gate as a warning for one iteration, then turn it blocking. A gate introduced blocking on a legacy repo gets removed; one introduced as a warning gets fixed.

Common Failure Modes

  • Quoting repo coverage in a change conversation. The single most common error, and the reason untested code merges into well-covered repos.
  • Counting non-executable lines. Imports, types, and interfaces inflate the denominator and hide real gaps.
  • One suite's artifact, many suites' tests. Unit-only LCOV makes integration-covered code look uncovered. Merge, or say which suites the number represents.
  • Monorepo path mismatch. Relative paths in the report that do not match the paths in the diff produce 0% coverage and a fake emergency.
  • Chasing the number. A gate met by asserting nothing. This is the predictable failure of any coverage gate; read unslop-tests before celebrating.
  • Silent /* istanbul ignore */. An exclusion with no reason and no owner is a waiver that skipped the register.
  • Treating uncovered as automatically bad. Uncovered logging lines are fine. Reporting them as findings trains people to ignore the report.

Resource Map

  • ./resources/coverage-artifacts.md - LCOV and Cobertura formats, generating them per runner, merging across suites, what counts as an executable line, monorepo path pitfalls
  • ./resources/exceptions-and-thresholds.md - thresholds by profile, legitimate exception classes, how to record an exclusion with an owner and an expiry
  • ./resources/ci-wiring.md - GitHub Actions and GitLab CI jobs, base-ref fetching, artifact merge, sticky PR comment, warn-then-block rollout
  • scoping-change-relevance - supplies the risk tags that turn a below-threshold result into BLOCK rather than WARN
  • unslop-tests - the necessary counterweight: coverage proves execution, this proves the tests assert something
  • writing-unit-tests - when the finding is untested logic and tests have to be written
  • deriving-a-quality-contract - where the diff-coverage threshold for this project is set
  • governing-quality-waivers - when an uncovered area needs a recorded, dated exception
  • analyzing-quality-metrics - for coverage's caveats as a metric and what to report alongside it

Definition of Done

This skill is complete when:

  • the changed-line set and the coverage artifact are both identified, with the suites the artifact represents
  • diff coverage is computed on executable changed lines only, per file and overall
  • branch coverage on changed lines is reported separately from line coverage
  • every uncovered group is classified and judged, not listed raw
  • the verdict accounts for the risk tags of the files involved, not only the percentage
  • exceptions are recorded with a reason and an owner, never silently excluded
  • the report states what was measured and, explicitly, that coverage does not prove correctness

© jaktestowac, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files in skills/verifying-change-coverage of jaktestowac/awesome-copilot-for-testers.

  • SKILL.md
  • resources/ci-wiring.md
  • resources/coverage-artifacts.md
  • resources/exceptions-and-thresholds.md

Open the folder on GitHubat commit 8910672

Compare with similar skills

Verifying Change Coverage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Verifying Change Coverage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Verifying Change Coverage this skilljaktestowac/awesome-copilot-for-testers116—~2.6kAutomated safety check: PassMIT
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Check PRonyx-dot-app/onyx32k2 repos~2.3kAutomated safety check: PassMIT
Understand Diff AnalysisEgonex-AI/Understand-Anything86k1 repos~1.4kAutomated safety check: PassMIT
PR Design DocOpenHands/OpenHands90k—~2.4kAutomated safety check: PassMIT

Similar skills

  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Check PR

    onyx-dot-app/onyx

    Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.

    32k GitHub starsUsed in 2 repos~2.3k tokens
    DevelopmentAuto-check passed
  • Understand Diff Analysis

    Egonex-AI/Understand-Anything

    Reads your git changes or a pull request against a prebuilt knowledge graph of the project to explain what changed, which components are affected and what is risky.

    86k GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check passed
  • PR Design Doc

    OpenHands/OpenHands

    For a non-trivial pull request, write a self-contained HTML design doc under the temporary .pr/ directory and link a visibility-appropriate preview in the PR description, so maintainers grasp the…

    90k GitHub stars~2.4k tokensUpdated today
    DevelopmentAuto-check passed
  • WooCommerce Code Review

    woocommerce/woocommerce

    Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.

    11k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed

More from jaktestowac/awesome-copilot-for-testers

All 13 skills in this repo
  • API Playwright Test Developer

    jaktestowac/awesome-copilot-for-testers

    Writes and reviews API automation tests with Playwright Test, covering setup/teardown, assertions, data management, and hybrid API+UI flows.

    116 GitHub stars~2k tokensUpdated 1 mo ago
    Auto-check passed
  • Assessing Comprehension Debt

    jaktestowac/awesome-copilot-for-testers

    Measures the risk that code shipped without anyone understanding it: a teach-back attestation on high-risk changes, a risk band from changed-code complexity, diff size and whether a human…

    116 GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Creating Orchestration Packs

    jaktestowac/awesome-copilot-for-testers

    Creates agent orchestration packs: cooperating .agent.md files with an orchestrator, subagents, matched handoffs, minimal tool grants, and a shared handoff packet contract.

    116 GitHub stars~2.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Creating Plugins

    jaktestowac/awesome-copilot-for-testers

    Packages repository skills as installable Copilot plugins: marketplace registration, plugin.json manifests, generated skill copies, and the sync check CI enforces.

    116 GitHub stars~3.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Governing Quality Waivers

    jaktestowac/awesome-copilot-for-testers

    Turns "we will skip this check for now" into a dated, attributed, expiring waiver with a stated reason and owner, inventories the silent skips already hiding in a repo - skipped tests, disabled lint…

    116 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Recording Change Intent

    jaktestowac/awesome-copilot-for-testers

    Requires an externalised rationale for high-risk changes - new public exports, new endpoints, auth edits, migrations, removed guards - recorded as an Intent commit trailer, an ADR reference, or a…

    116 GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Verifying Change Coverage

What does Verifying Change Coverage do?

Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk…. Verifying Change Coverage is an agent skill from jaktestowac/awesome-copilot-for-testers. Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk changes into a blocking finding.

When should I use Verifying Change Coverage?

Verifying Change Coverage fits situations like: A pull request needs a coverage gate that unrelated tests cannot satisfy; total coverage looks healthy but the diff is untested; wiring diff coverage into CI; someone claims a change is covered because the suite is green.

How do I install Verifying Change Coverage in Claude Code?

Run `npx skills add jaktestowac/awesome-copilot-for-testers --skill verifying-change-coverage -a claude-code`. Or copy the skill folder (skills/verifying-change-coverage in jaktestowac/awesome-copilot-for-testers) into .claude/skills/verifying-change-coverage in your project. Claude Code loads it when a task matches its description.

How do I install Verifying Change Coverage in Codex?

Run `npx skills add jaktestowac/awesome-copilot-for-testers --skill verifying-change-coverage -a codex`. Or copy the skill folder (skills/verifying-change-coverage in jaktestowac/awesome-copilot-for-testers) into .agents/skills/verifying-change-coverage in your project. Codex loads it when a task matches its description.

Can I use Verifying Change Coverage in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jaktestowac/awesome-copilot-for-testers --skill verifying-change-coverage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/verifying-change-coverage, .gemini/skills/verifying-change-coverage, .github/skills/verifying-change-coverage and .opencode/skills/verifying-change-coverage in your project.

What does Verifying Change Coverage need to run?

Going by SKILL.md and its folder, Verifying Change Coverage needs the command-line tools its instructions call (npx and git). Our summary lists: Node.js.

Does Verifying Change Coverage access the network?

SKILL.md contains no URLs. Its commands use npx and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Verifying Change Coverage safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Verifying Change Coverage use?

Verifying Change Coverage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Verifying Change Coverage use?

About 2.6k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Verifying Change Coverage?

Skills that share tags, products or a category with Verifying Change Coverage: Finishing a Development Branch (obra/superpowers, 296k stars), PR Babysitter (openinterpreter/openinterpreter, 69k stars), Check PR (onyx-dot-app/onyx, 32k stars) and Understand Diff Analysis (Egonex-AI/Understand-Anything, 86k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Verifying Change Coverage?

jaktestowac (a GitHub user) maintains it in jaktestowac/awesome-copilot-for-testers, which has 116 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on August 26, 2026.

Source: jaktestowac/awesome-copilot-for-testers on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.