cap-go/capgo-skills/capgo-release-management

Claude Code and agent skill by cap-go/capgo-skills

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Runs Capgo OTA release operations with the CLI, including `bundle upload` (channels, delta, rollout, encryption, version bumps), `bundle compatibility` and `releaseType` checks, `channel add/set/promote/currentBundle/delete`, progressive rollouts and rollback, `bundle cleanup`, preview QR codes, and `key create/save` encryption setup. Use when the user ships, promotes, rolls back, or cleans up Capgo bundles, or hits upload errors such as "Version X already exists", "Bundle NOT compatible with <…

Install

npx vskill@latest install cap-go/capgo-skills/capgo-release-management

SKILL.md

Capgo Release Management

Ship, promote, roll back, and clean up Capgo OTA bundles from the CLI.

Facts below were checked against @capgo/cli 8.77 (October 2026). Every command accepts -a, --apikey. The appId can be omitted inside a Capacitor project.

When to Use

TRIGGER when:

  • The user uploads, lists, deletes, or cleans up bundles, or asks which version a channel serves.
  • The user creates or configures channels, promotes staging to production, starts, pauses, or rolls back a progressive rollout, or rolls back a bad release.
  • The user asks whether a change is OTA-safe (bundle compatibility, bundle releaseType).
  • The user sets up bundle encryption (key create, key save, --key-v2).

Do not use when:

  • The work is app-side updater code or config (notifyAppReady, autoUpdate, setChannel). Use capgo-live-updates.
  • A native binary is needed. Use capgo-native-builds.
  • The user manages organizations, members, 2FA, or API-key policy. Use capgo-organization-management.
  • The user wants an end-to-end release pipeline design. Use capgo-release-workflows.

Command Map

GoalCommand
Upload and linkbundle upload [appId] --path ./dist --channel production (comma-separate several channels)
Is it OTA-safe?bundle releaseType [appId] --channel production prints OTA or native
Detailed native diffbundle compatibility [appId] --channel production [--text]
What is livechannel currentBundle production [appId] --quiet
Promotechannel promote staging production [appId]
Roll backchannel set production [appId] --bundle <previous-version>
Rolloutbundle upload ... --rollout 10, then channel set ... --rollout-percentage 50 / --rollout-promote / --rollout-rollback
Create channelchannel add beta [appId] [--default] [--self-assign]
Channel policy`channel set <ch> --disable-auto-update major\minor\patch\metadata\none plus --ios/--android/--dev/--prod/--emulator/--device` toggles
Listbundle list [appId], channel list [appId]
Clean upbundle cleanup [appId] --bundle 1.0 --keep 3
Deletebundle delete <version> [appId], channel delete <ch> [appId]
Preview QRapp set [appId] --preview once, then get-qr [appId] --channel beta or bundle upload ... --qr-preview
Encryption keyskey create, key save --key ./.capgo_key_v2.pub, key delete_old
Custom zip / externalbundle zip [appId] --json, bundle encrypt <zip> <checksum>, bundle upload --external <url>

All of these are npx @capgo/cli@latest <command>. Commands that do not exist (they come from old docs or other tools): channel create, bundle revert, upload --sign, key verify, and a top-level capgo upload without bundle.

Procedure

1. Inspect first
bash
npx @capgo/cli@latest channel list com.example.app
npx @capgo/cli@latest channel currentBundle production com.example.app --quiet
npx @capgo/cli@latest bundle releaseType com.example.app --channel production

