بنقرة واحدة
hot-updater
// Use when working with Hot Updater CLI setup, deployment, patch artifacts, bundle inventory/state, rollback, channels, code signing keys, database migration, diagnostics, or AI-assisted React Native OTA operations.
// Use when working with Hot Updater CLI setup, deployment, patch artifacts, bundle inventory/state, rollback, channels, code signing keys, database migration, diagnostics, or AI-assisted React Native OTA operations.
Generate and execute PR-aware OTA E2E scenarios for `examples/v0.85.0` by diffing the checked-out branch against its PR base branch or default branch, inferring the affected runtime, rollout, and recovery surfaces, and then running the scenario through `../e2e`. Use when the caller wants current-branch OTA validation without hand-writing the scenario.
Run a fixed OTA regression flow for `examples/v0.85.0` with `agent-device`. Use when the caller wants a built-in end-to-end scenario instead of defining one manually: deploy a known-good OTA bundle, verify a visible UI change plus the deployed `bundleId`, then deploy an intentionally crashing OTA bundle and verify rollback to the previous stable bundle with `RECOVERED` and `crashedBundleId` evidence.
Run end-to-end OTA verification for `examples/v0.85.0` with `agent-device`. Use when validating iOS or Android release builds, deploying OTA bundles with `pnpm hot-updater deploy`, checking stable update application, reproducing rollback after a crash bundle, or reading bundle-store metadata and crash history for the v0.85.0 example app.
Use when an AI agent needs to queue, monitor, diagnose, and iterate on HotUpdater E2E dashboard jobs through the Mac mini `hot-updater-agent` CLI instead of running local device flows directly. Trigger for requests to run PR E2E through the dashboard, inspect queued E2E failures, tail bot logs, or fix-and-rerun E2E until green.
Run a local pnpm monorepo CI loop, fix failures, and stop only when the full sequence is green. Use when Codex is asked to fix CI, make a repository green, or resolve failures from `pnpm -w build`, `pnpm -w test:type`, `pnpm -w lint`, `pnpm -w test`, or `pnpm -w test:integration`.
Automates interactions for iOS simulators/devices and Android emulators/devices. Use when navigating apps, taking snapshots/screenshots, tapping, typing, scrolling, or extracting UI info on mobile targets.
| name | hot-updater |
| description | Use when working with Hot Updater CLI setup, deployment, patch artifacts, bundle inventory/state, rollback, channels, code signing keys, database migration, diagnostics, or AI-assisted React Native OTA operations. |
| metadata | {"author":"hot-updater","version":"1.0.0"} |
Use this skill when a task involves Hot Updater's CLI, hot-updater.config.ts,
React Native OTA deployment, patch artifacts, bundle operations, rollback,
release-channel management, code signing keys, database migration, fingerprints,
or diagnostics.
hot-updater.config.ts before assuming provider behavior.npx hot-updater ... for CLI examples and user-facing instructions.npx hot-updater init on behalf of the user. It is interactive
and asks for provider, build, and project-specific choices. Guide the user to
run it directly and follow the setup documentation.npx hot-updater doctor for a server/infrastructure check,
make sure the server base URL is available. If the user did not provide it
and it is not obvious from local config, ask for the update server URL first.npx hot-updater doctor --json first. Fix
issues marked fixability: "auto" by editing local project files, run the
listed commands for issues marked fixability: "command", and rerun doctor
after each focused change. Stop when doctor passes or the remaining issues are
marked fixability: "blocked".fixability: "blocked" as outside the autonomous local loop. Server
infrastructure remediation commonly needs provider credentials, environment
variables, and redeploy access; summarize the blocker instead of running
migrations or mutating provider setup.deploy, patch, bundle enable, bundle disable, bundle update,
bundle delete, bundle promote, rollback, channel set, keys export-public, keys remove, and db migrate as state-changing operations.keys generate and db generate as local file/artifact writing
operations.--json only with commands documented here as supporting it. For
mutating commands, --json only changes the output format after the requested
mutation has already been authorized. If a target project uses an older CLI
without that option, fall back to the human-readable output.-y only when the user already requested the
exact mutation and the target is unambiguous.bundle list or the relevant
provider state.deploy fails, stop the deploy workflow. Do not keep retrying fixes,
edit setup, change credentials, install dependencies, or run migrations
unless the user explicitly asks for that follow-up. Analyze only the failed
command, relevant output, likely cause, and suggested next checks..env.hotupdater, but projects may use a different
environment-loading setup.Users may invoke this skill with prompts such as:
$hot-updater deploy using the current app version
$hot-updater deploy the current iOS app version to production
$hot-updater roll back the most recently deployed bundle
$hot-updater list iOS bundles on the production channel
$hot-updater update rollout cohort count for bundle <bundle-id> to 500
$hot-updater promote bundle <bundle-id> to staging
$hot-updater create a patch from bundle <old-id> to <new-id>
$hot-updater export the code signing public key
$hot-updater run doctor with server URL https://updates.example.com/api/check-update
$hot-updater fix local doctor issues that do not require server credentials
Translate the request into the safest CLI flow. If a state-changing request is
missing a required channel, platform, bundle target, patch base, destination
channel, or server URL that cannot be inferred from local context, ask one
concise question before mutating anything. For deploy and patch channel, use the
CLI default production unless the user names another channel or local context
clearly indicates one.
When the user asks to deploy for the current app version:
npx hot-updater app-version --json when supported; otherwise run
npx hot-updater app-version.ios and/or android from JSON when available, or from the
human-readable output as a fallback.-t <version>:npx hot-updater deploy -p ios -t <ios-app-version>
npx hot-updater deploy -p android -t <android-app-version>
If deploying both platforms, run one platform at a time and verify each result
with npx hot-updater bundle list -p <platform> --limit 5 --json when
supported, or without --json as a fallback.
If a deploy command fails, do not continue to the next platform or attempt an automatic repair. Report the failure analysis and wait for a new user request.
When the user asks to roll back the most recent deployment without naming a bundle:
npx hot-updater bundle list --json --limit 10.channel, platform, and id for a scoped rollback:npx hot-updater rollback <channel> -p <platform> --target <bundle-id> -y
If the most recent bundle is already disabled, tell the user and ask whether to roll back the next enabled bundle. After rollback, verify with:
npx hot-updater bundle list -c <channel> -p <platform> --limit 5 --json
If --json is unavailable, rerun the same command without --json.
npx hot-updater init
npx hot-updater doctor --server-base-url <update-server-url>
npx hot-updater doctor --json
npx hot-updater doctor --server-base-url <update-server-url> --json
npx hot-updater fingerprint
npx hot-updater fingerprint create
npx hot-updater app-version
npx hot-updater app-version --json
npx hot-updater console
init creates or updates project configuration. Because it is interactive,
tell the user to run it directly instead of choosing answers for them.doctor checks local setup and server health. Provide --server-base-url;
the command appends /version for the server check. If the user has not
provided one, ask for it before running the command.doctor --json is the preferred agent surface. It returns stable issue
codes, related paths, fixability, and command hints for local iterative
repair. Do not parse the human-readable doctor output when JSON is available.fingerprint and fingerprint create generate the app fingerprint.app-version reads native iOS and Android app versions. --json returns
{ "android": string | null, "ios": string | null } on CLIs that support it.console opens the local management console.npx hot-updater deploy -p <ios|android>
npx hot-updater deploy -p ios -c production -r 25
npx hot-updater deploy -p android -f
npx hot-updater deploy -p ios -d
npx hot-updater deploy -p ios -o ./hot-updater-output
Important options:
| Option | Meaning |
|---|---|
-p, --platform <platform> | Target ios or android. |
-c, --channel <channel> | Release channel, default production. |
-t, --target-app-version <range> | App version range such as 1.2.3 or 1.x.x. |
-r, --rollout <percentage> | Initial rollout percentage from 0 to 100. |
-f, --force-update | Apply immediately on client update. |
-d, --disabled | Upload disabled for later enablement. |
-o, --bundle-output-path <path> | Directory where bundle archives are generated. |
-m, --message <message> | Custom deployment message. |
-i, --interactive | Guided deployment flow. |
npx hot-updater patch -b <bundle-id> --base-bundle-id <base-bundle-id> -p ios
npx hot-updater patch -b <bundle-id> --base-bundle-id <base-bundle-id> -p android -c production
npx hot-updater patch -i
Important options:
| Option | Meaning |
|---|---|
-b, --bundle-id <bundleId> | Target bundle id that should receive the patch artifact. |
--base-bundle-id <baseBundleId> | Older bundle id to use as the patch base. |
-p, --platform <platform> | Target ios or android. |
-c, --channel <channel> | Channel used to load config, default production. |
-i, --interactive | Guided patch flow. |
npx hot-updater bundle list
npx hot-updater bundle list -c production -p ios --limit 10
npx hot-updater bundle list -c production -p ios --limit 10 --json
npx hot-updater bundle list --json
npx hot-updater bundle show <bundle-id>
npx hot-updater bundle show <bundle-id> --json
npx hot-updater bundle disable <bundle-id>
npx hot-updater bundle enable <bundle-id>
npx hot-updater bundle update <bundle-id> --rollout-cohort-count 500
npx hot-updater bundle update <bundle-id> --force-update true --json
npx hot-updater bundle update <bundle-id> --target-cohorts 1,2,3
npx hot-updater bundle update <bundle-id> --clear-target-cohorts
npx hot-updater bundle delete <bundle-id>
npx hot-updater bundle promote <bundle-id> -t staging
npx hot-updater bundle promote <bundle-id> -t staging -a move
bundle list shows the most recent bundles first.bundle list --limit <n> defaults to 20.--json is available for bundle list, bundle show, and bundle update
on CLIs that support it.bundle disable and bundle enable read the bundle, mutate enabled state,
commit the change, then re-read to verify.bundle update can set rollout cohort count from 0 to 1000, force update
metadata, and target cohorts.bundle delete removes the bundle record by id.bundle promote copies to a target channel by default. Use -a move only
when the user explicitly wants to keep the same bundle id and move channels.-y to enable or disable.
Also pass -y to update, delete, or promote only when the requested
mutation target is unambiguous.npx hot-updater rollback <channel>
npx hot-updater rollback production -p ios
npx hot-updater rollback production -p ios --target <bundle-id> -y
-p, rollback applies to both iOS and Android.--target <bundle-id> to retry a partial rollback for exactly one bundle.npx hot-updater channel set <channel>
This writes the default channel into native iOS and Android project files. Changing this embedded channel requires a native rebuild.
npx hot-updater keys generate
npx hot-updater keys generate -o ./keys -k 4096
npx hot-updater keys export-public
npx hot-updater keys export-public -i ./keys/private.pem --print-only
npx hot-updater keys remove
keys generate writes an RSA key pair. The default output directory is
./keys, and supported key sizes are 2048 and 4096 with default 4096.keys export-public reads the private key from -i or from
signing.privateKeyPath in hot-updater.config.ts, then writes native public
key configuration unless --print-only is used.keys remove removes public keys from native configuration files.-y for native file writes only when the user explicitly requested the
exact operation.npx hot-updater db generate [configPath] [outputDir]
npx hot-updater db generate --sql
npx hot-updater db generate --sql postgresql
npx hot-updater db migrate [configPath]
db generate creates migration output without applying it. The default
output directory is hot-updater_migrations.db generate --sql [provider] creates a standalone SQL file without reading
config. Supported providers are postgresql, mysql, and sqlite; omitting
the provider starts interactive selection.db migrate applies the latest migration through the configured database
plugin.-y only when the user explicitly requested the write or migration.