Ccb GitHub
SeemSeam/claude_codex_bridge
Maintain this CCB project's GitHub-facing release and npm publication surface.
Publish a new Econumo release end-to-end — pick the version, dispatch the Publish Release GitHub workflow, watch the build, verify the published images, and replace the auto-generated GitHub release…
$ npx skills add econumo/econumo --skill publish-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install econumo/econumo publish-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/econumo/econumo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/publish-release .claude/skills/publish-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 "publish-release" agent skill from https://github.com/econumo/econumo/tree/main/.claude/skills/publish-release into .claude/skills/publish-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-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/econumo/econumo/tree/main/.claude/skills/publish-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 econumo/econumo --skill publish-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install econumo/econumo publish-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/econumo/econumo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/publish-release .agents/skills/publish-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 "publish-release" agent skill from https://github.com/econumo/econumo/tree/main/.claude/skills/publish-release into .agents/skills/publish-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-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 econumo/econumo --skill publish-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install econumo/econumo publish-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/econumo/econumo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/publish-release .cursor/skills/publish-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 "publish-release" agent skill from https://github.com/econumo/econumo/tree/main/.claude/skills/publish-release into .cursor/skills/publish-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-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/econumo/econumo.git --path .claude/skills/publish-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 econumo/econumo --skill publish-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install econumo/econumo publish-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/econumo/econumo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/publish-release .gemini/skills/publish-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 "publish-release" agent skill from https://github.com/econumo/econumo/tree/main/.claude/skills/publish-release into .gemini/skills/publish-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-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 econumo/econumo publish-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 econumo/econumo --skill publish-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/econumo/econumo.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/publish-release .github/skills/publish-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 "publish-release" agent skill from https://github.com/econumo/econumo/tree/main/.claude/skills/publish-release into .github/skills/publish-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-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 econumo/econumo --skill publish-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 econumo/econumo publish-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/econumo/econumo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/publish-release .opencode/skills/publish-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 "publish-release" agent skill from https://github.com/econumo/econumo/tree/main/.claude/skills/publish-release into .opencode/skills/publish-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-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.
publish-releasePublish a new Econumo release end-to-end — pick the version, dispatch the Publish Release GitHub workflow, watch the build, verify the published images, and replace the auto-generated GitHub release…
Publish Release is an agent skill from econumo/econumo. Publish a new Econumo release end-to-end — pick the version, dispatch the Publish Release GitHub workflow, watch the build, verify the published images, and replace the auto-generated GitHub release notes with a written summary in the house style. Use whenever the user asks to publish, cut, ship, or tag a new version/release (e.g. "publish v1.2.0", "cut a release", "ship what's on main"), or to rewrite/update the release notes of an existing release.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `evals/evals.json`).
It sits in Development, covering Changelog and release notes. It works with GitHub and GitHub Actions. The repository describes itself as: Econumo - A personal and family budgeting app with multi-currency support, shared accounts, and flexible budgets. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d8f415a. 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:
gitghdockerFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
econumo.comgithub.comFrom 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.
Publish Release loads about 2.8k tokens when it runs. Until then it costs about 118 tokens; SKILL.md has 1,217 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 econumo/econumo at commit d8f415a, republished under its MIT licence (© econumo). 1,217 words, ~2,758 tokens.
.claude/skills/publish-release/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Releases are cut by the Publish Release workflow (.github/workflows/publish-release.yml),
never by pushing tags or images locally. The workflow's branch input selects the source
branch (main by default; a release/* branch for hotfixes), and the dispatch itself always
uses --ref main so the workflow definition never comes from a stale branch. The workflow
does three things in order: creates the annotated git tag at the source branch's head (a
release from main also leaves a release/vX.Y.Z branch at the same commit — the base for
future hotfixes to that version; a release from a release/* source creates no branch,
because that source is itself the release branch), builds and pushes the multi-arch image
to ghcr.io/econumo/econumo, and creates the GitHub release with auto-generated notes
(changelogithub). Your job is to drive it, verify each artifact, and then replace the
auto-generated notes with notes a human would want to read.
Publishing is outward-facing and irreversible in practice (the tag and image are public immediately). Only run the dispatch when the user has explicitly asked for a release, and if they didn't name the version, propose one and get confirmation first.
git tag --sort=-creatordate | head -5 # last released version
gh release list --limit 3
git fetch origin main --quiet
git log vLAST..origin/main --oneline # everything the release will containPick the version by semver over that range: any feat: → minor bump; fixes/chores only →
patch. Sanity-check that main is what the user intends to release (no surprising or
half-landed work in the log) and that the latest run of the Go tests workflow on main is
green (gh run list --workflow=go-tests.yml --branch main --limit 1). Surface anything odd
before dispatching — after dispatch there is no undo.
For a hotfix of an older version the version is a patch bump of that line (bug in v1.1.1 → v1.1.2), regardless of what has since shipped from main.
For a normal release there is nothing to prepare — releasing from main auto-creates
release/vX.Y.Z at the released commit, so every version cut from main leaves a branch
behind as the base for future fixes.
For a hotfix, the workflow creates NO branch (the rule: release branches are only created for releases from main) — the new version's branch is prepared by hand. Copy the fixed version's release branch to the new version's name, then land the fixes on the copy:
git fetch origin --tags --quiet
# the new version's branch, copied from the fixed version's release branch:
git push origin origin/release/vA.B.C:refs/heads/release/vX.Y.Z
# or, if vA.B.C predates release branches, from its tag:
git push origin 'vA.B.C^{}':refs/heads/release/vX.Y.ZLand the fixes on release/vX.Y.Z — cherry-pick the fix commits from main onto a working
branch and PR it with that branch as the base (or push the cherry-picks directly if the
user prefers). The old branch release/vA.B.C stays untouched at its released commit, so
every release branch keeps pointing at exactly what its version shipped.
Confirm with git log origin/release/vX.Y.Z that the branch holds exactly the intended
fixes and nothing else from main. Note the test workflows ignore pushes to release/** —
only the PR route runs tests on the fixes, which is why it is the default; after a direct
push, run the suites locally before dispatching.
The fix must reach main too, or the next release from main regresses the bug. Release branches are never merged wholesale into main — they exist to pin what shipped; the fix flows back at the commit level. Default direction: the fix lands on main FIRST (normal PR) and is cherry-picked onto the release branch, so there is nothing to port back. Only when the fix has to be authored on the release branch directly (the code on main has diverged or the bug no longer exists there in the same shape) does it need a forward-port: after the release, cherry-pick it onto a working branch and PR it into main. Audit that nothing was left behind:
git log --no-merges --right-only --cherry-pick --oneline main...origin/release/vX.Y.ZEmpty output means every commit on the release branch is patch-equivalent to one on main; anything listed still needs a forward-port (or a deliberate decision that main doesn't need it — say so in the release notes).
# Normal release (source defaults to main):
gh workflow run publish-release.yml --ref main -f version=vX.Y.Z -f push_latest=true
# Hotfix (source = the NEW version's hand-prepared release branch):
gh workflow run publish-release.yml --ref main -f version=vX.Y.Z -f branch=release/vX.Y.Z--ref main; the branch input (default main) is what selects the
code being released.push_latest=true is the norm when releasing the newest version. The workflow enforces it:
latest only moves when the source branch is main or release/* AND the version is
higher than every existing tag. For a hotfix of an older line, leave it off — the guard
would reject it anyway. Leave it off for pre-releases/betas too.gh run list --workflow=publish-release.yml --limit 1) and watch it in the
background: gh run watch <run-id> --exit-status --interval 30 via a background Bash call.
The image build is the long step (several minutes) — use that time for step 4.The auto-generated notes are just a commit list; always replace them. Gather substance first:
the commit subjects give you the map, and gh pr view <n> --json title,body on the headline
PRs gives you accurate detail. Write for two audiences at once — self-hosters deciding
whether/how to upgrade, and API-client authors who need to know about wire changes.
House style (see the v1.0.0 release for the reference tone):
📖 **[Read the full release notes, with screenshots →](https://econumo.com/releases/vX.Y.Z/)**
<one-paragraph summary of the release's themes>
## What's new
- **Feature name** (#PR) — what it does and why a user cares, in plain language.
## Security hardening <- only if the release contains security fixes
- What was fixed, honestly stated; users deserve to know what was exposed.
## Fixes & improvements
- Grouped, user-visible phrasing (not commit subjects).
## Upgrading
Drop-in note for self-hosters (image pull + restart; migrations run on boot).
Call out anything that affects third-party API clients — the wire contract is
frozen for the bundled SPA, so any change to it (new/removed endpoints, field
format changes) MUST be listed here.
The `ghcr.io/econumo/econumo:latest` image tag points to this build; to pin the
exact version use `ghcr.io/econumo/econumo:vX.Y.Z`.
## Contributors
[@login](https://github.com/login) — ...
**Full changelog**: [vLAST...vX.Y.Z](https://github.com/econumo/econumo/compare/vLAST...vX.Y.Z)The first line is always the link to that version's page on econumo.com, which carries the
screenshots and the long-form write-up the GitHub body can't. The URL is always
https://econumo.com/releases/vX.Y.Z/ — write it without checking. The GitHub release ships
first and the site page follows, so the link is expected to 404 for a while; that is the
normal order, not a mistake to fix before publishing.
Contributors come from the actual range, not memory:
git fetch --tags --quiet # the tag was created REMOTELY by the workflow — fetch before ranging over it
git log vLAST..vX.Y.Z --format='%an <%ae>' | sort | uniq -c
git log vLAST..vX.Y.Z | grep -i 'co-authored-by' | sort | uniq -cGitHub no-reply emails (ID+login@users.noreply.github.com) embed the numeric user id;
resolve the CURRENT login with gh api user/<id> -q .login — old emails may carry a former
handle, and two emails with the same id are one person. Credit Claude co-author trailers as
a "with Claude (...) co-authoring" note rather than a separate contributor entry.
Draft the notes into a scratchpad file so gh release edit --notes-file can consume it.
After the workflow succeeds (all three jobs green):
gh release view vX.Y.Z --json tagName,isDraft,url # release exists, not draft
gh release edit vX.Y.Z --notes-file <notes.md> # replace notes
docker buildx imagetools inspect ghcr.io/econumo/econumo:vX.Y.Z | grep Digest
docker buildx imagetools inspect ghcr.io/econumo/econumo:latest | grep DigestThe workflow already aligns the GitHub "Latest" badge with push_latest — don't pass
--latest/--latest=false yourself. When push_latest was set, the two digests must
match — that is the proof latest actually moved; for a hotfix of an older line, verify
the OPPOSITE: latest must still point at the newest version's digest, not the hotfix's.
Report the release URL, the digest check, and a summary of what the notes say; invite the
user to adjust the wording, since the notes are public-facing prose.
v1.1.1 is released, main already carries v1.2.0-bound work, and a bug is found in v1.1.1:
# copy the fixed version's branch to the new version's name (from the v1.1.1
# tag instead if the release predates release branches):
git fetch origin --tags --quiet
git push origin origin/release/v1.1.1:refs/heads/release/v1.1.2
# land the fix on release/v1.1.2 (cherry-pick PR based on it), then:
gh workflow run publish-release.yml --ref main -f version=v1.1.2 -f branch=release/v1.1.2The workflow tags v1.1.2 at the branch head and creates no new branch — release/v1.1.2
already is the release branch; a future v1.1.3 starts by copying it the same way. No
push_latest: latest keeps pointing at the newest line, and the workflow keeps the
GitHub "Latest" badge off the hotfix release. Notes follow the normal flow with the range
v1.1.1...v1.1.2. Afterwards, verify the fix is also on main (it normally started there);
if it was authored on the release branch, forward-port it now — see step 2.
Skip steps 1–3. Build the notes exactly as in step 4 (fetch tags first if the tag isn't
local), then gh release edit <tag> --notes-file <notes.md>. Don't pass --latest unless
the release should also become the latest one.
© econumo, MIT. 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 1 other file in .claude/skills/publish-release of econumo/econumo.
Open the folder on GitHubat commit d8f415a
Publish 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 |
|---|---|---|---|---|---|---|
| Publish Release this skilleconumo/econumo | 112 | — | ~2.8k | Automated safety check: Pass | MIT | |
| 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 | |
| Codexhost ReleaseBytePioneer-AI/codex-host | 2.8k | — | ~998 | Automated safety check: Pass | LGPL-3.0 | |
| Kt Search Releasejillesvangurp/kt-search | 155 | — | ~1.2k | Automated safety check: Pass | MIT |
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.
BytePioneer-AI/codex-host
发布 codexhost 正式版、预览版,编写或确认 Release Notes,检查发布 CI,暂停、恢复或排查发布。支持正常正式发布,以及 npm latest + GitHub Prerelease、不给现有用户更新提示的预览发行。不用于普通代码提交或 Harness CLI 更新。
jillesvangurp/kt-search
A skill your agent uses when the user wants to cut, publish, tag, or create a GitHub release for kt-search, especially when the task includes version bumping, validating that commits are pushed…
jd-solanki/slidev-theme-dracula
Automate npm package publishing via GitHub Actions for single-package repos and independent monorepo packages, including bumpp version tags, GitHub release notes, trusted publishing, provenance, and…
econumo/econumo
Translate the Econumo app into a new language. An agent skill from econumo/econumo.
Works with
Categories
Publish a new Econumo release end-to-end — pick the version, dispatch the Publish Release GitHub workflow, watch the build, verify the published images, and replace the auto-generated GitHub release…. Publish Release is an agent skill from econumo/econumo. Publish a new Econumo release end-to-end — pick the version, dispatch the Publish Release GitHub workflow, watch the build, verify the published images, and replace the auto-generated GitHub release notes with a written summary in the house style.
Publish Release fits situations like: the user asks to publish; tag a new version/release (e.g.
Run `npx skills add econumo/econumo --skill publish-release -a claude-code`. Or copy the skill folder (.claude/skills/publish-release in econumo/econumo) into .claude/skills/publish-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add econumo/econumo --skill publish-release -a codex`. Or copy the skill folder (.claude/skills/publish-release in econumo/econumo) into .agents/skills/publish-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 econumo/econumo --skill publish-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/publish-release, .gemini/skills/publish-release, .github/skills/publish-release and .opencode/skills/publish-release in your project.
Going by SKILL.md and its folder, Publish Release needs the command-line tools its instructions call (git, gh and docker). Our summary lists: Docker.
SKILL.md names 2 domains. In commands or code: econumo.com and github.com; the agent is likely to contact these when it follows the instructions. 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.
Publish 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.8k tokens (SKILL.md is roughly 11k 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 Publish 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 Codexhost Release (BytePioneer-AI/codex-host, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
econumo (a GitHub organization) maintains it in econumo/econumo, which has 112 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 9, 2026.
Source: econumo/econumo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.