
capgo-release-management
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 channel", or "Cannot upload the same bundle content". Do not use for updater plugin wiring in app code (capgo-live-updates), native binaries (capgo-native-builds), or org/member administration (capgo-organization-management).
- Installs
- 708
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/cap-go/capgo-skills --skill capgo-release-management- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads capgo-release-management automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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). Usecapgo-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
| Goal | Command |
|---|---|
| Upload and link | bundle 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 diff | bundle compatibility [appId] --channel production [--text] |
| What is live | channel currentBundle production [appId] --quiet |
| Promote | channel promote staging production [appId] |
| Roll back | channel set production [appId] --bundle <previous-version> |
| Rollout | bundle upload ... --rollout 10, then channel set ... --rollout-percentage 50 / --rollout-promote / --rollout-rollback |
| Create channel | channel 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 |
| List | bundle list [appId], channel list [appId] |
| Clean up | bundle cleanup [appId] --bundle 1.0 --keep 3 |
| Delete | bundle delete <version> [appId], channel delete <ch> [appId] |
| Preview QR | app set [appId] --preview once, then get-qr [appId] --channel beta or bundle upload ... --qr-preview |
| Encryption keys | key create, key save --key ./.capgo_key_v2.pub, key delete_old |
| Custom zip / external | bundle 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
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
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.jsonunless you pass--bundle <semver>. It must be unique, greater than0.0.0, and never a previously deleted version. - Use
--deltafor instant-apply apps. The CLI refuses delta uploads with more than 10,000 files. Use--no-deltain that case. - Use
--fail-on-incompatiblein CI. Use--accept-incompatibleonly when the JS guards missing plugins. These two flags and--ignore-metadata-checkcannot 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 aschannel 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, orchannel add --default) when the user explicitly wants to move production traffic.
4. Roll back
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)
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 productionsets the rollout target, and stable is unchanged. Replace stable explicitly withchannel set --bundle. bundle cleanup --ignore-channelalso deletes the linked channels. Never add it without asking.bundle deleteis permanent, and the deleted version cannot be reused. Prefer relinking an older bundle to roll back.releaseTypeonly sees native package metadata, not rawios/orandroid/edits.--self-assignon upload changes the channel's settings, not just this bundle.
Verification
npx @capgo/cli@latest channel currentBundle production com.example.app --quietprints the expected version.npx @capgo/cli@latest probe --platform ios(run in the project) reports whether an update would be served.npx @capgo/cli@latest app debug com.example.appshows a test device downloading and setting the bundle.- For encrypted uploads, a device on the new native build applies the update with no
key_id_mismatcherror.
Error Handling
| String | Fix |
|---|---|
❌ Version X already exists | Bump --bundle, use --auto-bump patch, or pass --version-exists-ok in CI re-runs |
Cannot upload the same bundle content | The checksum is already on that channel. Rebuild with changes, or pass --ignore-checksum-check |
Bundle NOT compatible with <channel> channel | Native 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 known | Use 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/
FAQ
What does the capgo-release-management skill do?
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 channel", or "Cannot upload the same bundle content". Do not use for updater plugin wiring in app code (capgo-live-updates), native binaries (capgo-native-builds), or org/member administration (capgo-organization-management).
How do I install capgo-release-management?
Run npx skills add https://github.com/cap-go/capgo-skills --skill capgo-release-management in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/capgo-release-management/ (personal) or .claude/skills/capgo-release-management/ (project).
Which AI agents can use capgo-release-management?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is capgo-release-management safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains capgo-release-management?
It is published by cap-go in cap-go/capgo-skills. It has 708 recorded installs.
More from cap-go/capgo-skills
capacitor-best-practices
cap-go/capgo-skills
Review and set up Capacitor apps against current best practices (Capacitor 8.5 stable, 9 alpha via @next). Use for a Capacitor codebase review, capacitor.config.ts audit, new project setup, aligning @capacitor/core/cli/ios/android and plugin majors, plugin patterns (availability checks, checkPermissions/requestPermissions, error code handling, web fallbacks), or release prep; or on " " plugin is not implemented on ios, Could not find the web assets directory, platform has not been added yet, a dev server.url shipped to production, lost edits in android/app/src/main/assets/public, SPM vs CocoaPods, or AppDelegate/UIScene drift. Do not use for security audits (capacitor-security), performance (capacitor-performance), tests (capacitor-testing), crashes (debugging-capacitor), major upgrades (capacitor-app-upgrades), SPM migration (cocoapods-to-spm), UIScene adoption (capacitor-uiscene-migration), or live updates (capgo-live-updates).
ionic-design
cap-go/capgo-skills
Builds and reviews Ionic Framework UI in Capacitor apps (Ionic 9 current, Ionic 8 still common) - page structure (ion-header/ion-content/ion-footer), lists, modern form syntax (label/labelPlacement on ion-input/ion-select), sheet modals, tabs + ion-router-outlet, CSS variable theming, dark palettes (palettes/dark.system.css, .ion-palette-dark), iOS vs MD mode, and Ionic 8 - 9 breaking changes (React Router 6, Vue Router 5, Angular 18-22 zoneless, removed ion-picker-legacy, boolean autocorrect, npx @ionic/migrate). Use when writing Ionic components, theming an Ionic app, fixing platform-mode styling, or upgrading @ionic/react, @ionic/vue, @ionic/angular. Do not use for Konsta UI (konsta-ui), Tailwind setup (tailwind-capacitor), raw safe-area CSS (safe-area-handling), keyboard resize (capacitor-keyboard), or Ionic Appflow/Enterprise migrations (ionic-appflow-migration, ionic-enterprise-sdk-migration).
capacitor-plugins
cap-go/capgo-skills
Pick, install, and wire up Capacitor plugins for native features (camera, filesystem, geolocation, biometrics, in-app purchases, social login, SQLite, calendar, contacts, health, BLE, NFC, etc.). Covers official @capacitor/ packages (Capacitor 8.5 stable, 9 alpha on next) plus the 145-package @capgo/ index, native permission keys (Info.plist, AndroidManifest, variables.gradle minSdk), npx cap sync / cap ls verification, and errors like '"Camera" plugin is not implemented on ios', 'unable to find plugin', UNIMPLEMENTED, and OS-PLUG- codes. Use for "which plugin should I use for X", adding a plugin, or a plugin call failing after install. Do not use for push setup (capacitor-push-notifications), splash assets (capacitor-splash-screen), keyboard layout (capacitor-keyboard), deep links (capacitor-deep-linking), OTA updates (capgo-live-updates), upgrading plugin source code (capacitor-plugin-upgrades), or adding SPM to a plugin (capacitor-plugin-spm-support).
debugging-capacitor
cap-go/capgo-skills
Diagnoses and fixes runtime bugs in Capacitor iOS/Android apps - white/blank screen on launch, startup crashes, "X" plugin is not implemented on ios/android, net::ERRCLEARTEXTNOTPERMITTED, App Transport Security blocks, CORS on capacitor://localhost, permission denials, live reload not connecting, and Capacitor 8.5+ UIScene regressions (appUrlOpen, universal links, pause/resume silent because AppDelegate callbacks stopped). Covers Safari Web Inspector, chrome://inspect, Xcode/LLDB, Android Studio, npx cap run --url (Capacitor 9) vs -l --host (8), xcrun simctl openurlprivacypush, xcrun devicectl device process launchopenURL, xctrace. Do not use for only reading device logs (ios-android-logs), the UIScene migration itself (capacitor-uiscene-migration), deep-link setup (capacitor-deep-linking), speed (capacitor-performance), crash SDKs (capacitor-native-observability), tests (capacitor-testing), or upgrades/build errors (capacitor-app-upgrades, cocoapods-to-spm).
capacitor-testing
cap-go/capgo-skills
Testing guide for Capacitor apps and plugins. Covers web-layer unit and component tests with Vitest and mocked Capacitor plugins (vi.mock('@capacitor/core'), registerPlugin), Playwright for the web build, Appium E2E with NATIVEAPP / WEBVIEW context switching, native plugin unit tests with Swift Testing vs XCTest (what can migrate, CAPPluginCall patterns, xcodebuild test on a simulator) and Android JUnit, plus an agent-driven verification loop on simulators and devices (build, install, launch, screenshot, UI hierarchy, tap, logs) with xcrun simctl, xcrun devicectl, adb, Xcode MCP device tools, and live reload via npx cap run --url (Capacitor 9) or -l --host --port (Capacitor 8). Use when adding tests, mocking plugins, "does it work on device", verifying a UI change on a simulator, migrating XCTest to Swift Testing, or setting up test CI. Do not use for crash log capture (ios-android-logs), WebView debugging sessions (debugging-capacitor), or build pipelines (capacitor
safe-area-handling
cap-go/capgo-skills
Fixes notch, Dynamic Island, home indicator, display cutout, and system bar overlap in Capacitor apps. Covers viewport-fit=cover + env(safe-area-inset-), the Capacitor 8 SystemBars core plugin (insetsHandling, injected --safe-area-inset- CSS variables for Android WebView < 140, removal of android.adjustMarginsForEdgeToEdge), Android 15/16 enforced edge-to-edge (overlaysWebView and backgroundColor of @capacitor/status-bar no longer work at targetSdk 36), iOS contentInset, and insets that change at runtime on rotation, iPad/foldable resizable windows. Use when headers sit under the status bar, tab bars hide behind the gesture bar, env() returns 0 on Android, or layout broke after upgrading to Capacitor 8 / targetSdk 35+. Do not use for keyboard overlap (capacitor-keyboard), Ionic/Konsta component theming (ionic-design, konsta-ui), Tailwind utility setup (tailwind-capacitor), or iOS multi-window/resizability adoption (capacitor-ios-resizability).
Popular security skills
azure-compliance
microsoft/azure-skills
Run Azure compliance and security audits with azqr plus Key Vault expiration checks. Covers best-practice assessment, resource review, policy/compliance validation, and security posture checks. WHEN: compliance scan, security audit, BEFORE running azqr (compliance cli tool), Azure best practices, Key Vault expiration check, expired certificates, expiring secrets, orphaned resources, compliance assessment.
minimal-run-and-audit
lllllllama/rigorpilot-skills
Rigor Run skill for README-first deep learning repo reproduction. Use when the task is specifically to capture or normalize evidence from the selected smoke test or documented inference or evaluation command and write standardized reprooutputs/ files, including patch notes when repository files changed. Do not use for training execution, initial repo intake, generic environment setup, paper lookup, target selection, hidden scientific-meaning changes, or end-to-end orchestration by itself.
seo-audit
coreyhaines31/marketingskills
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," "indexing issues," "stuck on page 2," "striking distance keywords," "title tag rewrite," "low CTR," "local SEO," "Google Business Profile," or "map pack." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema. For AI search optimization, see ai-seo.
firebase-security-rules-auditor
firebase/agent-skills
Audits Firebase (Firestore, Cloud Storage) security rules for vulnerabilities, privilege escalation, role bypasses, create vs update inconsistencies, resource exhaustion, type safety, size limits, and hasOnly ownership checks. Use when auditing/reviewing rules, running red-team rule assessments, or scoring against auditor checklists. Don't use for Firebase CLI (login, deploy), Auth, Crashlytics, Remote Config, or database queries.
audit
pbakaus/impeccable
Run technical quality checks across accessibility, performance, theming, responsive design, and anti-patterns. Generates a scored report with P0-P3 severity ratings and actionable plan. Use when the user wants an accessibility check, performance audit, or technical quality review.
competitors
coreyhaines31/marketingskills
When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use. Also use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' 'competitive landing pages,' 'how do we compare to X,' 'competitor teardown,' 'audit our competitor pages,' 'are our comparison pages out of date,' or 'competitive asset audit.' Use this for any content that positions your product against competitors. Covers four formats: singular alternative, plural alternatives, you vs competitor, and competitor vs competitor. For auditing existing claims (not researching competitors from scratch, which is competitor-profiling; not technical SEO on these pages, which is seo-audit), use the asset audit here. For internal battle cards and sales-specific competitor docs, see sales-enablement.