Report the current live version and the OTA/native verdict before you change anything. If the verdict is native, stop and hand off to capgo-native-builds (or the user's native pipeline).

2. Upload
bash
npm run build
npx @capgo/cli@latest bundle upload com.example.app --path ./dist --channel staging --comment "$(git rev-parse --short HEAD)"
  • The version comes from package.json unless you pass --bundle <semver>. It must be unique, greater than 0.0.0, and never a previously deleted version.
  • Use --delta for instant-apply apps. The CLI refuses delta uploads with more than 10,000 files. Use --no-delta in that case.
  • Use --fail-on-incompatible in CI. Use --accept-incompatible only when the JS guards missing plugins. These two flags and --ignore-metadata-check cannot be combined.
3. Promote and roll out
  • Promote: npx @capgo/cli@latest channel promote staging production com.example.app. It runs the same compatibility checks as channel set --bundle.
  • Gradual rollout: upload with --rollout <pct>, then watch the stats before you run --rollout-promote.
  • Only change which channel is the default (channel set <ch> --state default, or channel add --default) when the user explicitly wants to move production traffic.
4. Roll back
bash
npx @capgo/cli@latest bundle list com.example.app
npx @capgo/cli@latest channel set production com.example.app --bundle 1.4.2
# or, during a rollout:
npx @capgo/cli@latest channel set production com.example.app --rollout-rollback

Devices pick up the change on their next update check.

5. Encryption (optional, for sensitive apps)
bash
npx @capgo/cli@latest key create # writes .capgo_key_v2 (private) + .capgo_key_v2.pub, saves the public key to config
npx cap sync # the public key must ship in the native app
npx @capgo/cli@latest bundle upload com.example.app --key-v2 ./.capgo_key_v2 --channel production

In CI, keep the private key in the CI secret store, write it to ./.capgo_key_v2 in the job, and pass the same --key-v2 ./.capgo_key_v2. The private key never leaves the runner. Add .capgo_key_v2 to .gitignore and never commit it. A changed key needs a new native build: devices with the old publicKey fail with key_id_mismatch.

Traps

  • On a channel that has a rollout configured, a plain bundle upload --channel production sets the rollout target, and stable is unchanged. Replace stable explicitly with channel set --bundle.
  • bundle cleanup --ignore-channel also deletes the linked channels. Never add it without asking.
  • bundle delete is permanent, and the deleted version cannot be reused. Prefer relinking an older bundle to roll back.
  • releaseType only sees native package metadata, not raw ios/ or android/ edits.
  • --self-assign on upload changes the channel's settings, not just this bundle.

Verification

  1. npx @capgo/cli@latest channel currentBundle production com.example.app --quiet prints the expected version.
  2. npx @capgo/cli@latest probe --platform ios (run in the project) reports whether an update would be served.
  3. npx @capgo/cli@latest app debug com.example.app shows a test device downloading and setting the bundle.
  4. For encrypted uploads, a device on the new native build applies the update with no key_id_mismatch error.

Error Handling

StringFix
❌ Version X already existsBump --bundle, use --auto-bump patch, or pass --version-exists-ok in CI re-runs
Cannot upload the same bundle contentThe checksum is already on that channel. Rebuild with changes, or pass --ignore-checksum-check
Bundle NOT compatible with <channel> channelNative packages differ. Do a native build first, or use --accept-incompatible if the code guards it
notifyAppReady() is missing in the build folder (...)Fix the app entry point (see capgo-live-updates)
index.html is missing in the root folder of <dir>Wrong --path
Cannot find channel <name>Check channel list. Names are case sensitive
Channel strategy <x> is not knownUse major, minor, patch, metadata, or none
No Capgo API key found. Run ... first, then retry this command.npx @capgo/cli@latest login, set CAPGO_TOKEN, or pass -a
Insufficient permissions for <key>The API key role is too low for this app. Ask an admin for an upload-capable key
Cannot upload bundle ( try again with --tus option)Retry with --tus, and raise --timeout for large bundles

Resources

  • Bundle reference: https://capgo.app/docs/cli/reference/bundle/
  • Channel reference: https://capgo.app/docs/cli/reference/channel/
  • Progressive rollouts: https://capgo.app/docs/live-updates/progressive-rollouts/
  • Encryption: https://capgo.app/docs/live-updates/encryption/
  • Compatibility: https://capgo.app/docs/live-updates/compatibility/

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
53
Repository forks
5
Repository npm downloads, 7 days
2
7-day trend score
26

Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 11 Jul 2026, 3 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/cap-go/capgo-skills/capgo-release-management/badge)](https://verified-skill.com/skills/cap-go/capgo-skills/capgo-release-management)

Something wrong with this skill or its page? Tell us.