Install any skill in seconds. Free to start, no credit card required.
Get Started Free →GitHub Actions Windows desktop installer qualification plus GitHub Release orchestration for already-qualified desktop artifacts. Use when Codex must build, qualify, or diagnose Windows installers in GitHub Actions, or must promote, publish, resume, or authoritatively verify a GitHub Release containing Windows and/or macOS assets from one frozen source SHA. Covers Windows acceptance receipts, same-byte cross-platform promotion, signing/notarization disclosure, and Release readback. Do not use th
.claude/skills/ethanyoq-github-desktop-release/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 83% | 0% |
Treat a desktop release as a state machine, not a build command. Keep application implementation, platform qualification, artifact identity, and public GitHub Release state as separate evidence boundaries.
AGENTS.md, domain docs, packaging configuration, workflows, release scripts, and tests. Use CodeGraph first when the project is indexed.electron-development for Electron macOS build and qualification; do not absorb that platform stage into this Skill.text node <skill-root>/scripts/validate-release-profile.mjs --profile <project-profile.json>
-OutputPath, then read references/stack-adapters.md and the selected adapter:powershell & "<skill-root>\scripts\preflight-windows-release.ps1" -ProjectRoot "<project-root>"
electron-development from the same frozen SHA. Read references/macos-qualification.md only to validate the artifact contract used by shared promotion; do not dispatch or own the macOS build/qualification job from this Skill.Stop at a read-only plan when repository writes, workflow dispatch, tag creation, or Release publication are not authorized.
Read references/release-contract.md and references/evidence-contract.md. Before the first release qualification:
text node <skill-root>/scripts/replay-release-evidence.mjs --profile <project-profile.json> --evidence-root <real-fixtures>
electron-development.The dispatch gate is complete only when the profile is valid, the contract is frozen, every known real receipt shape replays green, negative cases fail, and no unexplained platform representation remains.
Dispatch Windows qualification only after the release inputs are bound to the frozen SHA and contract meaning. When macOS is also requested, electron-development may run its independent macOS qualification in parallel against the same frozen SHA.
For Windows qualification:
persist-credentials: false.Windows Electron/NSIS qualification must follow references/electron-nsis.md. A macOS qualification artifact is an external input owned by electron-development; validate it against references/macos-qualification.md before promotion. Qualification success proves an Actions artifact, not a public Release.
Use assets/electron-nsis-qualification.yml as the fail-closed Windows qualification starting point. The bundled assets/macos-qualification.yml is retained only as a contract-compatible handoff template for electron-development; using it does not transfer macOS execution ownership to this Skill.
Promotion is shared infrastructure, not a project adapter. Copy scripts/github-desktop-promotion.mjs and scripts/validate-release-profile.mjs verbatim, with the same filenames, to .release/scripts/; then copy assets/github-desktop-release-promotion.yml to the repository workflow path declared by the profile. Do not reimplement profile validation, artifact selection, same-SHA/contract binding, manifest hashing, resume, upload, channel, or readback logic per project. Run the vendored script's offline tests when updating it:
textnode <skill-root>/scripts/test-github-desktop-promotion.mjs
Read references/failure-classification.md and references/failure-playbook.md.
product, build, acceptance, gate-false-positive, or promotion before deciding whether a rebuild is justified.Read references/github-release-state-machine.md.
qualification_runs_json as an exact platform mapping of positive integer runId, attempt, and artifactId. The shared script verifies the profile's workflow and artifact name in addition to those immutable identities.contractRawBytesSha256 and profileRawBytesSha256. release-contract.json and signing.evidencePath must be members of the exact manifest/checksum set; every required platform must carry identical contract/profile raw-byte hashes, and the latter must equal the profile file used for promotion.contents: write only to the final publish job. Resume a partial draft only when its provenance is exact and every already uploaded asset is an exact subset by name, size, state, and GitHub sha256: digest; upload only the missing assets. Never overwrite or delete a mismatch.draftVerified: true and publicationVerified: false; only a verified non-draft public state may report publication success.Workflow success is not publication success. A missing or unverifiable readback leaves the release incomplete.
Report mode, frozen inputs, qualification by platform, failure classification, signing/notarization, promotion identity, authoritative readback, unverified/blocked, and next action.
Use only these completion claims:
build-success: packaging command produced an artifact.qualification-success: a platform artifact passed its frozen acceptance contract.promotion-success: qualified bytes were promoted without rebuilding.publication-success: authoritative GitHub readback matches the full release contract and the Release is not a draft.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 30,060 | 16,033 | -47% | 1 | 1 | 0% | 4,222 | 2,644 | -37% | 0 | 0 | — |
case-02 | fail→fail | 28,068 | 15,854 | -44% | 1 | 1 | 0% | 2,330 | 2,462 | +6% | 0 | 0 | — |
case-03 | fail→fail | 22,428 | 17,841 | -20% | 1 | 1 | 0% | 3,374 | 2,586 | -23% | 0 | 0 | — |
case-04 | fail→pass | 16,182 | 9,483 | -41% | 1 | 1 | 0% | 1,887 | 2,941 | +56% | 0 | 0 | — |
case-05 | fail→pass | 19,115 | 15,380 | -20% | 1 | 1 | 0% | 2,410 | 3,685 | +53% | 0 | 0 | — |
case-06 | pass→pass | 17,848 | 13,485 | -24% | 1 | 1 | 0% | 1,954 | 3,498 | +79% | 0 | 0 | — |
case-07 | fail→pass | 22,309 | 15,585 | -30% | 1 | 1 | 0% | 2,747 | 3,875 | +41% | 0 | 0 | — |
case-08 | fail→pass | 17,857 | 15,943 | -11% | 1 | 1 | 0% | 2,318 | 3,925 | +69% | 0 | 0 | — |
case-09 | fail→pass | 14,831 | 9,917 | -33% | 1 | 1 | 0% | 1,694 | 3,092 | +83% | 0 | 0 | — |
case-10 | fail→pass | 15,251 | 9,704 | -36% | 1 | 1 | 0% | 1,647 | 2,911 | +77% | 0 | 0 | — |
case-11 | fail→pass | 15,073 | 10,786 | -28% | 1 | 1 | 0% | 1,514 | 3,138 | +107% | 0 | 0 | — |
case-12 | pass→pass | 19,714 | 14,358 | -27% | 1 | 1 | 0% | 2,464 | 3,738 | +52% | 0 | 0 | — |
case-13 | fail→pass | 16,313 | 14,026 | -14% | 1 | 1 | 0% | 2,090 | 3,850 | +84% | 0 | 0 | — |
case-14 | fail→pass | 12,483 | 10,707 | -14% | 1 | 1 | 0% | 1,295 | 3,267 | +152% | 0 | 0 | — |
case-15 | pass→pass | 12,425 | 13,897 | +12% | 1 | 1 | 0% | 1,384 | 3,527 | +155% | 0 | 0 | — |
case-16 | fail→pass | 20,151 | 18,302 | -9% | 1 | 1 | 0% | 2,393 | 4,339 | +81% | 0 | 0 | — |
case-17 | pass→pass | 21,518 | 12,450 | -42% | 1 | 1 | 0% | 2,361 | 3,479 | +47% | 0 | 0 | — |
case-18 | fail→pass | 24,263 | 7,676 | -68% | 1 | 1 | 0% | 3,203 | 2,536 | -21% | 0 | 0 | — |
case-19 | fail→pass | 17,069 | 9,705 | -43% | 1 | 1 | 0% | 2,022 | 2,984 | +48% | 0 | 0 | — |
case-20 | pass→fail | 22,042 | 13,167 | -40% | 1 | 1 | 0% | 3,213 | 3,643 | +13% | 0 | 0 | — |
case-21 | pass→pass | 42,320 | 32,069 | -24% | 1 | 1 | 0% | 5,663 | 7,504 | +33% | 0 | 0 | — |
case-22 | pass→pass | 21,889 | 17,985 | -18% | 1 | 1 | 0% | 3,083 | 4,377 | +42% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.