Mole CLI Release Flow
tw93/Mole
Runbook for assessing and executing a Mole CLI release: distribution channels, pre-flight checks, capital-V tags, build artifacts and the handoff to curated release notes.
Cut a release end to end: use the draft-release skill to open the release PR and draft GitHub release, wait for CI to turn green, run the merge-pr skill to merge the release PR, then update the…
$ npx skills add dyoshikawa/rulesync --skill goal-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dyoshikawa/rulesync goal-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/dyoshikawa/rulesync.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.rulesync/skills/goal-release .claude/skills/goal-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 "goal-release" agent skill from https://github.com/dyoshikawa/rulesync/tree/main/.rulesync/skills/goal-release into .claude/skills/goal-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "goal-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/dyoshikawa/rulesync/tree/main/.rulesync/skills/goal-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 dyoshikawa/rulesync --skill goal-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dyoshikawa/rulesync goal-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dyoshikawa/rulesync.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.rulesync/skills/goal-release .agents/skills/goal-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 "goal-release" agent skill from https://github.com/dyoshikawa/rulesync/tree/main/.rulesync/skills/goal-release into .agents/skills/goal-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "goal-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 dyoshikawa/rulesync --skill goal-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dyoshikawa/rulesync goal-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dyoshikawa/rulesync.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.rulesync/skills/goal-release .cursor/skills/goal-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 "goal-release" agent skill from https://github.com/dyoshikawa/rulesync/tree/main/.rulesync/skills/goal-release into .cursor/skills/goal-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "goal-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/dyoshikawa/rulesync.git --path .rulesync/skills/goal-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 dyoshikawa/rulesync --skill goal-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dyoshikawa/rulesync goal-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dyoshikawa/rulesync.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.rulesync/skills/goal-release .gemini/skills/goal-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 "goal-release" agent skill from https://github.com/dyoshikawa/rulesync/tree/main/.rulesync/skills/goal-release into .gemini/skills/goal-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "goal-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 dyoshikawa/rulesync goal-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 dyoshikawa/rulesync --skill goal-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dyoshikawa/rulesync.git skills-src && mkdir -p .github/skills && cp -r skills-src/.rulesync/skills/goal-release .github/skills/goal-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 "goal-release" agent skill from https://github.com/dyoshikawa/rulesync/tree/main/.rulesync/skills/goal-release into .github/skills/goal-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "goal-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 dyoshikawa/rulesync --skill goal-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 dyoshikawa/rulesync goal-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dyoshikawa/rulesync.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.rulesync/skills/goal-release .opencode/skills/goal-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 "goal-release" agent skill from https://github.com/dyoshikawa/rulesync/tree/main/.rulesync/skills/goal-release into .opencode/skills/goal-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "goal-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.
goal-releaseCut a release end to end: use the draft-release skill to open the release PR and draft GitHub release, wait for CI to turn green, run the merge-pr skill to merge the release PR, then update the…
Goal Release is an agent skill from dyoshikawa/rulesync. Cut a release end to end: use the draft-release skill to open the release PR and draft GitHub release, wait for CI to turn green, run the merge-pr skill to merge the release PR, then update the Homebrew formula from the published release assets. Use when the user wants to draft and merge a release in one go, or triggers on "the goal-release skill".
Its SKILL.md is about 2k 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. It works with Homebrew and GitHub. The repository describes itself as: A Utility CLI for AI Coding Agents. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 625bf98. 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:
ghgitpnpmbrewFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, git and pnpm, 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.
Goal Release loads about 2k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 1,015 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 dyoshikawa/rulesync at commit 625bf98, republished under its MIT licence (© dyoshikawa). 1,015 words, ~1,979 tokens.
.claude/skills/goal-release/SKILL.md (or your agent's skills folder).new_version = the user's request
This skill drives a release all the way to merge. It uses the draft-release skill to
open the release pull request (and create the draft GitHub release), waits for
the PR's CI checks to pass, runs the merge-pr skill to merge it, and finally updates
the Homebrew tap formula once the release assets are built.
Use the draft-release skill with new_version.
new_version is provided (e.g. v1.2.3 or 1.2.3), it must match the
semver shape ^v?\d+\.\d+\.\d+$ — if it does not, stop and report instead
of passing it on. Pass a valid value through unchanged; the draft-release skill
normalizes the v prefix itself.new_version is empty, pass no argument; the draft-release skill determines the
next version automatically via the release-dry-run skill.When the draft-release skill finishes, it has:
release/v<version> branch with the version-bump commits,main, andv<version> with the release notes.If the draft-release skill failed partway (e.g. the PR exists but the draft release
was not created, or it stopped before opening the PR), stop here and report
the partial state to the user instead of continuing.
Use the PR number or URL that the draft-release skill's gh pr create printed in
Step 1 when available. Otherwise, identify the pull request from the current
release/v<version> branch:
gh pr view --json number,title,state,headRefNameConfirm that headRefName matches the release/v<version> branch created in
Step 1. This skill must only ever merge that release PR — if the resolved PR
is a different one, stop and report to the user instead of merging.
Wait for the release PR's GitHub Actions checks to finish:
gh pr checks <pr_number> --watchIf the watch reports that no checks are registered yet, wait a moment and retry — checks can take a few seconds to appear right after the PR is opened.
pnpm cicheck locally, commit, and push), then wait for the re-run.
Never proceed to the merge while any check is fail or pending.If any fix commit beyond the draft-release skill's own version-bump commits was
pushed, review the extra commits yourself instead of stopping: merge when each
one is a legitimate CI fix (it does not skip or delete tests, weaken lint or
type-check configuration, touch .github/**, or add a runtime dependency) and
CI is green, and list the extra commits in the final report. If any extra
commit fails that check, stop and report it instead of merging.
Use the merge-pr skill with the release PR number. It re-verifies the PR
state and CI status, merges with gh pr merge --admin --merge, posts a
thank-you comment, and cleans up the local branch.
Note: the goal-pr skill tells agents not to auto-merge PRs that touch package.json
or release configuration. That restriction does not apply here — merging the
version-bump release PR is this skill's explicit purpose, and the user opted
into it by invoking the goal-release skill.
After the release PR merges, the Publish Assets workflow builds the platform
binaries, tags the release, and uploads the assets (including SHA256SUMS) to
the draft GitHub release. The Homebrew formula embeds those checksums, so it
can only be regenerated once that workflow finishes — this step replaces the
old homebrew job that .github/workflows/publish.yml used to run.
Wait for the Publish Assets run triggered by the merge to complete:
gh run list --workflow "Publish Assets" --branch "release/v<version>" \
--limit 1 --json databaseId,status,conclusion,headBranch
gh run watch <run_id>The workflow triggers on every closed PR to main (non-release runs are
job-level skipped but still listed), so filter by the release branch as
shown. The run can take a few seconds to appear right after the merge — if
the list is empty, wait and retry. Confirm the watched run belongs to this
release (its headBranch is the release/v<version> branch of the PR
merged in Step 4) and concluded with success. If it failed, stop and
report — the formula must not be regenerated from stale assets.
Wait until the GitHub release is published (no longer a draft). The
Publish workflow (.github/workflows/publish.yml) runs after
Publish Assets, publishes the npm package, and then flips the release
public. Draft-release asset URLs return 404 for unauthenticated users, and
the Homebrew tap serves the formula straight from main, so merging the
formula before the release is public would break brew install for
everyone:
gh release view v<version> --json isDraft --jq .isDraftPoll until this prints false. If the Publish workflow failed (e.g. npm
publish error) and the release stays a draft, stop and report instead of
updating the formula.
Regenerate the formula from the released checksums:
git checkout main && git pull
gh release download v<version> --pattern SHA256SUMS --dir ./tmp --clobber
pnpm exec tsx scripts/generate-homebrew-formula.ts <version> ./tmp/SHA256SUMS Formula/rulesync.rb
rm -f ./tmp/SHA256SUMSIf git diff --quiet -- Formula/rulesync.rb reports no change, the formula
is already up to date — skip ahead to the final report.
Otherwise commit the regenerated formula on a branch and merge it right
away (main is branch-protected, so the change must land via a PR; merging
it immediately with admin rights is this skill's explicit purpose, same
as the release PR itself):
git switch -c homebrew-formula/v<version>
git add Formula/rulesync.rb
git commit -m "chore: update Homebrew formula to v<version>"
git push -u origin homebrew-formula/v<version>
gh pr create --base main --title "chore: update Homebrew formula to v<version>" \
--body "Automated formula update for the v<version> release."
gh pr merge --admin --merge --delete-branchIf a previous attempt already pushed the homebrew-formula/v<version>
branch or opened its PR, reuse them instead of failing: force-push the
branch with git push --force-with-lease and skip gh pr create when
gh pr list --head homebrew-formula/v<version> shows an open PR.
Only Formula/rulesync.rb may be committed here. If anything else shows up
in git status, stop and report instead of committing it.
Report to the user:
Publish workflow, which Step 5 waits for).© dyoshikawa, 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 .rulesync/skills/goal-release of dyoshikawa/rulesync.
Open the folder on GitHubat commit 625bf98
Goal 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 |
|---|---|---|---|---|---|---|
| Goal Release this skilldyoshikawa/rulesync | 1.5k | — | ~2k | Automated safety check: Pass | MIT | |
| Mole CLI Release Flowtw93/Mole | 70k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Releaseeugene1g/agent-safehouse | 2.1k | — | ~3.5k | Automated safety check: Pass | Apache-2.0 | |
| Releasetrasta298/keifu | 810 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Release VersionGOODBOY008/r-shell | 153 | — | ~4k | Automated safety check: Pass | MIT | |
| Kanvibe Release Deployrookedsysc/kanvibe | 144 | — | ~12k | Automated safety check: Notes | AGPL-3.0 |
tw93/Mole
Runbook for assessing and executing a Mole CLI release: distribution channels, pre-flight checks, capital-V tags, build artifacts and the handoff to curated release notes.
eugene1g/agent-safehouse
Run the local Agent Safehouse release flow: inspect commits since the last published release, propose the next SemVer version and changelog, present a dry-run for confirmation, then update…
trasta298/keifu
Create a new release with tag, GitHub release, and homebrew-tap update
GOODBOY008/r-shell
Release a new r-shell version and create a published GitHub release with contributor credits.
rookedsysc/kanvibe
A skill your agent uses whenever releasing or deploying KanVibe desktop from a clean, up-to-date dev checkout: ask only for the target version and release-note approval, then let the AI update…
XueshiQiao/AnyDrag
Runs the full AnyDrag release process end to end, from cumulative bilingual release notes through version bumping to watching CI and the Homebrew cask update.
dyoshikawa/rulesync
Maps rulesync feature implementations to upstream coding-agent documentation.
dyoshikawa/rulesync
Babysit a Dependabot dependency-bump PR all the way to merge: verify the author is the genuine Dependabot bot, diagnose and resolve any CI failure (excluding or fixing a breaking bump when needed)…
dyoshikawa/rulesync
Commit current changes, push to remote, and create or update a pull request.
dyoshikawa/rulesync
Manages git worktrees using git-worktree-runner (gtr). An agent skill from dyoshikawa/rulesync.
dyoshikawa/rulesync
Drive a pull request to a clean state and merge it: run the review-pr skill, fix every mid-or-above finding, and repeat until no mid-or-above findings remain, then merge.
dyoshikawa/rulesync
List open pull requests where the ball is in the author's court: CI is failing, review comments are unaddressed, or a maintainer question is awaiting the author's reply.
Categories
Cut a release end to end: use the draft-release skill to open the release PR and draft GitHub release, wait for CI to turn green, run the merge-pr skill to merge the release PR, then update the…. Goal Release is an agent skill from dyoshikawa/rulesync. Cut a release end to end: use the draft-release skill to open the release PR and draft GitHub release, wait for CI to turn green, run the merge-pr skill to merge the release PR, then update the Homebrew formula from the published release assets.
Goal Release fits situations like: the user wants to draft and merge a release in one go; triggers on the goal-release skill.
Run `npx skills add dyoshikawa/rulesync --skill goal-release -a claude-code`. Or copy the skill folder (.rulesync/skills/goal-release in dyoshikawa/rulesync) into .claude/skills/goal-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dyoshikawa/rulesync --skill goal-release -a codex`. Or copy the skill folder (.rulesync/skills/goal-release in dyoshikawa/rulesync) into .agents/skills/goal-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 dyoshikawa/rulesync --skill goal-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/goal-release, .gemini/skills/goal-release, .github/skills/goal-release and .opencode/skills/goal-release in your project.
Going by SKILL.md and its folder, Goal Release needs the command-line tools its instructions call (gh, git, pnpm and brew).
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.
Goal 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 2k tokens (SKILL.md is roughly 7.9k 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 Goal Release: Mole CLI Release Flow (tw93/Mole, 70k stars), Release (eugene1g/agent-safehouse, 2.1k stars), Release (trasta298/keifu, 810 stars) and Release Version (GOODBOY008/r-shell, 153 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dyoshikawa (a GitHub user) maintains it in dyoshikawa/rulesync, which has 1,509 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 9, 2026.
Source: dyoshikawa/rulesync on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.