Maintain this CCB project's GitHub-facing release and npm publication surface. Use when preparing, publishing, auditing, or fixing CCB releases; updating README.md, README/zh.md, localized README files, CHANGELOG.md, VERSION, package.json, GitHub release notes/assets, repository description/topics, npm registry state, or GitHub Actions release/test status.
72
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Treat GitHub as the user-facing product page. A release is not done until local version files, npm package metadata, both READMEs, changelog, GitHub Release, release assets, npm registry state, and Actions status all agree.
GitHub's repository homepage renders README from the default branch, not from the latest release tag. If release documentation is prepared on a feature or hotfix branch, merge that branch to the default branch before calling the homepage updated.
Use repository SeemSeam/claude_codex_bridge unless the user explicitly gives a different repo.
For CCB releases, npm publishing is part of the release surface by default. If package.json, npm wrapper scripts, README npm install snippets, or .github/workflows/npm-publish.yml are missing or stale during release preparation, create or repair them before the release commit and before creating or pushing the release tag. Do not create a tag first and add npm publish support in a later branch commit.
When the user asks for a final release or homepage result, do the git/GitHub work instead of only describing it:
Keep the checker read-only. Git writes, GitHub Release writes, workflow reruns, and tag operations are explicit agent actions done in the sequence above, not hidden inside the checker.
From the CCB repo root, run the bundled checker before and after release work:
CHECKER="dev_tools/skills/ccb-github/scripts/check_release_state.py"
python "$CHECKER" --phase prepare --repo SeemSeam/claude_codex_bridge
python "$CHECKER" --phase published --repo SeemSeam/claude_codex_bridge --wait-seconds 1800The checker is read-only. It catches mechanical drift, but still manually inspect the top of README.md and README/zh.md because stale "What's New" prose can be semantically wrong even when version numbers are correct.
Use --phase dev for ordinary CCB development or maintainer tooling changes that are not intended to create a package release. Use --wait-seconds 0 for lightweight commit/push work where the user did not ask to wait for GitHub Actions:
python "$CHECKER" --phase dev --repo SeemSeam/claude_codex_bridge --wait-seconds 0--phase dev checks that the worktree is clean, the branch is pushed, and the change set is classified as development-only vs package/release-impacting. When --wait-seconds is greater than 0, it also waits for required GitHub workflows.
--phase published checks both release state and homepage state: GitHub latest release, release assets, SHA256SUMS, release workflows, branch validation workflows, and README.md / README/zh.md as rendered from the repository default branch. Use --wait-seconds 1800 immediately after tagging so the checker waits for Release Artifacts and uploaded assets instead of reporting transient failures. The checker does not replace npm registry verification; for CCB releases, also verify npm view @seemseam/ccb version dist-tags --json.
--phase prepare; fix every FAIL before creating a tag. Also inspect the npm publication surface and auto-complete missing package.json, npm wrapper scripts, README npm install snippets, and .github/workflows/npm-publish.yml before tagging.--phase published --wait-seconds 1800; fix every FAIL before reporting success.--phase dev.--phase prepare so version badges, release notes, install URLs, and memory wording stay aligned.--phase dev --wait-seconds 0 after commit/push; use a positive wait only when the user asks for CI verification or the change is risky enough to need it.Use this for CCB development changes, including dev_tools, tests, docs, CI, and maintainer workflows.
dev_tools/, tests, docs, and CI-only checks usually do not require a package release.lib/, ccb, bin/, installer scripts, release build scripts, VERSION, package.json, .github/workflows/npm-publish.yml, README release notes, or CHANGELOG.md may affect users and must be considered for release.python dev_tools/skills/ccb-github/scripts/check_release_state.py --phase dev --repo SeemSeam/claude_codex_bridge --wait-seconds 0--phase dev reports runtime/package changes and the user wants a published package, switch to the Release Preparation Checklist and Publish Sequence, including npm auto-completion.--phase dev is intentionally strict about local and push state: uncommitted changes or unpushed commits mean the development result is not final yet. Red or in-progress workflows block completion only when this skill is explicitly waiting for CI.
Default to the smallest verification set that gives meaningful signal for the files changed. Do not run full-suite tests for small edits unless the user asks, the change crosses shared runtime boundaries, or targeted checks reveal risk.
git diff --check; optionally run check_release_state.py --phase dev --wait-seconds 0 after commit/push.quick_validate.py <skill-dir> when available and compare source/active copies with diff -ru, excluding caches; do not run pytest for skill-only edits.bash -n install.sh or the relevant shell syntax check, plus focused installer tests that cover the changed behavior.lib/, ccbd, provider runtime, startup, tmux, or shared behavior edits: run targeted pytest for the touched module and adjacent contract tests; broaden only when the change affects cross-module behavior.node --check on changed npm wrapper scripts, npm pack --dry-run, and a local tarball install smoke when the package wrapper changed.Update these files together:
VERSIONccb.py VERSION = "..." (or legacy Python-in-ccb layouts)package.json "version": "..."bin/ when package behavior changes or the package is being introduced..github/workflows/npm-publish.ymlCHANGELOG.mdREADME.mdREADME/zh.mdREADME requirements:
CHANGELOG.md section and ensure it covers the most important user-facing bullets..ccb/ccb.config behavior..ccb/ccb_memory.md is the project-wide shared memory document.CCB.md support or mention it as a current feature.npm install -g @seemseam/ccb when npm is the recommended install path.npm auto-completion requirements:
package.json is absent, add the root npm wrapper package instead of skipping npm.ccb, ask, autonew, and ctx-transfer so the npm package installs the intended GitHub Release payload..github/workflows/npm-publish.yml is absent, add the Trusted Publishing workflow before tagging.git show HEAD:package.json >/dev/null
git show HEAD:.github/workflows/npm-publish.yml >/dev/nullnpm requirements:
package.json version must match VERSION, ccb VERSION, and the release tag without the leading v.package.json must publish @seemseam/ccb as a public package with CLI bins for ccb, ask, autonew, and ctx-transfer..github/workflows/npm-publish.yml must exist and use npm Trusted Publishing/OIDC: GitHub-hosted runner, Node 24, permissions: id-token: write, no NODE_AUTH_TOKEN, and npm publish --access public.SeemSeam, repository claude_codex_bridge, workflow filename npm-publish.yml, blank environment, and allowed action npm publish, stop and report the registry-side blocker.GitHub repo homepage requirements:
gh repo view SeemSeam/claude_codex_bridge --json description,homepageUrl,repositoryTopics,latestReleaseUse this full local gate only for release/tag/package work, or when runtime/package changes are broad enough that targeted tests are not sufficient. Run at least:
pytest -q
python -m compileall -q lib ccb
git diff --check
npm pack --dry-run
python scripts/build_linux_release.py --allow-dirty --output-dir dist-release-localFor startup, tmux, ccbd, provider auth, or release asset changes, add the relevant targeted tests or smoke commands before publishing.
Use this when the latest release exists but GitHub's repository homepage is stale:
README.md, README/zh.md, GitHub metadata, or dev_tools release checks.python dev_tools/skills/ccb-github/scripts/check_release_state.py --phase prepare --repo SeemSeam/claude_codex_bridgegit checkout main
git pull --ff-only origin main
git merge --no-ff <maintenance-branch>
git push origin mainTests, CCBD Real Platform Smoke, and Cross-Platform Compatibility Test.python dev_tools/skills/ccb-github/scripts/check_release_state.py --phase published --repo SeemSeam/claude_codex_bridge --wait-seconds 1800Do not create a new release tag for README-only homepage maintenance unless runtime/package contents changed and the user explicitly wants a new release.
Use this order:
README.md / README/zh.md, npm package metadata/wrapper scripts, and npm publish workflow. If npm files are missing, add them now instead of deferring.git checkout main
git pull --ff-only origin main
git merge --no-ff <release-branch>
git push origin mainpackage.json and .github/workflows/npm-publish.yml; if not, stop and return to step 1.vX.Y.Z from the intended release commit.vX.Y.Z.Release Artifacts upload assets.Npm Publish publish @seemseam/ccb@X.Y.Z through npm Trusted Publishing.Release Artifacts is green for the tag or a valid workflow_dispatch recovery on the release tag commit, confirm Npm Publish is green for the release tag commit, and confirm branch validation workflows for the release commit are green or consciously accepted as warnings:TestsCCBD Real Platform SmokeCross-Platform Compatibility Testccb-linux-x86_64.tar.gzccb-macos-universal.tar.gzSHA256SUMSnpm view @seemseam/ccb version dist-tags --jsongh api 'repos/SeemSeam/claude_codex_bridge/contents/README.md?ref=main' --jq .content | base64 -d | rg 'version-|vX.Y.Z'The current workflow expects the Release page to exist before uploading assets. If Release Artifacts fails with release not found, create the Release and rerun the workflow. When using manual workflow_dispatch, select the release tag/ref or otherwise ensure the run's headSha matches the release tag commit; the checker does not accept unrelated manual runs.
The published checker must pass after this sequence. It verifies local push state, tag presence, GitHub latest release, release assets, SHA256SUMS, default-branch README, and whether the default branch contains the release tag.
The npm registry check must also pass after this sequence; latest must resolve to the same version as the GitHub Release.
Use the checker output first; each FAIL includes a suggested fix. Common cases:
gh release create vX.Y.Z --repo SeemSeam/claude_codex_bridge --title vX.Y.Z --notes-file <notes-file>, then rerun Release Artifacts.workflow_dispatch: run it on the release tag/ref or otherwise ensure the run headSha matches the tag commit; unrelated manual runs are not accepted.Release Artifacts workflow for the tag, then verify ccb-linux-x86_64.tar.gz, ccb-macos-universal.tar.gz, and SHA256SUMS.package.json, npm wrapper scripts, README npm snippets, and .github/workflows/npm-publish.yml in the release commit, rerun local verification, then tag.@seemseam/ccb with owner SeemSeam, repository claude_codex_bridge, workflow filename npm-publish.yml, blank environment, and allowed action npm publish; then rerun Npm Publish for the release tag.package.json.gh auth login, then rerun the published check.Run:
gh release view vX.Y.Z --repo SeemSeam/claude_codex_bridge --json tagName,url,assets
gh run list --repo SeemSeam/claude_codex_bridge --limit 10
npm view @seemseam/ccb version dist-tags --json
python dev_tools/skills/ccb-github/scripts/check_release_state.py --phase published --repo SeemSeam/claude_codex_bridge --wait-seconds 1800
git status --short --branchReport only the useful facts: version, commit/tag, release URL, key fixes, test status, artifact status, and whether the worktree is clean.
Do not call the release complete if any of these are true:
README.md or README/zh.md still shows an old current version or stale current-release highlights.VERSION, ccb, changelog, badges, or release notes disagree.package.json version differs from VERSION, ccb VERSION, or the release tag.package.json or .github/workflows/npm-publish.yml.SHA256SUMS does not contain checksum entries for every required tarball asset.latest does not resolve to @seemseam/ccb@X.Y.Z after an npm-enabled release.Npm Publish failed, is missing for a tag that should publish npm, or ran against a different commit than the release tag.main still shows an old current version.9f3727c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.