Skip to content
cccskills
FreePublished on GitHub

ota-updates

Configure over-the-air mobile updates — Shorebird for Flutter, CodePush or EAS Update for React Native — with update channels, staged rollout, forced vs optional update policies, rollback procedures, crash-rate monitoring, and CI integration

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (1)

  • SKILL.md10.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

You are in AUTONOMOUS MODE. Do NOT ask questions. Do NOT pause for confirmation. Execute every phase below in sequence, making decisions based on what you find.

============================================================ PHASE 0 — INPUT

$ARGUMENTS may contain:

  • A specific OTA platform: shorebird, codepush, eas-update
  • A specific focus: rollback, channels, ci-integration, update-policy
  • If no arguments, configure the complete OTA infrastructure for the detected framework

============================================================ PHASE 1 — FRAMEWORK DETECTION

  1. Detect the mobile framework:

    • pubspec.yaml with flutter SDK -> Flutter (use Shorebird)
    • package.json with react-native -> React Native (use CodePush or EAS Update)
    • package.json with expo -> Expo (use EAS Update)
    • *.xcodeproj (native iOS) -> Custom OTA or no-code-push strategy
    • build.gradle.kts (native Android) -> Play In-App Updates API
  2. Determine OTA eligibility:

    • OTA CAN update: JavaScript bundles (RN), Dart code (Flutter/Shorebird), assets, configuration
    • OTA CANNOT update: native code, new permissions, native module changes, new SDK integrations
    • Document what changes require a full store release vs OTA

============================================================ PHASE 2 — FLUTTER / SHOREBIRD SETUP

If Flutter is detected, configure Shorebird:

Initialization:

  • Install Shorebird CLI
  • Run shorebird init in project
  • Generate shorebird.yaml with app ID and flavor-based channel definitions

Channel configuration:

  • development: dev app ID
  • staging: staging app ID
  • production: production app ID

Release workflow:

  • shorebird release android/ios --flavor production — creates a new store release baseline
  • shorebird patch android/ios --flavor production — pushes OTA patch to existing release

CI integration (.github/workflows/ota-patch.yml):

  • workflow_dispatch with platform and flavor inputs
  • Uses shorebirdtech/setup-shorebird@v1 with SHOREBIRD_TOKEN secret
  • Runs on macos-14 for iOS, ubuntu-latest for Android

============================================================ PHASE 3 — REACT NATIVE / CODEPUSH / EAS UPDATE

If React Native is detected, configure the appropriate OTA solution:

Expo (EAS Update):

  • Configure eas.json with update channels per environment (development, staging, production)
  • Push updates: eas update --channel staging --message "description"
  • Channel promotion flow: staging -> production

Bare React Native (CodePush):

  • Install react-native-code-push SDK
  • Configure update check behavior:
    • checkFrequency: ON_APP_RESUME
    • installMode: ON_NEXT_RESUME (non-mandatory)
    • mandatoryInstallMode: IMMEDIATE (mandatory/critical)
    • minimumBackgroundDuration: 60 seconds

============================================================ PHASE 4 — NATIVE APPS

For native iOS/Android apps without OTA framework support:

Android — Play In-App Updates:

  • Flexible update (downloads in background, non-blocking)
  • Immediate update (blocks app usage until installed)
  • Check updateAvailability() and isUpdateTypeAllowed() before prompting

iOS — App Store Version Check:

  • Query iTunes lookup API for latest version
  • Compare with current bundle version
  • Prompt user to update if newer version exists

Custom OTA for config/assets:

  • Firebase Remote Config for feature flags and configuration
  • Asset bundles downloaded on demand
  • No code changes via OTA (would violate store guidelines)

============================================================ PHASE 5 — UPDATE CHANNELS & ENVIRONMENTS

Configure update channels matching deployment environments:

ChannelTargetUpdate ModeRollout
developmentDev buildsImmediate100%
stagingQA/stagingImmediate100%
production-canary5% of productionOn next resume5%
productionAll productionOn next resume100%

Channel promotion flow:

  1. Push patch to staging channel
  2. QA verifies on staging builds
  3. Promote to production-canary (5% rollout)
  4. Monitor crash-free rate for 24 hours
  5. If stable (crash-free > 99%), promote to production (100%)

============================================================ PHASE 6 — UPDATE POLICIES

Implement update policy logic with three severity tiers:

Critical (forced) — blocks app until installed:

  • Security vulnerability fix
  • Data corruption fix
  • Authentication bypass fix
  • API breaking change requiring client update

Important (strongly recommended) — persistent banner, dismissible once per session:

  • Major bug fix
  • Performance improvement
  • New required feature

Optional (informational) — dismissible dialog, not shown again for this version:

  • Minor improvement
  • New optional feature
  • UI polish

Generate a version compatibility config:

{
  "minSupportedVersion": "2.1.0",
  "latestVersion": "2.3.0",
  "forceUpdateBelow": "2.0.0"
}

============================================================ PHASE 7 — ROLLBACK STRATEGY

Document rollback procedures for each platform:

Shorebird: shorebird patch rollback android/ios --release-version 1.0.0

