shipping-and-launch
Skill2 starsChanged 40 days agoMITView on GitHub
Use when preparing to release an Android app to production. Pre-launch checklist covering code quality, security, performance, accessibility, Play Store requirements, staged rollout, and rollback planning.
65 other projects use a version of this.
Adopted by
Most recently taken up by
- ishandutta2007/Awesome-Agent-Skillstheir own version, first seen Nov 8, 2026
- TheAstroByte/astrobyte-agent-skillstheir own version, first seen Nov 8, 2026
- MMACABRE/SKILLStheir own version, first seen Nov 8, 2026
- celestialdust/achilles-skillstheir own version, first seen Nov 1, 2026
- steven123397/nexuskit-skillstheir own version, first seen Nov 1, 2026
- AgnesAI-Labs/agnet-skills-cntheir own version, first seen Nov 1, 2026
Used with
Projects with it also use brainstorm-experiments-existing, prioritize-assumptions and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
skytiger6724Skillbrainstorm-experiments-existing
Design experiments to test assumptions for an existing product — prototypes, A/B tests, spikes, and other low-effort validation methods. Use when validating assumptions, testing feature ideas cheaply, or planning product experiments.
Also in 4 projects that use this
skytiger6724Skillprioritize-assumptions
Prioritize assumptions using an Impact × Risk matrix and suggest experiments for each. Use when triaging a list of assumptions, deciding what to test first, or applying the assumption prioritization canvas.
Also in 4 projects that use this
45ckSkillpestle-analysis
Also in 4 projects that use this
About-IntelligenceSkillpositioning-ideas
Brainstorm product positioning ideas differentiated from competitors.
Also in 4 projects that use this
- +2 more from skytiger6724
Other versions65 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 65
- addyosmani/agent-skills★ 114ksame name
- ollaya-dev/ollaya★ 1.4ksame name
- shashankswe2020-ux/whoop-mcp★ 174same name
- vinvcn/addyosmani-agent-skills-zh★ 46same name
- jmxt3/gitscape.ai★ 33same name
- sampleXbro/agentsmesh★ 27same name
- jaskirat1616/grok-skills★ 22same name
- ishandutta2007/Awesome-Agent-Skills★ 21same name
- HK-hub/AgentSkills★ 6same name
- lza6/claw-code-tingfeng★ 5same name
55 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- android-accessibilitySkill
- android-architectureSkill
- android-background-workSkill
- android-data-persistenceSkill
- android-device-testingSkill
- android-e2e-verificationSkill
- android-ui-engineeringSkill
- api-and-interface-designSkill
- ci-cd-and-automationSkill
- code-review-and-qualitySkill
- code-simplificationSkill
- constraint-driven-developmentSkill
- context-engineeringSkill
- debugging-and-error-recoverySkill
- deprecation-and-migrationSkill
- documentation-and-adrsSkill
- doubt-driven-developmentSkill
- git-workflow-and-versioningSkill
- idea-refineSkill
- incremental-implementationSkill
- interview-meSkill
- observability-and-instrumentationSkill
- performance-optimizationSkill
- planning-and-task-breakdownSkill
- security-and-hardeningSkill
- source-driven-developmentSkill
- spec-driven-developmentSkill
- test-driven-developmentSkill
- using-agent-skillsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 14 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 58 edited versions we read keep these.
14
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Before any release to Play Store (internal, alpha, beta, production)
- Distinctive: line 18
Before any release via Firebase App Distribution
- Distinctive: line 19
When promoting from one release track to another
- Distinctive: line 20
After a hotfix that needs expedited release
- Distinctive: line 22
Skip when: Not releasing (local development only).
- Distinctive: line 144
Use it as an objective gate, not a negotiation:
- Distinctive: line 168
Verify all feature flags are in expected state
- Distinctive: line 169
Remove flags for fully-rolled-out features (tech debt)
- Distinctive: line 170
Document flag state in release notes
- Distinctive: line 238
No staged rollout (0% to 100% in one step)
- Distinctive: line 239
No rollback plan documented
- Distinctive: line 240
No monitoring configured before launch
- Distinctive: line 244
No Play Store compliance check
- Distinctive: line 248
No stability SLO defined, so "is it safe to ship?" is decided by mood
“Common” is measured: kept by at least 6 in 10 of the 58 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Shipping and Launch
Overview
"Ship with confidence. Deploy safely, with monitoring, rollback plan ready." Shipping isn't just uploading an AAB — it's verifying that everything is production-ready, staging the rollout, monitoring for issues, and having a rollback plan if things go wrong.
When to Use
- Before any release to Play Store (internal, alpha, beta, production)
- Before any release via Firebase App Distribution
- When promoting from one release track to another
- After a hotfix that needs expedited release
Skip when: Not releasing (local development only).
Core Process
Step 1: Pre-Launch Checklist
- Code Quality:
# All tests pass
./gradlew test
./gradlew connectedAndroidTest
# Build succeeds
./gradlew bundleRelease
# No lint errors
./gradlew lint
# Formatting is consistent
./gradlew spotlessCheck
# Static analysis passes
./gradlew detekt- Manual code checks:
- No
TODOorFIXMEwithout issue references - No
Log.d()orLog.v()calls in production code (use ProGuard to strip) - No hardcoded strings in UI (use
stringResource) - No
BuildConfig.DEBUG-gated features shipping to production - Feature flags for incomplete features are OFF
- No
- Security (see
security-and-hardening):- No secrets in source code
- Network Security Config enforces HTTPS
- Certificate pinning configured
- ProGuard/R8 enabled for release build
android:debuggablenot set in release manifest- Dependency vulnerability scan clean
- Performance (see
performance-optimization):- Android Vitals targets met (startup < 500ms, jank < 5%)
- APK/AAB size within budget
- Baseline Profiles included
- No ANR-prone patterns (main thread blocking)
- Images optimized (WebP, proper sizing)
- Accessibility (see
android-accessibility):- TalkBack tested on all screens
- Accessibility Scanner reports zero critical issues
- Touch targets >= 48dp
- Color contrast meets standards
- Content descriptions on all meaningful elements
- Infrastructure:
- Signing configuration correct (release keystore)
- Environment-specific configs correct (API URLs, feature flags)
- Crashlytics/error monitoring configured
- Firebase Performance Monitoring enabled
- Analytics events verified
- Documentation:
- Release notes written
- Play Store listing updated (screenshots, description)
- ADRs written for significant changes
- Internal changelog updated
Step 2: Staged Rollout
- Rollout progression:
Internal Testing (Play Store internal track)
→ Verified by team
↓
Closed Alpha (Play Store alpha track)
→ Verified by internal testers + QA
↓
Open Beta (Play Store beta track)
→ Verified by beta users (wider audience)
↓
Production (staged rollout)
→ 1% → 5% → 25% → 50% → 100%- Staged rollout with Play Store:
Day 0: Release to 1% of users
→ Monitor Crashlytics, ANR rate, user feedback
Day 1: If clean → expand to 5%
→ Check Play Console Android Vitals
Day 3: If clean → expand to 25%
→ Review user reviews and ratings
Day 5: If clean → expand to 50%
Day 7: If clean → expand to 100%- Decision thresholds:
| Metric | Action |
| Crash rate > 2x previous version | Halt rollout, investigate |
| ANR rate > 0.47% | Halt rollout, investigate |
| Negative reviews spike > 2x | Halt rollout, investigate |
| Error rate > 0.1% new errors | Investigate, consider halt |
| Startup time regression > 20% | Investigate, consider halt |
Error Budget Release Gate
The thresholds above decide whether this rollout continues; the error budget decides whether you should be starting a rollout at all. Set a stability SLO — typically crash-free users (e.g. 99.5%) plus user-perceived crash and ANR rates below the Play bad-behavior thresholds (1.09% / 0.47%, see observability-and-instrumentation). The budget is the gap between the SLO and reality over a 28-day window, the same window Play Vitals uses:
// SLO 99.5% crash-free users → 0.5% of users may crash in 28 days
fun budgetRemaining(sloCrashFree: Double, actualCrashFree28d: Double): Double {
val allowed = 1.0 - sloCrashFree // 0.005
val consumed = 1.0 - actualCrashFree28d // e.g. 0.003 at 99.7% crash-free
return ((allowed - consumed) / allowed).coerceAtLeast(0.0) // 0.4 → 40% left
}Use it as an objective gate, not a negotiation:
Budget remaining > 20% → Normal staged rollout (1% → 5% → 25% → 50% → 100%)
Budget remaining 0–20% → Slow rollouts only: smaller steps, longer bake per step,
no high-risk changes (migrations, SDK upgrades, rewrites)
Budget exhausted → Freeze feature releases; ship only stability fixes
Play Vitals threshold → Treat as exhausted — Play may already be reducing
breached store visibility, so every release must lower the rate
Budget recovers → Resume normal pace; keep the fix that recovered itBurn rate during rollout: a crash or ANR rate on the newest version that is rising faster than the previous version's baseline is a halt signal (Play Console → Halt rollout), even while every row in the thresholds table is still green. The mobile twist makes the gate stricter than on a server: you cannot roll back an installed binary. Remediation is halt plus hotfix forward, or a Remote Config kill switch (see Step 4) — so budget spent at 25% rollout stays spent until users take the next update.
Step 3: Feature Flag Management
- Feature flag lifecycle:
Created (disabled) → Enabled (internal) → Canary (5%) →
Expanded (25%) → Full (100%) → Removed (cleanup)- Before shipping:
- Verify all feature flags are in expected state
- Remove flags for fully-rolled-out features (tech debt)
- Document flag state in release notes
Step 4: Rollback Plan
- Always have a rollback strategy:
## Rollback Plan
### Option 1: Halt Staged Rollout
- In Play Console → Release → Production → Halt rollout
- Users who haven't updated keep the old version
- Already-updated users keep the new version (no downgrade)
### Option 2: Emergency Hotfix
- Create `hotfix/1.2.1` branch from `release/1.2.0`
- Apply minimal fix
- Fast-track through CI → Internal → Production (100%)
### Option 3: Feature Flag Kill Switch
- Disable the problematic feature via Firebase Remote Config
- Users get the update but broken feature is hidden
- Fastest response time (no new build needed)Step 5: Post-Launch Monitoring
- First 24 hours after launch:
- Crashlytics — new crash types?
- ANR rate — within threshold?
- Firebase Performance — startup time, network latency?
- Play Console — user reviews, ratings?
- Error monitoring — new error patterns?
- Critical user flows — working end-to-end?
- First 7 days:
- Android Vitals in Play Console — all green?
- Staged rollout expanded on schedule?
- Feature flag cleanup scheduled?
- Retro/post-mortem if issues occurred
Step 6: Play Store Requirements
- Play Store checklist:
- Target SDK meets Play Store requirements (the latest stable API level — new apps and updates must target API 36+ from Aug 31, 2026; check the current deadline at developer.android.com/google/play/requirements/target-sdk)
- 16 KB page-size compliance verified if the app ships native libraries (required since Nov 2025 for apps targeting Android 15+; needs NDK r28+ / AGP 8.5.1+)
- Edge-to-edge rendering verified (enforced for apps targeting Android 15+; no
statusBarColor/navigationBarColorreliance) - Privacy policy URL set
- Data safety form completed
- Content rating questionnaire completed
- App signing by Google Play enabled
- AAB format (not APK) for new apps
- Deobfuscation mapping file uploaded (R8/ProGuard)
- Release notes in all supported languages
Common Rationalizations
| Shortcut | Why It Fails |
| "We'll skip staged rollout, the tests pass" | Tests don't catch device-specific bugs, carrier issues, or user-facing performance. |
| "Rollback plan isn't needed, it's a small change" | Small changes can have outsized impact. A 1-line change can cause a crash. |
| "We'll monitor tomorrow" | The first few hours are critical. Issues compound overnight. |
| "Let's ship 100% — we're confident" | Confidence without staged rollout is hope, not engineering. |
| "The crash rate is under the halt threshold, keep expanding" | Check the burn rate, not just the current rate. A newest-version crash/ANR rate climbing faster than baseline is a halt signal while every threshold is still green — and installed binaries can't be rolled back. |
| "The budget is gone, but this feature is already done" | An exhausted budget means stability fixes only. Shipping features on top of a burning release spends budget you don't have and risks Play visibility. |
Red Flags
- No staged rollout (0% to 100% in one step)
- No rollback plan documented
- No monitoring configured before launch
Log.dcalls in release builds- Hardcoded debug URLs shipping to production
- Feature flags in unknown state
- No Play Store compliance check
- Missing deobfuscation mapping file upload
- Launching on Friday (no monitoring over weekend)
- Error budget exhausted (or a Vitals threshold breached) but feature releases continue unchanged
- No stability SLO defined, so "is it safe to ship?" is decided by mood
Verification
- Pre-launch checklist complete (quality, security, performance, accessibility)
- Release build signed with production keystore
- Staged rollout plan defined
- Error budget checked against the 28-day stability SLO, and the rollout pace matches the gate (normal / slow / stability-fixes-only)
- Rollback strategy documented
- Monitoring configured (Crashlytics, Performance, Analytics)
- Play Store requirements met
- Release notes written
- Team aware of launch timeline
- Post-launch monitoring plan in place
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

