Pulse Release
qunqin24/Pulse
Release a new Pulse version end to end — checks, bilingual CHANGELOG entry, VERSION, tag, the release workflow, syncing main, and the issue replies that go with it.
Cut a Runner production release — bump the workspace version, tag vX.Y.Z, let release.yml build the draft for both platforms, write bilingual release notes (English, with 中文 collapsed in a details…
$ npx skills add yicheng47/runner --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install yicheng47/runner release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/yicheng47/runner.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release .claude/skills/release && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "release" agent skill from https://github.com/yicheng47/runner/tree/main/.agents/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/yicheng47/runner/tree/main/.agents/skills/releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add yicheng47/runner --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install yicheng47/runner release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yicheng47/runner.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/release .agents/skills/release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release" agent skill from https://github.com/yicheng47/runner/tree/main/.agents/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yicheng47/runner --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install yicheng47/runner release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yicheng47/runner.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/release .cursor/skills/release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "release" agent skill from https://github.com/yicheng47/runner/tree/main/.agents/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/yicheng47/runner.git --path .agents/skills/release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add yicheng47/runner --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install yicheng47/runner release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yicheng47/runner.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/release .gemini/skills/release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/yicheng47/runner/tree/main/.agents/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install yicheng47/runner releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add yicheng47/runner --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/yicheng47/runner.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/release .github/skills/release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/yicheng47/runner/tree/main/.agents/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yicheng47/runner --skill release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install yicheng47/runner release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yicheng47/runner.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/release .opencode/skills/release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/yicheng47/runner/tree/main/.agents/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
releaseCut a Runner production release — bump the workspace version, tag vX.Y.Z, let release.yml build the draft for both platforms, write bilingual release notes (English, with 中文 collapsed in a details…
Release is an agent skill from yicheng47/runner. Cut a Runner production release — bump the workspace version, tag vX.Y.Z, let release.yml build the draft for both platforms, write bilingual release notes (English, with 中文 collapsed in a details block), and hand the publish switch to the user
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Changelog and release notes and Translation. It works with Rust, macOS and Git. The repository describes itself as: Where terminal agents work together. Claude Code, Codex, Copilot CLI and pi on the same task, in one mission, each keeping its own TUI in a real terminal. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0aef92a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghgitcargoxcrunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release loads about 1.8k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 828 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from yicheng47/runner at commit 0aef92a, republished under its MIT licence (© yicheng47). 828 words, ~1,784 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder).A production release is a vX.Y.Z tag on a main commit whose workspace version is exactly X.Y.Z. release.yml builds the signed, notarized macOS DMG with its one-item Sparkle appcast and the Windows x64 installer with its minisign signature, then attaches everything to a draft release. Publishing the draft is the user's switch: it moves releases/latest and the production Sparkle feed. Contract: docs/arch/arch.md §14; nightlies are a separate channel handled by the nightly skill.
An explicit request to run authorizes the bump commit, the push, the tag, and editing the draft's notes. Nothing in this skill publishes the draft, deletes a release, or moves an existing tag. Record only observed results.
/release [run <version> | notes <version> | check <version>] — no action means run.
run <version><version> must match ^[0-9]+\.[0-9]+\.[0-9]+$ and be greater than the current tag from gh release list.git fetch origin; require branch main, a clean tree, and git rev-parse main origin/main equal. Everything meant for the release is already merged.origin/main is green: gh run list --branch main --workflow ci.yaml --limit 1 --json conclusion.gh run list --workflow release.yml --limit 3 --json status.version under [workspace.package] in the root Cargo.toml to <version>. Every crate inherits it with version.workspace = true (since #635), so there is no per-crate edit. Run cargo check --workspace to refresh Cargo.lock, which updates each crate's entry, then cargo test -p runner-app --test bundle_mac. Commit Cargo.toml and Cargo.lock as chore: bump version to <version> and push main.git tag -a v<version> -m "Runner <version>" && git push origin v<version>. The push starts release.yml.gh run list --workflow release.yml --limit 1 --json databaseId,status,headSha and gh run watch <id> --exit-status. Both build jobs and the publish job must succeed. On failure, gh run view <id> --log-failed, report the failing step, and stop; the tag stays, the draft may be partial.notes <version> below and set them on the draft: gh release edit v<version> --notes-file <file>. Do not pass --draft=false.untagged-… URL changes each time it is edited, so link the latest one. After the user publishes, confirm gh release view v<version> --json isDraft is false before anything that assumes the release is live, then verify gh api repos/yicheng47/runner/releases/latest --jq .tag_name is v<version> and that releases/latest/download/appcast.xml names the new DMG.notes <version>Release notes are bilingual: the full English text first, then the same content in 中文 inside a <details> block so the page reads as English-only until a reader expands it (GitHub has no tabs; a collapsed block is the nearest thing, and both in-app updaters open the release page in a browser where it renders). 0.8.3 used a horizontal rule instead; every release since 0.8.4 ships the collapsed form. A draft with only the workflow's one-line stub is not ready to publish.
Source the content from git log v<previous>..v<version> --no-merges --format='- %s (%h)' and the closed issues those commits reference. Write for users, not for the repo: what changed for them, in their words, one bullet per change with the issue number at the end. Skip internal work (tests, CI, docs, refactors) unless it changes what users see.
Structure, both languages:
Runner <version> is a <bug-fix | feature> release for macOS and Windows on top of <previous>.
## New (omit if empty)
- **Short bold lead.** One or two sentences. (#123)
## Bug fixes (omit if empty)
- ...
## Nightly channel (only when the nightly channel changed; nightly users read these)
- ...
## Download and upgrade
- **macOS, Apple Silicon:** download `Runner-<version>-arm64.dmg`, or update through Sparkle. The app is signed and notarized.
- **Windows x64, Windows 10 version 1809 or later:** download `Runner-Setup-<version>.<stamp>-x64.exe`. The installer, app, and CLI sidecars are Authenticode-signed by Open Source Developer Yicheng Wang. You can also update through Settings → Updates → Update, then choose Install and restart. Settings, chats, and missions are retained.
Windows ARM64, Intel Macs, and Linux are not supported.
**Full changelog:** https://github.com/yicheng47/runner/compare/v<previous>...v<version>
<details>
<summary>中文</summary>
Runner <version> 是 macOS 和 Windows 上基于 <previous> 的<修复版本 | 功能版本>。
## 新功能
...
## 问题修复
...
## Nightly 渠道
...
## 下载与升级
...
Windows ARM64、Intel Mac 和 Linux 暂不支持。
**完整变更记录:** https://github.com/yicheng47/runner/compare/v<previous>...v<version>
</details>Keep a blank line after <summary> and before </details>, or GitHub renders the markdown inside as literal text.
Rules for the 中文 half: translate the meaning, not the words; keep product terms as they appear in the app (Runner, Sparkle, Nightly, ⌘, Settings → Updates); keep file names, issue numbers, and links identical to the English; use the same headings in the same order so a reader can line the two halves up. Headings inside the details block use ## like the English half; they render collapsed until expanded. Read the exact Windows installer name from the draft's assets (gh release view v<version> --json assets --jq '.assets[].name') rather than guessing the stamp.
check <version>Read-only. gh release view v<version> --json isDraft,isPrerelease,assets,body: report draft state, that the DMG, appcast.xml, installer, and .sig are all present, and whether the body has the English section and a <details> block containing the 中文 section. After publishing, also verify releases/latest resolves to the tag and the production appcast's enclosure names the new DMG.
X.Y.Z after the release; nightlies do not bump it (see the nightly skill).workflow_dispatch of release.yml with dry_run builds the same artifacts into a throwaway draft named dry-run-<stamp> for inspection; delete that draft afterwards.release.yml signs the installer, app and CLI sidecars through Certum SimplySign, so the notes carry the signed sentence above. If a release ever ships unsigned, say so in its notes and warn about SmartScreen.~/.zshrc; xcrun notarytool history and stapler validate <file> are the tools.© yicheng47, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/release of yicheng47/runner.
Open the folder on GitHubat commit 0aef92a
Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release this skillyicheng47/runner | 273 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Pulse Releasequnqin24/Pulse | 516 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Worktrunk Release Workflowmax-sixty/worktrunk | 9k | — | ~6.9k | Automated safety check: Pass | Custom licence | |
| Releasexin2017338/lynx-proxy | 502 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Prepare Releasefrozenlib/parse-display | 193 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Gridbash Panesjasonsuhari/gridbash | 134 | — | ~1.5k | Automated safety check: Pass | MIT |
qunqin24/Pulse
Release a new Pulse version end to end — checks, bilingual CHANGELOG entry, VERSION, tag, the release workflow, syncing main, and the issue replies that go with it.
max-sixty/worktrunk
Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.
xin2017338/lynx-proxy
Publish a new release version of Lynx Proxy. An agent skill from xin2017338/lynx-proxy.
frozenlib/parse-display
Prepare parse-display release changes before publishing with a Rust Cargo script when nightly Cargo is available.
jasonsuhari/gridbash
Coordinate with sibling agent panes from inside a GridBash grid — list panes and their roles, read what a pane is currently doing, prompt one pane or every other pane, and rename pane titles so the…
manhpham90vn/Deskhub
Write a Deskhub commit message. An agent skill from manhpham90vn/Deskhub.
yicheng47/runner
Report, list, or manage bug reports as GitHub issues. An agent skill from yicheng47/runner.
yicheng47/runner
Create, list, or manage feature specs and GitHub issues. An agent skill from yicheng47/runner.
yicheng47/runner
Cut or check Runner nightlies — one workflow for macOS and Windows, one public prerelease, shared stamp, and separate stable feeds
Categories
Cut a Runner production release — bump the workspace version, tag vX.Y.Z, let release.yml build the draft for both platforms, write bilingual release notes (English, with 中文 collapsed in a details…. Release is an agent skill from yicheng47/runner.
Release fits situations like: tasks that involve Changelog and release notes; tasks that involve Translation.
Run `npx skills add yicheng47/runner --skill release -a claude-code`. Or copy the skill folder (.agents/skills/release in yicheng47/runner) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add yicheng47/runner --skill release -a codex`. Or copy the skill folder (.agents/skills/release in yicheng47/runner) into .agents/skills/release in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yicheng47/runner --skill release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (gh, git, cargo and xcrun).
SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Release: Pulse Release (qunqin24/Pulse, 516 stars), Worktrunk Release Workflow (max-sixty/worktrunk, 9k stars), Release (xin2017338/lynx-proxy, 502 stars) and Prepare Release (frozenlib/parse-display, 193 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
yicheng47 (a GitHub user) maintains it in yicheng47/runner, which has 273 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 8, 2026.
Source: yicheng47/runner on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.