EAS Update: eas update:republish --group <previous-update-group-id> --channel production

CodePush: appcenter codepush rollback -a owner/AppName-Platform Production

Automated rollback trigger:

  • Monitor crash-free rate after OTA push
  • If crash-free rate drops below 98%, automatically rollback
  • Send alert to team channel (Slack, PagerDuty)

============================================================ PHASE 8 — A/B UPDATE TESTING

Configure A/B testing for OTA updates:

  1. Create two update variants targeting different user segments
  2. Use rollout percentage to split traffic
  3. Monitor metrics per variant: crash-free rate, session duration, feature adoption, retention
  4. Promote the winning variant to 100%

============================================================ SELF-HEALING VALIDATION (max 2 iterations)

After completing deployment/infrastructure changes, validate:

  1. Verify all generated files are syntactically valid (YAML, JSON, HCL, Dockerfile).
  2. Run validation commands if available (terraform validate, docker build --check, kubectl dry-run).
  3. Verify no secrets, credentials, or sensitive values are hardcoded.
  4. If validation fails, diagnose and fix the specific syntax or config error.
  5. Repeat up to 2 iterations.

IF STILL FAILING after 2 iterations:

  • Document what failed and the exact error
  • Include partial output if available

============================================================ OUTPUT

## OTA Update Infrastructure Complete

### Framework: {Flutter / React Native / Expo / Native}
### OTA Platform: {Shorebird / EAS Update / CodePush / Custom}

### Update Channels
| Channel | Target | Mode | Rollout |
|---------|--------|------|---------|
| {channel} | {audience} | {immediate/resume} | {%} |

### Update Policy
| Severity | Behavior | User Experience |
|----------|----------|-----------------|
| Critical | Force update | Blocks app until updated |
| Important | Recommend | Persistent banner |
| Optional | Inform | Dismissible dialog |

### Rollback Procedure
{step-by-step rollback for the configured platform}

### CI Integration
{workflow files created for automated OTA patches}

### Files Created
{list all generated files with paths}

============================================================ NEXT STEPS

  1. Push your first OTA patch to the staging channel to verify the setup
  2. Run deploy/mobile-ci-cd to integrate OTA patches into the CI/CD pipeline
  3. Set up crash monitoring (Sentry, Crashlytics) to enable automated rollback triggers
  4. Test the rollback procedure before relying on it in production

============================================================ SELF-EVOLUTION TELEMETRY

After producing output, record execution metadata for the /evolve pipeline.

Check if a project memory directory exists:

  • Look for the project path in ~/.claude/projects/
  • If found, append to skill-telemetry.md in that memory directory

Entry format:

### /ota-updates — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}

Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.

============================================================ DO NOT

  • Do NOT push OTA updates that include native code changes — these require store review
  • Do NOT skip staging channel testing before production push
  • Do NOT set all updates to force-update — this creates a poor user experience
  • Do NOT deploy without a tested rollback procedure
  • Do NOT push to production without monitoring crash-free rate
  • Do NOT bypass store guidelines by delivering app functionality via remote config that would normally require review
  • Do NOT store OTA tokens or API keys in source code

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Run a full Section 508 + WCAG 2.2 Level AA accessibility audit on a federal / .gov / public-sector website or ICT product. Triggers: "Section 508", "508 audit", "WCAG", "VPAT", "ACR".

The English summary is being prepared. Showing the original description.

tinh2/skills-hub-registry20Updated Sep 5, 2026

Analyzes actuarial modeling systems for loss reserving accuracy, premium pricing methodology, mortality/morbidity tables, stochastic modeling, and capital adequacy per SOA and Solvency II standards..

The English summary is being prepared. Showing the original description.

tinh2/skills-hub-registry20Updated Sep 5, 2026

Analyzes advertising yield across programmatic and direct-sold inventory including CPM/CPC/CPA performance, header bidding efficiency, fill rate optimization, inventory monetization strategies, and compliance with IAB standards and OpenRTB protocols..

The English summary is being prepared. Showing the original description.

tinh2/skills-hub-registry20Updated Sep 5, 2026

adr

Free

Create and manage Architecture Decision Records using the Michael Nygard format. Triggers: you need to document architecture decisions, record technical choices, explain why a technology was chosen.

The English summary is being prepared. Showing the original description.

tinh2/skills-hub-registry20Updated Sep 5, 2026

Analyzes affordable housing management software for unit allocation algorithms, waitlist management, income verification workflows, Fair Housing compliance, LIHTC and Section 8 program tracking, inspection scheduling, and tenant reporting..

The English summary is being prepared. Showing the original description.

tinh2/skills-hub-registry20Updated Sep 5, 2026

Rewrites existing landing pages, blog posts, and documentation so AI search engines (Google AI Overviews, ChatGPT, Perplexity, Claude, Gemini) cite them. Triggers: an existing page underperforms in AI answers despite ranking well in classic SERPs.

The English summary is being prepared. Showing the original description.

tinh2/skills-hub-registry20Updated Sep 5, 2026

See all skills by tinh2

Report a problem with this skill