plugins/assessing-release-readiness/skills/assessing-release-readiness/SKILL.md
Produces an evidence-backed go/no-go recommendation: exit criteria status, open-defect risk profile, coverage against risk, environment parity, rollback readiness, and the residual risk stated plainly. Use when preparing a release sign-off, when someone asks whether a build is ready to ship, or when a decision to release is being made on impressions rather than evidence.
npx skillsauth add jaktestowac/awesome-copilot-for-testers assessing-release-readinessInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when a decision to ship has to be made and someone needs to state what is known, what is not, and what happens if the unknown part goes wrong.
Readiness is not "all tests are green". Green means the tests that exist passed. The question is whether the evidence covers the risk, and where it does not, whether the residual risk is acceptable and recoverable. A recommendation without a stated residual risk is not a recommendation, it is a hope.
Establish and write down:
The release mechanism materially changes the answer. A flagged change behind a 1 percent canary needs different evidence than a database migration that everyone gets at once.
If exit criteria exist, take them as written. If they do not, derive a minimum set from ./resources/exit-criteria-checklist.md and say plainly that you derived them, because criteria invented at sign-off time are weaker than criteria agreed in advance.
For each criterion record: met, not met, or unverified, plus the evidence. A criterion with no evidence is unverified, not met.
Not a bug count. For every open defect that touches the release scope:
| Field | Why | | --- | --- | | Severity and priority | They are different; record both | | Affected journey | Which user, doing what | | Frequency | How many users hit it, how often | | Workaround | Exists, and whether the user can find it unaided | | Detectability in production | Would monitoring catch it, or does a customer have to tell us | | Reversibility | Can it be fixed forward quickly, or does it need a rollback |
A low-severity defect with no workaround, on the main journey, invisible to monitoring, is worse than a high-severity one on an admin screen. Rank by the combination, not by the severity label.
Take the risk areas from analyzing-regression-scope when a diff is available. For each area, state the evidence and its type:
| Risk area | Evidence | Type | Verdict | | --- | --- | --- | --- | | Payment capture | 14 API tests, 3 E2E, 1 exploratory session | Automated + manual | Covered | | Refund path | Unit tests only | Automated, low level | Thin | | Data migration | None on production-sized data | - | Gap |
Three verdicts only: covered, thin, gap. Resist "partially covered", which reads as covered in a summary.
A green test run tells you the tests passed. Add the question the run cannot answer: would this suite have caught the last three production incidents? If not, say so.
The failures that produce the worst releases are usually not code. Work through ./resources/exit-criteria-checklist.md, the operational section:
An untested rollback is the same as no rollback. Say it in those words.
The section the report exists for. For each accepted risk:
./resources/risk-register.md has the format. A risk with no named acceptor is not accepted, it is ignored.
One of four, stated in one sentence and then justified:
| Recommendation | Meaning | | --- | --- | | Go | Evidence covers the risk. Residual risk is stated and accepted. | | Go with conditions | Ship if the listed conditions hold: flag off by default, staged rollout, extra monitoring, a named person watching | | No-go | A specific, nameable gap. Say exactly what would change the answer. | | Cannot assess | Evidence is insufficient to judge. Say what is missing and how long it would take to get. |
"Cannot assess" is a legitimate and underused answer. It is honest where a hedged "go with some concerns" is not.
Every no-go names its unblocking condition. A no-go without one is a veto, and it will be overruled.
Produce the report with ./resources/go-no-go-template.md.
./resources/go-no-go-template.md - full report structure with a worked example, plus a short hotfix variant./resources/exit-criteria-checklist.md - default criteria across functional, quality, operational, and organizational readiness./resources/risk-register.md - residual risk format, likelihood and detectability scales, and acceptance recordanalyzing-regression-scope - to derive the risk areas from the diff before mapping coverageverifying-acceptance-criteria - when the question is whether individual criteria are metrequirements-test-coverage-mapper - when traceability from requirements to tests is the evidence in questionplanning-exploratory-testing - when the coverage report shows gaps a session could close before the decisionanalyzing-quality-metrics - when the readiness signal should be trended across releases rather than judged oncetesting-api-contracts - when a breaking change is part of the release scopereporting-bugs - when the readiness review surfaces defects that need filingThis skill is complete when:
testing
Tests the customization assets themselves - skills, prompts, custom agents, instructions - the way a product is tested: activation cases that check an asset fires when it should and stays quiet when it should not, output-contract cases, safety cases, collision cases between assets competing for the same trigger, a weighted rubric scored blind, and a baseline-versus-candidate gate before an edit ships. Use when a skill is edited and nobody knows whether behaviour changed, when two skills fight over the same request, when a description is being tuned for discoverability, when a collection has grown past manual spot-checking, or when the request mentions skill evals, prompt regression, or "does this skill actually work".
development
Shapes QA output for the person who has to act on it: result and blocker in the first two lines, one decision per report, findings ordered by what they cost, the long artifact in a file and the decisions in the message, and magnitude stated in units the reader can count. Use when a report is accurate but nobody acts on it, when a finding set is too long to read under time pressure, when the same findings must be retold for a developer, a release manager, and an on-call engineer, or when the request mentions "too long", "make this readable", "just tell me what to do", "so what", or "summarize this for stakeholders". Pairs with unslop-answers, which makes the same report honest.
testing
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.
development
Cuts AI tells from test code: tests that pass without proving anything, tautological assertions, mock-only tests, hardcoded waits, coverage theater, vague names, swallowed errors, retries used as fixes. Use whenever test code is written, changed, or reviewed, including tests produced as a side effect of a feature task, and when the request mentions "review these tests", "are these tests any good", "this test always passes", "this suite is flaky", or "clean up these tests". Must always apply to test code.