Nightly
SkillDev toolsCut, check, or version-bump the Runner nightly — dispatch nightly.yml on main, watch it, verify the rolling draft release, record the stamp
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Nightly skill
What this skill tells your AI
The instructions your AI receives, as published by yicheng47/runner in .agents/skills/nightly/SKILL.md and read by ahel’s review.
One nightly.yml dispatch builds both platforms by default from one SHA and UTC stamp. platform=macos or platform=windows selects one. One rolling public nightly prerelease serves macOS DMGs, a signed Sparkle appcast, Windows x64 installers, and matching minisign signatures. Each platform keeps ten builds by stamp independently on that release. Production feeds and releases/latest stay separate. Contract: docs/arch/arch.md §14 and docs/arch/windows.md.
An explicit request to run authorizes that workflow dispatch. Reading or editing this skill and check do not authorize dispatch. Nightly is a rolling development channel identified by its commit; official version tags are separate, and no nightly crate-version bump is needed. Commit, push, merge, tagging, direct release mutation, app launch/restart, and installation require the user's explicit instruction. Record only observed results; never invent a successful cut or a PC smoke result.
Usage
/nightly [run [both|macos|windows] | check [both|macos|windows]] — no action means run; omitted platform means both.
run [platform]
- Preflight — stop on any failure and report it.
git fetch origin; require branchmain, a clean tree (git status --shortempty), andgit rev-parse main origin/mainequal. Capture the fullorigin/mainSHA. Do not push local commits without instruction.- Check for any queued or running nightly, including other platforms:
gh run list --workflow nightly.yml --limit 30 --json databaseId,status,displayTitle,headSha. Stop if a run is not completed; all platforms share concurrency groupnightly, so a dispatch cancels the entire older run. - CI for the SHA:
gh run list --commit <sha> --workflow ci.yaml --limit 1 --json status,conclusion. Missing or completed withoutsuccess→ stop. Queued/in-progress is fine: the single publish job waits for CI and verifies its successful conclusion. Both macOS and Windows CI must pass even for a single-platform cut. - If the Runner MCP is reachable, report running missions from
mission_list_summary. A successful cut can produce a nightly update offer and a Windows background download. Installation/restart remains a separate user action and interrupts live PTYs.
- Dispatch:
gh workflow run nightly.yml --ref mainfor both, or append-f platform=macos/-f platform=windows. Find the new run withgh run list --workflow nightly.yml --branch main --limit 5 --json databaseId,status,headSha,displayTitle,createdAt; require the selectedNightly (<platform>)title, creation after dispatch, andheadShaequal to preflight. If the source changed during dispatch, report the mismatch and do not claim the intended cut succeeded. - Watch:
gh run watch <id> --exit-status. On failure, inspectgh run view <id> --log-failedand report the failing step. A failed/cancelled selected build prevents publication of both platforms on abothrun. Failure or cancellation during publication can leave some files uploaded; report the cut incomplete and do not automatically retry. - Verify: run
checkfor the selected platform(s), using this run's exact commit-based identity, stamp, and SHA. The shared identity is inprepare's build-identity outputs/log and the successful publication job summary. Require the whole run to have succeeded, not just one build job. - Record: after successful verification, add a dated cut record to
docs/impls/archive/504-nightly-channel-unification.md: selected platforms, commit-based identity, UTC stamp, run id, source SHA, and exact asset filenames/URLs. The release notes already carry the commits since the latest official release, so the record needs only a one-line summary. Keep prior records intact. Record installed upgrade/PC results only after observing them or receiving them from Jason. FollowAGENTS.mdbranch rules before editing; leave the record uncommitted unless the user explicitly requests commit/push. - Report: shared identity, run result, download links, changes included, and any installed-upgrade checks still pending. macOS nightlies can update through Sparkle; Windows nightlies use the in-app updater. Do not install or restart either app from this skill without explicit instruction.
check [platform]
This is read-only and does not dispatch. Read recent nightly.yml runs with gh run list --workflow nightly.yml --branch main --limit 10 --json databaseId,status,conclusion,headSha,createdAt,displayTitle. A both run applies to both platforms; a later single-platform cut may mean their assets now have different stamps on the same release. The nightly tag points at the last published cut, so git fetch origin refs/tags/nightly:refs/tags/nightly then git log nightly..origin/main --oneline describes what a new cut would pick up; the release notes list what the current cut has beyond the latest official release. A single-platform cut moves the tag too, so an unselected platform’s assets can be older than the tag: read their stamps from the filenames.
Read gh release view nightly --json isPrerelease,isDraft,assets once; require isPrerelease=true, isDraft=false, every selected platform’s expected filenames, and at most ten timestamped installers and ten DMGs independently. Require the shared notes from script/nightly-release-notes.md when checking the publish workflow; release notes cover installation and updates on both platforms. Sort by trailing YYYYMMDD.HHMM stamp, not by the version prefix. Both apps display Nightly (<sha>), independently of the crate version. The UTC stamp orders artifacts and updates; the short commit identifies their source. For example, a Windows artifact identity is nightly.abc1234.20260908.0100.
- macOS /
nightly: requireRunner-Nightly-<sha>.<stamp>-arm64.dmgandappcast.xml. Check anonymous DMG access withcurl --silent --show-error --fail --head --location <asset-url>; download and parse the appcast. Its single signed enclosure must point to that DMG athttps://github.com/yicheng47/runner/releases/download/nightly/, with the expected stamp, seven-character commit as its short version, andarm64hardware requirement. Sparkle supplies the app name in its native alert; Runner’s own update display isNightly (<sha>). The release page ishttps://github.com/yicheng47/runner/releases/tag/nightly. - Windows /
nightly: requireRunner-Setup-nightly.<sha>.<stamp>-x64.exeand its exact.sig; anonymous access must succeed for both athttps://github.com/yicheng47/runner/releases/download/nightly/. Installers/signatures prune together. Portable ZIPs are retired. The release page ishttps://github.com/yicheng47/runner/releases/tag/nightly. - Stable isolation: verify
gh api repos/yicheng47/runner/releases/latest --jq .tag_namestill identifies the current production release (0.8.2 when #502 was implemented), not a nightly. Do not report a real installed update or production Sparkle check as tested merely because release metadata is correct.
Notes
- Nightlies are dispatch-only: a push to
mainruns CI alone. Nightlies need no crate-version bump or relationship to the next official version. Onepublishjob validates selected artifacts, gates on CI once, uploads the DMG before its appcast and the installer before its signature, checks public downloads, then prunes. All uploads targetnightly, and one public verification reads that release before either platform prunes. A single-platform cut leaves the other platform’s assets/feed and retention untouched. An upload or download failure reports the cut incomplete and prevents all pruning. - Nightly and production use
com.wycstudios.runner/Runner.appon macOS and retain~/Library/Application Support/com.wycstudios.runner/. Installing a nightly over Runner switches it to the nightly feed; installing a stable DMG switches it back. Windows follows the same install-to-switch rule. Public prereleases can be found by browsing, while production installs read their separate stable feed. - One-time transition: Jason installs the first unified Mac DMG over
Runner.app, then deletesRunner Nightly.appby hand; its old bundle id cannot update through Sparkle to the new one. The PC also needs a manual install because its existing build readsnightly-win. After the PC readsnightly, Jason deletes the oldnightly-winrelease and tag by hand. There is no transition mirror; neitherrunnorcheckreads or writes that release. Dormant Windows installs reinstall fromnightlyafter it is deleted. These manual steps still require explicit authorization. - Production releases remain a different path: tag
vX.Y.Zat a bareX.Y.Zcrate version →release.ymlbuilds a draft; publishing is the human's switch. Do not tag from this skill.
Signals
- GitHub stars
- 104
- Forks
- 5
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
nightly- Source
- github.com/yicheng47/runner