Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when creating a test plan for a blast radius. Assigns all 4 tiers (fully-automated, hybrid, agent-probe, known-gap) with exact commands, what each proves, and gap resolution options.
.claude/skills/withkynam-vc-test-coverage-plan/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 113% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 195% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 151% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 119% | 0% |
> Output style: Follow process/development-protocols/communication-standards.md — answer-first, plain language, no unexplained jargon, TL;DR on long responses.
Generate a TDD-first full test plan per blast radius area. Assigns all 4 test tiers with exact commands, what each proves, what it does NOT prove, and explicit resolution options for every gap.
This skill is POST-decision: the design is already chosen and you are assigning coverage tiers across a known blast radius. If instead an approach cannot be decided because a runtime/library/external mechanism is unverified — that is a PRE-decision question and belongs to vc-feasibility-test (a one-shot empirical probe producing a VIABLE/NOT-VIABLE/INCONCLUSIVE VERDICT), run before SPEC/INNOVATE locks. Do not use test tiers to answer "does this mechanism work at all?".
This skill MUST NOT infer tiers, commands, or runners from training data. Before reading the plan or naming a single area:
vc-context-discovery to load the relevant context group files.process/context/tests/all-tests.md and follow its downstream routing chain to therelevant deeper test docs (tests/container-e2e.md, tests/browser-automation.md, tests/live-e2e.md, etc.). The entry point is a router, not full knowledge — reading only the router and skipping the chain is insufficient.
real fixtures — not guesses).
Hard stop (mirrors vc-plan-agent TIER_ASSIGNMENTS_BLOCKED): if the all-tests.md routing chain was not loaded, or existing blast-radius test files were not discovered, STOP and emit TIER_ASSIGNMENTS_BLOCKED — report BLOCKED with "Test context chain not loaded; returning to RESEARCH to load all-tests.md and discover existing test files. Do not generate tier assignments from training data." Do NOT proceed to the waterfall. Every Command / Steps cell below must be an exact command sourced from the loaded test context, never an inferred placeholder.
For each area in the plan's blast radius, assign a tier using this waterfall:
without human judgment. Must be runnable in CI without setup beyond env vars. Examples: pnpm test, bun test, node validate-script.mjs, grep checks.
env) that is not always available in CI, but the test itself is deterministic once set up. Record the precondition explicitly. Examples: container E2E tests, DB migration checks.
Describe the probe scenario and what the agent should judge. Examples: UI visual regression, prose quality, API response plausibility.
plan. Document the gap explicitly. Do not use this tier to avoid writing tests.
These classes always require at least a hybrid test gate (no known-gap allowed without explicit documented rationale):
Required table format for high-risk class areas:
| Area | High-risk class | Minimum tier | Gap rationale if known-gap accepted | |---|---|---|---| | e.g. Auth/identity flow] | auth/identity | Hybrid | If known-gap: must state why hybrid is impossible and what alternative coverage exists] | | e.g. Billing credit deduction] | billing/credits | Hybrid | — |
When a hybrid test fails during or after EXECUTE:
small. Fix, re-run the hybrid gate, confirm green, then continue.
but has a clear fix. Create a follow-up phase plan and document the gap.
fix can be absorbed without scope expansion. Route the fix back to that phase.
deferral is acceptable. Write a backlog artifact. Do not silently absorb it.
Produce one block per area in the blast radius. Area = package, service, or logical surface (e.g. packages/api — new route, packages/ui — UI component).
Area: package/service name]
| Tier | Scenario | Command / Steps | What it proves | What it does NOT prove | |---|---|---|---|---| | Fully-automated | e.g. Route returns 200 with correct shape] | [exact command] exits 0 | Specific outcome proved] | Explicit gap] | | Fully-automated | e.g. Route returns 401 on missing token] | Same suite, auth-rejection case | Specific outcome proved] | Explicit gap] | | Hybrid | e.g. Integration with real DB] | [exact command] — precondition: what must be running/set] | Specific outcome proved] | Explicit gap] | | Agent probe | e.g. Visual or behavioral judgment] | Step-by-step scenario for the agent] | What the agent judges] | What cannot be automated] | | Known-gap | e.g. Load behavior under concurrent requests] | — | — | Cannot be tested within this plan's scope |
Rules:
— in the Command/Steps column and a brief reason in the "What it does NOT prove" column.[command] in a real output.After the per-area table, list every gap with four resolution choices:
| Gap | Resolution options | |---|---| | Gap 1 description] | A) Write new test — estimated effort]. B) Set up infra — what and how]. C) Accept as known-gap — rationale]. D) Backlog artifact — what to create]. | | Gap 2 description] | A) Option]. B) Option]. C) Option]. D) Option]. |
Resolution option rules:
packages/api/src/__tests__/route-shape.test.ts").pnpm db:seed:test").prod-migration-smoke-test_NOTE_[date].md in process/features/development-process/backlog/").Areas with no coverage possible at any tier within this plan's scope:
| Area | Why untestable in this plan | Resolution chosen | |---|---|---| | e.g. Production migration path] | Requires prod-like Postgres; outside phase scope | Backlog: artifact name] | | e.g. Token expiry mid-session] | Requires Clerk test tenant with configurable JWT TTL | Backlog: artifact name] | | e.g. Cross-instance isolation] | Requires 2+ live running instances | Deferred to program/phase name] |
all-tests.md routing chain and discover existing blast-radius test files. If not loaded, emit TIER_ASSIGNMENTS_BLOCKED and STOP; do not continue.For every Fully-automated tier row in the per-area output table, append immediately after that row's 5-column entry an inline failing test skeleton in plain text:
Failing stub:
test("should [behavior from Scenario column]", () => {
throw new Error("NOT IMPLEMENTED — TDD stub for: [behavior]")
})Rules for the stub:
execute-agent as the red-first starting point (Mode A hard gate). It is NOT an on-disk .test.ts file — do not write it to disk during VALIDATE or PLAN phase.
container test is too costly to mandate; hybrid stubs are advisory only.
Clarification note: vc-test-coverage-plan retains its exhaustive behavior-inventory framing — "each row is a behavior to COVER, not a test to write upfront." The stubs make the coverage intent machine-executable at EXECUTE time, not upfront test implementation. The four tier words (Fully-automated / Hybrid / Agent-Probe / Known-Gap) remain verbatim; this requirement is additive to the per-area output format.
This skill absorbs vc-test-tier-selector if that skill existed. If vc-test-tier-selector still exists on disk as a separate folder under .claude/skills/, treat this skill as its canonical replacement and note the duplication in the phase report. Do not route new work to vc-test-tier-selector.
Other measured skills in the registry, with their headline benchmark lift.