ota-updates — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ota-updates (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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:
shorebird, codepush, eas-updaterollback, channels, ci-integration, update-policy============================================================ PHASE 1 — FRAMEWORK DETECTION ============================================================
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 strategybuild.gradle.kts (native Android) -> Play In-App Updates API============================================================ PHASE 2 — FLUTTER / SHOREBIRD SETUP ============================================================
If Flutter is detected, configure Shorebird:
Initialization:
shorebird init in projectshorebird.yaml with app ID and flavor-based channel definitionsChannel configuration:
development: dev app IDstaging: staging app IDproduction: production app IDRelease workflow:
shorebird release android/ios --flavor production — creates a new store release baselineshorebird patch android/ios --flavor production — pushes OTA patch to existing releaseCI integration (.github/workflows/ota-patch.yml):
workflow_dispatch with platform and flavor inputsshorebirdtech/setup-shorebird@v1 with SHOREBIRD_TOKEN secretmacos-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):
eas.json with update channels per environment (development, staging, production)eas update --channel staging --message "description"Bare React Native (CodePush):
react-native-code-push SDKcheckFrequency: ON_APP_RESUMEinstallMode: 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:
updateAvailability() and isUpdateTypeAllowed() before promptingiOS — App Store Version Check:
Custom OTA for config/assets:
============================================================ PHASE 5 — UPDATE CHANNELS & ENVIRONMENTS ============================================================
Configure update channels matching deployment environments:
| Channel | Target | Update Mode | Rollout |
|---|---|---|---|
| development | Dev builds | Immediate | 100% |
| staging | QA/staging | Immediate | 100% |
| production-canary | 5% of production | On next resume | 5% |
| production | All production | On next resume | 100% |
Channel promotion flow:
============================================================ PHASE 6 — UPDATE POLICIES ============================================================
Implement update policy logic with three severity tiers:
Critical (forced) — blocks app until installed:
Important (strongly recommended) — persistent banner, dismissible once per session:
Optional (informational) — dismissible dialog, not shown again for this version:
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:
============================================================ PHASE 8 — A/B UPDATE TESTING ============================================================
Configure A/B testing for OTA updates:
============================================================ SELF-HEALING VALIDATION (max 2 iterations) ============================================================
After completing deployment/infrastructure changes, validate:
IF STILL FAILING after 2 iterations:
============================================================ 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 ============================================================
deploy/mobile-ci-cd to integrate OTA patches into the CI/CD pipeline============================================================ SELF-EVOLUTION TELEMETRY ============================================================
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
~/.claude/projects/skill-telemetry.md in that memory directoryEntry 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 ============================================================
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.