Ccb GitHub
SeemSeam/claude_codex_bridge
Maintain this CCB project's GitHub-facing release and npm publication surface.
Automated version bumping and release workflow for Clipboard Desktop.
$ npx skills add muutot/Clipboard --skill version-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install muutot/Clipboard version-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/muutot/Clipboard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/version-release .claude/skills/version-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 "version-release" agent skill from https://github.com/muutot/Clipboard/tree/core/skills/version-release into .claude/skills/version-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "version-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/muutot/Clipboard/tree/core/skills/version-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 muutot/Clipboard --skill version-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install muutot/Clipboard version-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/muutot/Clipboard.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/version-release .agents/skills/version-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 "version-release" agent skill from https://github.com/muutot/Clipboard/tree/core/skills/version-release into .agents/skills/version-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "version-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 muutot/Clipboard --skill version-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install muutot/Clipboard version-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/muutot/Clipboard.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/version-release .cursor/skills/version-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 "version-release" agent skill from https://github.com/muutot/Clipboard/tree/core/skills/version-release into .cursor/skills/version-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "version-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/muutot/Clipboard.git --path skills/version-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 muutot/Clipboard --skill version-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install muutot/Clipboard version-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/muutot/Clipboard.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/version-release .gemini/skills/version-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 "version-release" agent skill from https://github.com/muutot/Clipboard/tree/core/skills/version-release into .gemini/skills/version-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "version-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 muutot/Clipboard version-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 muutot/Clipboard --skill version-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/muutot/Clipboard.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/version-release .github/skills/version-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 "version-release" agent skill from https://github.com/muutot/Clipboard/tree/core/skills/version-release into .github/skills/version-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "version-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 muutot/Clipboard --skill version-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 muutot/Clipboard version-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/muutot/Clipboard.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/version-release .opencode/skills/version-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 "version-release" agent skill from https://github.com/muutot/Clipboard/tree/core/skills/version-release into .opencode/skills/version-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "version-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.
version-releaseAutomated version bumping and release workflow for Clipboard Desktop.
Version Release is an agent skill from muutot/Clipboard. Automated version bumping and release workflow for Clipboard Desktop. Use when the user asks to bump the version, release a new version, or regenerate a release. Supports semantic version bumping (patch/minor/major) and specific version targets.
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts (for example `agents/openai.yaml` and `release_template.md`).
It sits in Development. It works with GitHub Actions and npm. The repository describes itself as: High performance·Local first·Full platform clipboard manager. The licence is AGPL-3.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0b01b6c. 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.
Ships 4 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodegitnpmpipnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, npm, pip and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GITCODE_TOKENGITHUB_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Version Release loads about 3.4k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 1,522 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); the scripts in this folder are not scanned.
The full file from muutot/Clipboard at commit 0b01b6c, republished under its AGPL-3.0 licence (© muutot). 1,522 words, ~3,431 tokens.
.claude/skills/version-release/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Start this skill when the user says any of:
The version tag vx.x.x may ONLY ever be bound to the release commit
🔖 chore[release]: bump version to x.x.x. Never bind it to any other commit —
not a fix, not a chore, not a merge. The tag is what triggers the GitHub Actions
release build, so a tag on a non-release commit ships an unversioned, unverified
tree and can publish broken artifacts.
Every release, every re-tag, every regenerate — this rule is non-negotiable:
🔖 chore[release]: bump version to x.x.x.git rev-parse <tag>^{} must resolve to a
commit whose subject is 🔖 chore[release]: bump version to x.x.x
(git log -1 --pretty=%s <tag>^{}).Before any version bump or release (including --regenerate), apply the release gate to the final tree, and commit any formatting-only changes as a separate, prior 🎨 style commit.
The release flow does not build anything locally — building is performed remotely by the GitHub Actions release.yml workflow when the v* tag is pushed. The local gate therefore runs format + check + lint (no build):
npm run format:check — prettier (format:prettier:check) + rustfmt (format:rust:check)npm run check — svelte-check type checkingnpm run lint:rust — cargo clippy -D warnings⚠️ The extreme-release build (fat LTO, opt-level 3, codegen-units 1) is GitHub Actions-only and must NEVER be run locally. It is enabled solely by the environment variables
CARGO_PROFILE_RELEASE_LTO,CARGO_PROFILE_RELEASE_OPT_LEVEL, andCARGO_PROFILE_RELEASE_CODEGEN_UNITSset in.github/workflows/release.ymlwhen thev*tag is pushed. The local[profile.release]insrc-tauri/Cargo.tomlis intentionally fast and unoptimized (opt-level 0, codegen-units 256) — do not override it locally, and never run the extreme build by hand.
If any diffs appear, apply them (npm run format:prettier / npm run format:rust), then re-run the gate. Commit all formatting-only changes in a single 🎨 style[...]: apply formatting commit before the release commit.
The release script bumps the version first (Pass 1), so run the gate on the code before starting, then re-check
RELEASE.mdafter curating it (see Pass 2 note below).
Before running the release script, ensure that every other change has already been committed separately.
The release commit (🔖 chore[release]: bump version to x.x.x) must only contain:
package.jsonsrc-tauri/tauri.conf.jsonsrc-tauri/Cargo.tomlsrc-tauri/Cargo.lockCHANGELOG.mdRELEASE.mdAny change to scripts, skills, references, tests, or other source files must be committed before the release. The release script's git diff --name-only may pick up unrelated dirty files — verify the staged diff before allowing the commit.
Run:
node skills/version-release/scripts/release.mjs <version>The script does the following:
| Step | What |
|---|---|
| 1 | Bump version in package.json, tauri.conf.json, Cargo.toml |
| 2 | Generate CHANGELOG.md from commits since last tag |
| 3 | Check RELEASE.md — if stale, prints instructions and exits cleanly |
| 4 | Commit version files + CHANGELOG.md + RELEASE.md |
| 5 | Create git tag vx.x.x |
| 6 | Local-only: no remote push. Print the git push commands for the user to run manually |
The script is idempotent: re-running with the same version skips already-done steps, and
changelog.mjs replaces this version's existing ## <version> ( section instead of prepending a
second copy of it, so running both passes leaves exactly one section. It also accepts both
[scope] and (scope) commit subjects and warns on a subject or type it cannot map, rather
than dropping the commit silently.
node skills/version-release/scripts/release.mjs <version>Steps 1–2 run, then Step 3 detects stale RELEASE.md and exits.
Read CHANGELOG.md and use skills/version-release/release_template.md as a format reference:
- **Feature description** — detail | [`hash`](https://github.com/muutot/Clipboard/commit/hash)RELEASE.mdDo NOT commit — Pass 2 will include RELEASE.md in the release commit automatically.
Re-run the same command — already-bumped steps skip, RELEASE.md check passes:
node skills/version-release/scripts/release.mjs <version>Steps 3–6 run: check, commit, tag. Remote push is the user's manual step (the script never pushes).
Re-check formatting after curation. RELEASE.md is written after the pre-release gate. Before Pass 2, run npm run format:prettier:check (or npm run format:prettier -- RELEASE.md to fix) so the freshly curated RELEASE.md is prettier-clean. Fix any diff (npx prettier --write RELEASE.md), then commit it either as a separate 🎨 style[release] commit or folded into the release commit — do not push a release whose RELEASE.md fails the format gate.
node skills/version-release/scripts/release.mjs patch # 0.1.0 → 0.1.1
node skills/version-release/scripts/release.mjs minor # 0.1.0 → 0.2.0
node skills/version-release/scripts/release.mjs major # 0.1.0 → 1.0.0Same two-pass flow applies.
Re-releases the current version. The first step must delete the old release commit + tag for that version before re-running the normal flow:
node skills/version-release/scripts/release.mjs --regenerate <version>The script locates the old release commit by the local tag or by scanning history (including remote-tracking refs) for bump version to <version>, then:
HEAD, drops it with the standard single-commit removal git rebase --committer-date-is-author-date --onto <parent> <commit> <branch>, which replays later commits onto the old release commit's parent while --committer-date-is-author-date preserves every surviving commit's original timestamp. Before rewriting, it requires a clean working tree, backs the branch tip up to refs/backup/pre-release-delete-<sha>, warns when a replayed commit's author date differs from its committer date, and on failure aborts the rebase and restores the previous tip;--force-with-lease.The normal flow then creates a fresh changelog, commit, and tag. Verify the deletion actually happened before Pass 1: git log --oneline <branch> | findstr "bump version to <version>" should show nothing, and the old tag should be gone. The pre-delete tip is kept as a recovery backup at refs/backup/pre-release-delete-<sha> (so the old release commit may still appear under git log --all); the script's own history scan excludes refs/backup/*, which is why re-running --regenerate for Pass 2 reports no old release commit.
node skills/version-release/scripts/release.mjs --dry-run <version>Previews the process without committing, tagging, or pushing (the script never pushes anyway).
These can be run independently:
node skills/version-release/scripts/version.mjs <version> # bump version only
node skills/version-release/scripts/version.mjs patch|minor|major # semantic bump
node skills/version-release/scripts/version.mjs --current # show current version
node skills/version-release/scripts/changelog.mjs # generate changelog since last tag
node skills/version-release/scripts/changelog.mjs --all # full history changelog
node skills/version-release/scripts/changelog.mjs --from v0.1.0 # from specific tag
node skills/version-release/scripts/changelog.mjs --preview # preview without writingskills/version-release/scripts/delete-commit.mjs drops a single commit from the current branch by rewriting history locally (the same mechanism --regenerate uses internally). It is local-only — it never touches the remote.
node skills/version-release/scripts/delete-commit.mjs <commit> # delete <commit> (rewrites history)
node skills/version-release/scripts/delete-commit.mjs --dry-run <commit> # preview replay range; no changes
node skills/version-release/scripts/delete-commit.mjs <commit> --branch <name> # target a non-current branchBehavior:
<commit> does not exist or is not an ancestor of the branch tip.refs/backup/pre-delete-<sha> before rewriting, so it can be restored with git update-ref refs/heads/<branch> refs/backup/pre-delete-<sha>.<commit> with --committer-date-is-author-date (timestamps preserved when author date == committer date; warns otherwise).--regenerate, it changes SHAs.RELEASE.md)RELEASE.md is the canonical release body for GitHub Releases. It is manually curated by the LLM during each release, following the format in skills/version-release/release_template.md.
Pushing the tag (done manually by the user) triggers CI/CD which reads RELEASE.md automatically as the GitHub Release body.
The release script is local-only — it performs no remote operations. After a successful run, report:
vx.x.x)When the release commit is pushed to the main branch (manually, by the user), it does not trigger the CI workflow:
ci.yml ignores pushes that only touch release files (package.json, src-tauri/tauri.conf.json, src-tauri/Cargo.toml, src-tauri/Cargo.lock, CHANGELOG.md, RELEASE.md).
Pushing a v* tag triggers .github/workflows/release.yml which:
releaseDraft: false) with artifacts using RELEASE.md as the release bodyThe separate .github/workflows/sync-gitcode.yml workflow mirrors the published release body + assets to GitCode via scripts/sync_release.py. It is decoupled from release.yml and is triggered manually (workflow_dispatch with the release tag) after a release is published, so it can be run once all assets are attached. It requires repo secret GITCODE_TOKEN (rotate immediately if ever committed in plaintext); optional GITCODE_OWNER overrides the default owner. All actions are pinned to commit SHAs and its Python dependencies come from the pinned scripts/requirements-sync.txt (installed with pip install -r) rather than an unpinned pip install, because this job holds GITCODE_TOKEN and GITHUB_TOKEN.
| File | Key |
|---|---|
package.json | .version |
src-tauri/tauri.conf.json | .version |
src-tauri/Cargo.toml | version |
All three are updated atomically by skills/version-release/scripts/version.mjs.
If the release script fails mid-way:
git checkout -- . to revert config filesgit reset --soft HEAD~1 then re-runRelease commits use the gitmoji convention:
🔖 chore[release]: bump version to x.x.x© muutot, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts) in skills/version-release of muutot/Clipboard.
Open the folder on GitHubat commit 0b01b6c
Version 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 |
|---|---|---|---|---|---|---|
| Version Release this skillmuutot/Clipboard | 117 | — | ~3.4k | Automated safety check: Pass | AGPL-3.0 | |
| Ccb GitHubSeemSeam/claude_codex_bridge | 3.6k | — | ~4.9k | Automated safety check: Pass | Custom licence | |
| ZCF Release AutomationUfoMiao/zcf | 6.1k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Cline CLI Release Publishercline/cline | 70k | — | ~3.4k | Automated safety check: Warn | Apache-2.0 | |
| Linea Dependency MaintenanceConsensys-Incorporated/linea-attestation-registry | 177 | 1 repos | ~3.7k | Automated safety check: Warn | MIT | |
| Codexhost ReleaseBytePioneer-AI/codex-host | 2.7k | — | ~998 | Automated safety check: Pass | LGPL-3.0 |
SeemSeam/claude_codex_bridge
Maintain this CCB project's GitHub-facing release and npm publication surface.
UfoMiao/zcf
Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.
cline/cline
Walks through releasing the Cline CLI package to npm: release notes, version bump, matching git tag, and either the GitHub workflow or a local publish.
Consensys-Incorporated/linea-attestation-registry
Safely plan and execute dependency maintenance for JavaScript/TypeScript (npm, pnpm) and GitHub Actions, including npm lockfiles, pnpm workspaces, catalogs, overrides, SHA-pinned action versions…
BytePioneer-AI/codex-host
发布 codexhost 正式版、预览版,编写或确认 Release Notes,检查发布 CI,暂停、恢复或排查发布。支持正常正式发布,以及 npm latest + GitHub Prerelease、不给现有用户更新提示的预览发行。不用于普通代码提交或 Harness CLI 更新。
klaudworks/universal-skills
Releases an npm package by committing changes, bumping the version with npm version, pushing the tag and checking the GitHub Actions publish.
muutot/Clipboard
Develop and maintain the Clipboard Desktop repository. An agent skill from muutot/Clipboard.
Works with
Categories
Automated version bumping and release workflow for Clipboard Desktop. Version Release is an agent skill from muutot/Clipboard. Automated version bumping and release workflow for Clipboard Desktop.
Version Release fits situations like: the user asks to bump the version; release a new version; regenerate a release.
Run `npx skills add muutot/Clipboard --skill version-release -a claude-code`. Or copy the skill folder (skills/version-release in muutot/Clipboard) into .claude/skills/version-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add muutot/Clipboard --skill version-release -a codex`. Or copy the skill folder (skills/version-release in muutot/Clipboard) into .agents/skills/version-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 muutot/Clipboard --skill version-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/version-release, .gemini/skills/version-release, .github/skills/version-release and .opencode/skills/version-release in your project.
Going by SKILL.md and its folder, Version Release needs JavaScript for the scripts in its folder, the command-line tools its instructions call (node, git, npm, pip and npx) and credentials named GITCODE_TOKEN and GITHUB_TOKEN. Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use git, npm, pip and npx, 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Version Release is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k 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 Version Release: Ccb GitHub (SeemSeam/claude_codex_bridge, 3.6k stars), ZCF Release Automation (UfoMiao/zcf, 6.1k stars), Cline CLI Release Publisher (cline/cline, 70k stars) and Linea Dependency Maintenance (Consensys-Incorporated/linea-attestation-registry, 177 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
muutot (a GitHub user) maintains it in muutot/Clipboard, which has 117 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.
Source: muutot/Clipboard on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.