Guarded Git Commit and Push
jerrywu001/cc-sessions-viewer
Commits and pushes only on an explicit request, pulling first, running the project's CI checks locally, and stopping cold on any conflict or failure.
A skill your agent uses when the user asks to release a new version, ship a build, or publish a Skill Zoo release.
$ npx skills add luochang212/skill-zoo --skill app-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install luochang212/skill-zoo app-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/luochang212/skill-zoo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/app-release .claude/skills/app-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 "app-release" agent skill from https://github.com/luochang212/skill-zoo/tree/main/skills/app-release into .claude/skills/app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-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/luochang212/skill-zoo/tree/main/skills/app-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 luochang212/skill-zoo --skill app-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install luochang212/skill-zoo app-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luochang212/skill-zoo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/app-release .agents/skills/app-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 "app-release" agent skill from https://github.com/luochang212/skill-zoo/tree/main/skills/app-release into .agents/skills/app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-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 luochang212/skill-zoo --skill app-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install luochang212/skill-zoo app-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luochang212/skill-zoo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/app-release .cursor/skills/app-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 "app-release" agent skill from https://github.com/luochang212/skill-zoo/tree/main/skills/app-release into .cursor/skills/app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-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/luochang212/skill-zoo.git --path skills/app-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 luochang212/skill-zoo --skill app-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install luochang212/skill-zoo app-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luochang212/skill-zoo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/app-release .gemini/skills/app-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 "app-release" agent skill from https://github.com/luochang212/skill-zoo/tree/main/skills/app-release into .gemini/skills/app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-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 luochang212/skill-zoo app-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 luochang212/skill-zoo --skill app-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/luochang212/skill-zoo.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/app-release .github/skills/app-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 "app-release" agent skill from https://github.com/luochang212/skill-zoo/tree/main/skills/app-release into .github/skills/app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-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 luochang212/skill-zoo --skill app-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 luochang212/skill-zoo app-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luochang212/skill-zoo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/app-release .opencode/skills/app-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 "app-release" agent skill from https://github.com/luochang212/skill-zoo/tree/main/skills/app-release into .opencode/skills/app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-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.
app-releaseA skill your agent uses when the user asks to release a new version, ship a build, or publish a Skill Zoo release.
App Release is an agent skill from luochang212/skill-zoo. Use when the user asks to release a new version, ship a build, or publish a Skill Zoo release. Also use when a tag push results in Homebrew 404 errors or missing artifact failures.
Its SKILL.md is about 2.3k 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, Rust, Git and Tauri. The repository describes itself as: All-in-One Desktop Agent Skills Utility. Welcome to the Skill Zoo, where all your skills live! The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 084316e. 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:
gitbuncargoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use 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.
App Release loads about 2.3k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 1,087 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 luochang212/skill-zoo at commit 084316e, republished under its MIT licence (© luochang212). 1,087 words, ~2,302 tokens.
.claude/skills/app-release/SKILL.md (or your agent's skills folder).Release is done by pushing a v* tag. CI validates the release metadata, builds all platforms, creates a GitHub Release, and then updates the website version and Homebrew cask. Manual steps: update the changelog and version files, commit them together, then tag and push. The workflow is asynchronous: after a successful tag push, report that the release was triggered; do not wait for CI unless the user explicitly asks.
Announce at start: "I'm using the release skill to ship a new version."
digraph when_release {
"User asks to release/ship/publish?" [shape=diamond];
"Use this skill" [shape=box];
"Homebrew 404 or artifact-not-found after a tag push?" [shape=diamond];
"Use this skill" [shape=box];
"Pre-release checks (code review, QA)?" [shape=diamond];
"Not this skill — use requesting-code-review" [shape=box];
"User asks to release/ship/publish?" -> "Use this skill" [label="yes"];
"User asks to release/ship/publish?" -> "Homebrew 404 or artifact-not-found after a tag push?" [label="no"];
"Homebrew 404 or artifact-not-found after a tag push?" -> "Use this skill" [label="yes"];
"Homebrew 404 or artifact-not-found after a tag push?" -> "Pre-release checks (code review, QA)?" [label="no"];
"Pre-release checks (code review, QA)?" -> "Not this skill — use requesting-code-review" [label="yes"];
}Use when:
create-release job failed to find artifactsDon't use for:
| Step | Command |
|---|---|
| Check existing tags | git tag --sort=-v:refname | head -5 |
| Prerequisites (in order) | fmt → lint:rs → test → typecheck → lint → format:check → status |
| Check Rust formatting | cargo fmt --check --manifest-path src-tauri/Cargo.toml |
| Check Rust lint | bun run lint:rs |
| Check TypeScript types | bun run typecheck |
| Check frontend lint | bun run lint |
| Check frontend formatting | bun run format:check |
| Check uncommitted changes | git status --short |
| Tag and push | git push origin main && git tag v<VERSION> && git push origin v<VERSION> |
All file changes (CHANGELOG, Cargo.toml, Cargo.lock, package.json) are made and committed together in a single commit. Do not commit after each step. (docs/version.json is updated by CI post-release.)
Ask the user. Check git tag --sort=-v:refname | head -5 for context. Version must start with v (only v* tags trigger CI).
Add a new version section before the previous release entry:
## [X.Y.Z] — YYYY-MM-DDUse today's date. Group changes under Added, Changed, Fixed headings. Review commits since the last tag with git log --oneline v<LAST>..HEAD to ensure nothing is missed.
Do NOT commit yet — all changes go into one commit in Step 5.
After writing the changelog, decide whether this release changes the desktop-owned local protocol. Desktop is the source of truth for local state; the CLI is an adjunct control surface and must follow the desktop protocol.
Use changed paths as review prompts, not automatic gates. Relevant prompts include desktop persistence structs, archive/restore behavior, local state paths or shapes, schema versions, and CLI protocol read/write code. Trigger the protocol gate only when the release changes desktop-owned local state shape, paths, schema versions, lock/archive write semantics, or user-visible compatibility/migration behavior.
If there is no protocol impact, note it internally and continue. Do not add "no impact" lines to CHANGELOG or commit messages.
If there is protocol impact, verify before continuing:
AGENTS.md guidance still reflects the desktop-owned protocol relationship.docs/local-protocol.md reflects the current desktop protocol.fixtures/local-protocol/ represents the desktop protocol, not CLI implementation convenience.Update src-tauri/Cargo.toml and package.json with apply_patch so the instructions work consistently on macOS, Linux, and Windows agents. Both files use bare semver without the v prefix. Then regenerate Cargo.lock:
cargo check --manifest-path src-tauri/Cargo.tomlDo NOT update docs/version.json here — CI updates it automatically after the release is published.
Do NOT commit yet — all changes go into one commit in Step 5.
Run all checks in order. If any fails, fix and re-run the full sequence until clean — formatting changes can cascade into lint results. Any fixes become part of the same release commit.
cargo fmt --check --manifest-path src-tauri/Cargo.toml — run cargo fmt --manifest-path src-tauri/Cargo.toml if diffs appear, then restart from herebun run lint:rs — fix all warnings; fmt may have introduced new onescargo test --manifest-path src-tauri/Cargo.toml --features test-helpers — fix any test failures before proceedingbun run typecheck — fix all type errors before proceedingbun run lint — fix any lint errors. Note: pre-existing issues unrelated to this release should be noted separately, not silently fixed in the release commitbun run format:check — run bun run format if diffs appear. CI also enforces this, but catching it locally avoids a broken tagRELEASE_BODY.md uses __VERSION__ and __COMMITS__ placeholders — never hardcoded version numbersgit status --short — only expected files (CHANGELOG.md, Cargo.toml, Cargo.lock, package.json, plus any fmt/clippy fixes) should appear. docs/version.json should NOT appear (CI updates it post-release). Anything else is a stray change that could slip into the release commit.When all checks pass, commit everything in a single commit:
git add CHANGELOG.md src-tauri/Cargo.toml src-tauri/Cargo.lock package.json
# also add any files modified by fmt/clippy fixes above
git commit -m "chore: release vX.Y.Z"CRITICAL: Pushing a
v*tag triggers CI to build and publish a release. Always tell the user explicitly that a push is about to happen and get their consent before executing. Never push without approval.
Note:
git pushtriggers.githooks/pre-push, which re-runs the full check suite and takes minutes — this is the intentional local gate that keeps a broken push from reaching CI. Run the push in the background or with a generous timeout; a foreground push can be killed mid-hook by the default command timeout, leavingmainunpushed and no tag.
git push origin main
git tag v0.1.2
git push origin v0.1.2Once the tag push succeeds, the release has been triggered. Report the pushed tag and commit, and stop without polling GitHub Actions unless the user asked to wait or monitor the release.
v* tag)| Job | Outcome |
|---|---|
| validate-release | Verifies the tag matches package versions and the changelog before expensive builds start |
| build | Builds every platform and refuses to upload an incomplete installer/updater artifact set |
| create-release | Creates or refreshes the GitHub Release, uploads all artifacts, then updates docs/version.json |
| update-homebrew | Runs after the GitHub Release exists, computes the DMG SHA256, and updates the cask |
docs/version.json is updated by CI after create-release succeeds — never manually. This ensures the download website only points to published artifacts.
| Mistake | Fix |
|---|---|
| Pushing tag before pushing main | Always git push origin main first. A tag on an unpushed commit won't trigger CI on the right SHA. |
| Hardcoding version in RELEASE_BODY.md | Use __VERSION__ placeholder. The CI substitutes it automatically. |
| Releasing with uncommitted changes | git status --short must be empty. Uncommitted changes won't be included in the release. |
Letting CI update docs/version.json | version.json is updated by CI's create-release job after artifacts are published. Do NOT update it manually in the release commit. |
Forgetting to regenerate Cargo.lock | After editing Cargo.toml version, run cargo check --manifest-path src-tauri/Cargo.toml to sync Cargo.lock. Editing the manifest alone does not update the lockfile. |
| Making multiple commits | All version updates (CHANGELOG, Cargo.toml, Cargo.lock, package.json) go into a single chore: release vX.Y.Z commit. Do not commit after each file. docs/version.json is not part of this commit — CI handles it. |
© luochang212, 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 skills/app-release of luochang212/skill-zoo.
Open the folder on GitHubat commit 084316e
App 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 |
|---|---|---|---|---|---|---|
| App Release this skillluochang212/skill-zoo | 116 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Guarded Git Commit and Pushjerrywu001/cc-sessions-viewer | 394 | — | ~603 | Automated safety check: Notes | MIT | |
| Releasetrasta298/keifu | 811 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Release VersionGOODBOY008/r-shell | 151 | — | ~4k | Automated safety check: Pass | MIT | |
| Agentbro Releaseshirenchuang/agentbro | 203 | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| Sveltekit Svelte5regisx001/Worklog | 261 | — | ~2.3k | Automated safety check: Pass | MIT |
jerrywu001/cc-sessions-viewer
Commits and pushes only on an explicit request, pulling first, running the project's CI checks locally, and stopping cold on any conflict or failure.
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.
shirenchuang/agentbro
A skill your agent uses when releasing AgentBro from this repository: merging dev/main, bumping versions, updating release notes, tagging, pushing, monitoring GitHub Actions, Homebrew cask…
regisx001/Worklog
Build, refactor, and debug features in SvelteKit + Svelte 5 runes.
devlint/GitWand
A skill your agent uses when the user wants to expose a Rust feature to the Vue frontend, add a Tauri IPC command, invoke something from a Vue component, or wire up any backend/frontend…
luochang212/skill-zoo
A skill your agent uses when publishing or preparing to publish an npm package from this repository, especially the Skill Zoo CLI package under packages/cli.
luochang212/skill-zoo
A skill your agent uses when adding software auto-update to a Tauri 2 desktop app, or when users ask about tauri-plugin-updater integration, app update checking, distinguishing installer vs portable…
luochang212/skill-zoo
分析和判断任何论断、报告、想法或需求的真实性、价值与做法。当用户说"这个 bug 是真的吗"、"分析一下这个问题/这个报告/这个说法"、"这个修复值得做吗"、"帮我看下这个建议靠不靠谱",或用户给出一个待评估的 bug 报告、文章摘录、设计提案时使用。先核验、复现、定级、讲清原理、判断是否值得做,而不是直接相信或直接动手改代码。也适用于评估"要不要重构"。
Categories
A skill your agent uses when the user asks to release a new version, ship a build, or publish a Skill Zoo release. App Release is an agent skill from luochang212/skill-zoo. Use when the user asks to release a new version, ship a build, or publish a Skill Zoo release.
App Release fits situations like: the user asks to release a new version; publish a Skill Zoo release; A tag push results in Homebrew 404 errors; missing artifact failures.
Run `npx skills add luochang212/skill-zoo --skill app-release -a claude-code`. Or copy the skill folder (skills/app-release in luochang212/skill-zoo) into .claude/skills/app-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add luochang212/skill-zoo --skill app-release -a codex`. Or copy the skill folder (skills/app-release in luochang212/skill-zoo) into .agents/skills/app-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 luochang212/skill-zoo --skill app-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/app-release, .gemini/skills/app-release, .github/skills/app-release and .opencode/skills/app-release in your project.
Going by SKILL.md and its folder, App Release needs the command-line tools its instructions call (git, bun and cargo).
SKILL.md contains no URLs. Its commands use 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.
App 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 2.3k tokens (SKILL.md is roughly 9.2k 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 App Release: Guarded Git Commit and Push (jerrywu001/cc-sessions-viewer, 394 stars), Release (trasta298/keifu, 811 stars), Release Version (GOODBOY008/r-shell, 151 stars) and Agentbro Release (shirenchuang/agentbro, 203 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
luochang212 (a GitHub user) maintains it in luochang212/skill-zoo, which has 116 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 2, 2026.
Source: luochang212/skill-zoo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.