release-qa-gate
Skill4 starsChanged 3 months agoApache-2.0View on GitHub
Run the release-gate QA review for an agent-assembly release, scaled by risk (patch / RC-minor / major-deep-sweep). Performs baseline discovery (verification manifest) -> risk mapping -> P0/P1/P2 journey selection -> bounded parallel verification (max 10 qa-* sub-agents) -> independent finding verification -> Jira defect filing -> autonomous same-campaign remediation of ordinary confirmed defects -> committed QA sign-off -> Verdict PASS|BLOCK. Composes with, and never replaces, /release-security-gate — both sign-offs are independently required by scripts/release-readiness.sh. Use as a stage-0 pre-cut gate before /release-tag-cut, alongside /release-security-gate. NOTE: this is the QA half of the release gate — distinct from /release-security-gate, which owns security sign-off.
In this repository21 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- adr-governanceSkill
- credential-operationsSkill
- documentation-experienceSkill
- engineering-loopSkill
- governance-doctorSkill
- homebrew-tap-mergeSkill
- jira-deliverySkill
- product-validationSkill
- public-release-reconcileSkill
- release-assuranceSkill
- release-docs-syncSkill
- release-evidence-finalizeSkill
- release-security-gateSkill
- release-tag-cutSkill
- release-validate-channelsSkill
- repo-bootstrapSkill
- repo-scaffoldSkill
- rust-developmentSkill
- shell-developmentSkill
- terraform-developmentSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 66
A security-only question: Use /release-security-gate directly — this gate does not replace it, and a security-relevant behavioral finding …
- Very specific: line 150
Run from the agent-assembly/ checkout (or a worktree) with remote fetched.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
release-qa-gate
The release-gate QA review. It runs before a release tag is cut,
scales verification depth to release risk, and produces a committed
QA sign-off artifact that scripts/release-readiness.sh enforces
independently of (and additively to) the existing security sign-off. A
release with UNTESTED_OR_BLOCKED mandatory P0/HIGH-risk coverage, or an
unresolved release-blocking finding, cannot proceed with Verdict: PASS.
This gate composes eight pieces built for AAASM-5819 rather than reinventing QA orchestration in a single giant prompt every run:
| Piece | Ticket | What it provides |
| Release QA policy | AAASM-5820 | Risk tiers, P0/P1/P2 priority, verification depth by release tier, BLOCK/waiver rules, deep-sweep triggers |
| QA sign-off template | AAASM-5822 | The committed Verdict: PASS|BLOCK artifact this gate writes |
| Golden-journey catalog | AAASM-5824 | Machine-readable P0/P1/P2 index over AAASM-4522 |
| Verification manifest generator | AAASM-5825 | One-shot baseline/delta/CI-state discovery, shared by every worker |
.claude/agents/qa-*.md + orchestration policy | AAASM-5826 | 5 reusable roles, hard 10-concurrent ceiling, no nested spawning |
| Finding-verification protocol | AAASM-5827 | SUSPECTED->DEDUPED->INDEPENDENTLY_VERIFIED->CONFIRMED|REJECTED->FILED |
| Evidence contract + worker result schema | AAASM-5828 | What counts as evidence; the compact result shape every worker returns |
Risk mapper + scripts/qa/map-risk.py | AAASM-5829 | Deterministic changed-path -> risk/lane/journey selection |
| Runtime recipes | AAASM-5830 | Persisted install/build/verify/cleanup for repeated QA entry points |
This SKILL.md is a lean overview; the run procedure detail lives in REFERENCE.md.
Where this sits in the release relay
Runs alongside /release-security-gate as a stage-0 pre-cut gate, before
/release-tag-cut (see release-tag-cut/SKILL.md
for the full relay):
/release-security-gate <version>— independent security review and sign-off./release-qa-gate <version>(this skill) — independent QA review and sign-off. Run both; neither substitutes for the other./release-tag-cut <version>— bump + tag + push. Pre-conditions now require both a securityVerdict: PASSand a QAVerdict: PASSfor<version>(enforced byscripts/release-readiness.shchecks 11 and 12).- fan-out (automatic,
release.yml). /release-validate-channels v<version>(read-only)./homebrew-tap-merge <PR>(write, tap repo).
When to use
- Preparing to cut a release tag and need the mandatory pre-cut QA sign-off (every patch/RC/major).
- Re-running after fixing/waiving a blocker, to flip a prior BLOCK to PASS.
Triggering phrasing: "Release QA gate rc.7", "Run the release QA gate for 0.0.1-rc.7", "Sign off QA before we tag".
When NOT to use
- Not a release. For ad-hoc QA outside a release window, use AAASM-3198's
full-production-validation pattern or a targeted
qa-*agent directly, not this gate. - The sign-off already PASSes for this exact version and nothing changed since — the artifact is the record; don't regenerate.
- A security-only question. Use
/release-security-gatedirectly — this gate does not replace it, and a security-relevant behavioral finding discovered during QA is still classified per this gate's own protocol without editing the security sign-off.
How to use
/release-qa-gate <version><version> is the target literal exactly as it will appear in the tag (e.g.
0.0.1-rc.7, not v0.0.1-rc.7).
Release-depth detection mirrors /release-security-gate's patch/minor/
major tiers, applied to QA depth per the release QA policy: patch = P0 +
changed/impacted surfaces; RC/minor = patch + relevant P1 + config matrix +
SDK interop + changed trust boundaries; major = RC/minor + broad P1/P2 +
full adversarial pass + docs/examples/design audit.
The eight-step run procedure (summary — detail in REFERENCE.md)
- Manifest — run
scripts/qa/build-verification-manifest.shonce. Discovers canonical default branch, HEAD, baseline (qa-signoff -> deep- sweep-epic -> released-tag -> unknown), delta, CI state. - Feature delta discovery + coverage reconciliation — run
scripts/qa/build-feature-delta.pyonce. Cross-checks Jira ticket status against merged PRs and candidate-HEAD ancestry to classify every candidate ticketRELEASE_ELIGIBLEorOUT_OF_CURRENT_RELEASE_QA_SCOPE— see Feature delta discovery for the eligibility rules and anti-circularity rule. Then runscripts/qa/check-feature-coverage.pyand apply the AAASM-5844 reconciliation procedure ( detail) to classify eachRELEASE_ELIGIBLEfeature's QA coverage and create durable Story/journey coverage for anythingNOT_COVERED/STALE_COVERAGE. - Risk mapping — run
scripts/qa/map-risk.py --manifest .qa/verification-manifest.json. Produces overall risk, required lanes, and the journey set (always including the full P0 set fromqa/golden-journeys.yaml). - Depth/scope selection — apply the release QA policy's tier rules to the risk-mapper output, unioned with the reconciliation step's feature-selected journeys, to get the final journey/lane list for this run's depth.
- Bounded parallel verification — launch up to 10
qa-*sub-agents (seeqa/ORCHESTRATION.md), each scoped to a manifest/journey slice, each returning the AAASM-5828 compact result schema. - Finding verification — for each
SUSPECTED_FINDINGSentry, run the AAASM-5827 protocol (dedup -> independent verification byqa-finding-verifierfor High/Critical/P0 -> confirm/reject). - Jira filing and remediation — confirmed defects only, in the project's
Bug structure. Ordinary confirmed defects are then remediated within the
same campaign via the autonomous remediation loop in
qa/FINDING-VERIFICATION-PROTOCOL.md(implementation -> independent sub-agent review -> CI green -> admin merge -> post-merge reproduction), with human escalation reserved for that protocol's bounded carve-out list. QA-infrastructure-only defects (bugs in this gate's own scripts/skills) are fixed directly instead of filed — see the protocol's stated exception. - Sign-off — write
docs/release/qa-signoff/v<version>.mdfrom the template, with an exactVerdict: PASSorVerdict: BLOCKline. A third value,Verdict: CANDIDATE_VERIFIED(AAASM-6419, Core ADR 0042), is allowed only when afidelity: published_artifactjourney has checks that genuinely need a published artifact: record itPUBLICATION_PENDINGwith a committedv<version>.publication-obligations.jsonentry (candidate checks PASS, pending checks with commands, failure response). It is not a pass and does not satisfy the pre-conditions of/release-tag-cut; never write it to avoid a BLOCK, and never use a waiver for a check that is merely still owed.
BLOCK rule (mandatory coverage cannot be silently skipped)
Per the release QA policy: Verdict: BLOCK when any P0 journey or changed
HIGH-risk surface ends the run UNTESTED_OR_BLOCKED without an explicit
human waiver recorded in the sign-off, or when any release-blocking finding
(per the policy's BLOCK-condition list) is open. A truthful Verdict: BLOCK
because real coverage could not be completed is a correct outcome of
this gate, not a failure of it — never convert unresolved/unverified
coverage into an inferred PASS to make a run look clean.
Pre-conditions
- Target
<version>provided; previous tag/baseline resolvable via the manifest. - Run from the
agent-assembly/checkout (or a worktree) withremotefetched. gh,git,python3(withpyyaml),jqavailable for the manifest/ risk-mapper scripts.
Closing the campaign (mandatory)
qa/CLEANUP-PROTOCOL.md (AAASM-5846) is a mandatory closing step of both
this gate's own run and any remediation loop it triggers, per
qa/FINDING-VERIFICATION-PROTOCOL.md: per-merge worktree/process teardown,
a real CI-waiting mechanism (never a passive "monitoring" claim), and the
campaign's final-completion bar (0 stale worktrees, 0 unnecessary background
processes, 0 leftover listeners/servers, 0 leftover temp folders). Apply it
before reporting the campaign complete, not only at the very end.
CI waiting is not a judgement call — use the tool.
scripts/qa/ci-watch.py poll --repo <slug> --pr <n> --expect-head <sha>
(AAASM-5960) performs one fresh query and exits 0 pass / 20 fail / 21
running / 22 head-changed / 23 query-error. Never use a long blocking
wait shell: no sleep loops, no gh pr checks --watch, no multi-minute
command timeouts whose purpose is to wait. A shell that is asleep cannot
notice a terminal state, which is how AAASM-5930's campaign burned tens of
minutes reporting an already-failed run as pending. The shape that works is
query → act if terminal → otherwise short wakeup → query again, each wakeup
querying for itself. Exit 20 ends the wait and starts triage; exit 22
means the run you were watching is obsolete. Only the repository's real
required contexts gate a merge — on main that is exactly ["CI Success"],
so a non-required evidence job still in flight or cancelled is not a
reason to wait.
What this skill does NOT do
- It does not cut the tag (
/release-tag-cut). - It does not replace or gate
/release-security-gate— both sign-offs are independently required. - It classifies, verifies, and files confirmed defects, and remediates
ordinary ones within the same campaign via the closed-loop sequence in
qa/FINDING-VERIFICATION-PROTOCOL.md— human escalation is reserved for that protocol's bounded carve-out list, not confirmed-defect fixing in general. - It does not run every P1/P2 journey on every patch — depth is risk-based, per the release QA policy.
Detailed references
- Run procedure detail, worked example, troubleshooting → REFERENCE.md
- Release relay →
release-tag-cut/SKILL.md - Security gate (independent, composed alongside this one) →
release-security-gate/SKILL.md - Mandatory campaign closing step →
../../../qa/CLEANUP-PROTOCOL.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

