launch-readiness
Skill1 starsChanged 27 days agoBSD-3-ClauseView on GitHub
Runs launch readiness checks on Flutter, Swift and Kotlin apps before store or Mac release, scored SHIP, HOLD or BLOCK. Covers store compliance, privacy, legal, data safety, assets, metadata, testing, security, accessibility, performance. Use for /launch-readiness or a public release preflight.
13 other projects use a version of this.
Adopted by
Most recently taken up by
- harrison-ming/chuhai-skillstheir own version, first seen Nov 8, 2026
- paureis/pau-skillstheir own version, first seen Nov 8, 2026
- Sach1ng/PM-operating-OStheir own version, first seen Nov 1, 2026
- omdenkar2-ui/all-in-onetheir own version, first seen Nov 1, 2026
- Hyde-and-Larkin/product-marketing-toolkittheir own version, first seen Nov 1, 2026
- vindreshsingh/engineering-skillstheir own version, first seen Oct 20, 2026
Used with
Projects with it also use experiment-designer and stakeholder-update.
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.
Dokkabei97Skillexperiment-designer
Designs A/B tests and product experiments with hypothesis structuring, sample size calculation, duration estimation, and result interpretation. Unified framework for both product and marketing experiments.
Also in 3 projects that use this
AnthropicSkillstakeholder-update
Generate a stakeholder update tailored to audience and cadence. Use when writing a weekly or monthly status for leadership, announcing a launch, escalating a risk or blocker, or translating the same progress into exec-brief, engineering-detail, or customer-facing versions.
Also in 3 projects that use this
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 13
- pratikshadake/claude-product-management-skills★ 33same name
- RizwanZafaris/product-manager-OS★ 4same name
- Sach1ng/PM-operating-OS★ 3same name
- Hyde-and-Larkin/product-marketing-toolkit★ 2same name
- paureis/pau-skills★ 2same name
- AndyMelnykov/pm-loops★ 1same name
- harrison-ming/chuhai-skills★ 1same name
- ianklassen/ai-pm-system★ 1same name
- janellecipriano/pm-skills★ 1same name
- ejwhite7/product-release-checklist★ 0same name
3 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 repository52 other files it gives its agents.
- academic-research-assistantSkill
- answer-sheetSkill
- app-graphicsSkill
- app-landing-pageSkill
- app-screenshotsSkill
- break-uiSkill
- consumer-app-from-behaviorSkill
- cross-language-safetySkill
- dart-tool-scriptsSkill
- decision-sweepSkill
- engineering-diarySkill
- figma-review-loopSkill
- flutter-app-size-auditSkill
- flutter-async-at-the-edgeSkill
- flutter-async-cubit-safetySkill
- flutter-bloc-clean-architectureSkill
- flutter-clean-architecture-tddSkill
- flutter-cubit-smart-cachingSkill
- flutter-error-logging-conventionsSkill
- flutter-observability-instrumentationSkill
- flutter-paywall-and-review-timingSkill
- flutter-precommit-cleanupSkill
- flutter-router-decisionSkill
- flutter-runtime-safetySkill
- flutter-shorebird-otaSkill
- flutter-stream-architectureSkill
- flutter-strict-analysisSkill
- flutter-web-first-paintSkill
- forced-pivot-15-daySkill
- gplay-consoleSkill
- ios-distribution-feature-flagsSkill
- launch-watchSkill
- locale-expert-reviewSkill
- market-pulseSkill
- mobile-ui-referenceSkill
- moscow-prioritizationSkill
- orchestrate-agentic-engineeringSkill
- parallel-agent-inboxSkill
- paywall-conversion-flowSkill
- paywall-transparencySkill
- proactive-crash-repair-loopSkill
- promise-auditSkill
- pr-preview-shippingSkill
- ship-first-dollar-appSkill
- slim-ios-simulator-fleetSkill
- spec-sql-harnessSkill
- store-launch-mastermindSkill
- sync-contextSkill
- task-blitzSkill
- techdebtSkill
- vendor-decisionSkill
- web-interface-reviewSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
24 rules. 0 are common, 20 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
20
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
Read these sources in parallel:
- Distinctive: line 45
Run each phase once per detected project and label findings with the project.
- Distinctive: line 55
Every phase file has a "Native Swift and Kotlin projects" section with the native equivalent of its Flutter checks.
- Distinctive: line 95
If a CLAUDE.md exists at the project root (or any parent), extract:
- Distinctive: line 110
No overlay (generic checks only)
- Distinctive: line 112
If multiple overlays could match, ask the user.
- Distinctive: line 168
If a phase subagent fails (timeout, crash, malformed output):
- Distinctive: line 171
If retry fails: mark the phase as INCONCLUSIVE
- Distinctive: line 178
After all phases in a tier complete:
- Distinctive: line 180
If any critical findings → STOP.
- Distinctive: line 181
If high findings in T2 → present each and ask for acknowledgment:
- Very specific: line 191
If --auto mode: all highs are unacknowledged (no interactive prompt)
- Distinctive: line 192
If tier clears → proceed to next tier
- Distinctive: line 204
After all tiers complete (or short-circuit), generate the report.
- Very specific: line 225
Use the template in references/scorecard-template.md.
- Distinctive: line 229
After presenting the scorecard:
- Very specific: line 233
If --fix flag: skip prompt, fix immediately
- Distinctive: line 235
After fixing: re-run only affected phases to verify
- Distinctive: line 240
After every run, perform learning extraction.
- Distinctive: line 247
Check refinements (broader scope than current check)
- Distinctive: line 264
Remove entries older than 90 days not promoted to a phase/overlay
- Very specific: line 281
When invoked with --auto (from a UserPromptSubmit hook):
- Distinctive: line 283
Run T1 only, scoped to changed files
- Distinctive: line 294
No interactive prompts (highs are unacknowledged)
“Common” is measured: kept by at least 6 in 10 of the 10 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
Launch Readiness
A library-agnostic launch readiness skill for Flutter, native iOS and Mac (Swift, SwiftUI), and native Android (Kotlin, Jetpack Compose) projects. Auto-detects project type and stack, runs tiered parallel quality checks, produces a scored go/no-go report, offers auto-fixes, and improves itself after each run.
Invocation
/launch-readiness # Full 3-tier sweep, entire codebase
/launch-readiness --changed # Full 3-tier sweep, changed files only
/launch-readiness --tier 1 # Only T1 (testing + security + store compliance)
/launch-readiness --tier 2 # T1 + T2
/launch-readiness --overlay X # Use specific overlay file
/launch-readiness --fix # Run + auto-fix without asking
/launch-readiness --auto # Hook mode: condensed output, no promptsOrchestrator Flow
1. DISCOVER → Detect project type, read manifests (pubspec.yaml, project.yml, Package.swift, Gradle files), CLAUDE.md, overlay → emit stack profile
2. SCOPE → Determine file scope (--changed or full)
3. DISPATCH → Launch tier phases as parallel subagents
4. GATE → Collect results, enforce tier gates
5. SCORECARD → Aggregate into unified report
6. FIX OFFER → "N issues auto-fixable. Fix now?"
7. LEARN → Mine new patterns, propose phase updatesStep 1: Stack Discovery
Read these sources in parallel:
1-pre. Project type
Detect every project type present before reading manifests. One repository can hold several, for example a SwiftUI iPhone, Watch and Mac app next to a Kotlin Android app. Run each phase once per detected project and label findings with the project.
| Type | Detected by |
| Flutter | pubspec.yaml with a flutter: key |
| Native Apple (Swift) | project.yml (XcodeGen), *.xcodeproj, *.xcworkspace or Package.swift |
| Native Android (Kotlin) | settings.gradle.kts or settings.gradle with gradlew and an AndroidManifest.xml |
For Flutter, continue with 1a. For native projects, read references/native-projects.md for detection and the command map, then continue with 1a-native. Every phase file has a "Native Swift and Kotlin projects" section with the native equivalent of its Flutter checks.
1a. pubspec.yaml (Flutter)
Detect dependencies to build a stack profile:
| Concern | Packages to detect |
| State management | flutter_bloc / riverpod / provider / get / mobx |
| Analytics | posthog_flutter / firebase_analytics / amplitude_flutter / mixpanel_flutter |
| Crash reporting | sentry_flutter / firebase_crashlytics |
| Subscriptions | purchases_flutter / in_app_purchase / none |
| UI framework | shadcn_ui / material (default) / cupertino / mixed |
| Navigation | go_router / auto_route / navigator (default) |
| DI | get_it / riverpod / provider / none |
| Localization | intl / easy_localization / slang / none |
| Testing | very_good_cli (check dev_dependencies) / flutter_test (default) |
See references/stack-detectors.md for detailed detection rules.
1a-native. Native Swift and Kotlin manifests
Detect the stack from these files instead of pubspec.yaml:
| Concern | Swift (iOS, Watch, Mac) | Kotlin (Android) |
| Targets, schemes | project.yml targets and schemes, or xcodebuild -list | settings.gradle.kts include(...), app/build.gradle.kts |
| Dependencies | Package.swift, Package.resolved, project.yml packages | gradle/libs.versions.toml, dependencies {} blocks |
| UI | SwiftUI (import SwiftUI), UIKit, AppKit | Jetpack Compose (androidx.compose), XML views |
| Analytics | PostHog, Firebase Analytics, TelemetryDeck, or none | Same SDKs on Android, or none |
| Crash reporting | Sentry, Firebase Crashlytics, or none (MetricKit and App Store Connect reports) | Sentry, Firebase Crashlytics, or none (Play Console Android vitals) |
| Subscriptions | StoreKit 2 (import StoreKit), RevenueCat purchases-ios, or none | Google Play Billing (billing-ktx), RevenueCat purchases-android, or none |
| Localization | *.xcstrings String Catalogs, Localizable.strings | res/values-*/strings.xml |
| Test runner | Swift Testing (import Testing), XCTest | JUnit 4 or 5, Compose UI tests, Espresso |
Zero third-party dependencies is a valid result. Record it in the profile and skip the checks that need an SDK.
1b. CLAUDE.md
If a CLAUDE.md exists at the project root (or any parent), extract:
- Banned imports (e.g., a banned UI package)
- Theme constant rules (e.g., "use spacing tokens, not raw values")
- Naming conventions
- Coverage thresholds
- Code quality rules
1c. Overlay
Resolve overlay using this priority:
--overlay <name>flag (explicit)namefield frompubspec.yaml(e.g.,name: my_appmatchesoverlays/my_app.md), or for native projects the top-levelname:inproject.ymlorrootProject.nameinsettings.gradle.kts- Git repository root directory name
- No overlay (generic checks only)
If multiple overlays could match, ask the user.
Stack Profile Output
Emit a profile object that every phase subagent receives:
Stack Profile:
- state: {detected state management}
- analytics: {detected analytics}
- crash: {detected crash reporting}
- subs: {detected subscriptions}
- ui: {detected UI framework}
- nav: {detected navigation}
- di: {detected DI}
- l10n: {detected localization}
- test_runner: {detected test runner}
- project_type: {flutter | apple-native | android-native, one entry per detected project}
- commands: {resolved build, test, lint and archive commands per project, see references/native-projects.md}
- rules: [extracted from CLAUDE.md]
- overlay: {matched overlay name or "none"}Step 2: Scope Resolution
Determine which files to check:
- Full codebase (default, or
--changednot specified): Flutter: all.dartfiles underlib/. Native Apple: all.swiftfiles outsidebuild/,.build/andDerivedData. Native Android: all.ktfiles undersrc/mainandsrc/test, plusAndroidManifest.xmland Gradle files - Changed files (
--changedor auto-hook mode):git diff --name-only $(git merge-base HEAD <target-branch>)..HEAD - Target branch detection: From PR target (
gh pr view), from branch naming (feature branches target the integration branch, hotfix branches target the production branch), or default to the integration branch. Branch roles are integration, release candidate, and production (for exampledevelop,release,main). - Import expansion (release-candidate and production targets only): For each changed file, resolve direct importers via grep to catch ripple effects
Step 3: Dispatch Tier Phases
Tier Structure
| Tier | Purpose | Phases | Gate |
| T1 — Ship Blockers | Must pass | Testing, Security, Store Compliance | Critical = STOP |
| T2 — Quality Gates | Should pass | Hardening, Accessibility, Responsive, Localization | Critical = STOP, High = warn + acknowledge |
| T3 — Polish & Verify | Nice to pass | Analytics, Performance, Polish | Advisory only |
Launch all phases within a tier as parallel subagents using the Agent tool. Each subagent receives:
- The stack profile from Step 1
- The file scope from Step 2
- The phase instructions from
phases/{phase}.md - Any overlay additions from
overlays/{overlay}.mdfor that phase
Phase File Location
Phase prompts live in phases/ directory relative to this skill file. Read the phase file and pass its content as the subagent prompt, prepending the stack profile and scope.
Subagent Error Handling
If a phase subagent fails (timeout, crash, malformed output):
- Retry once with the same inputs
- If retry fails: mark the phase as INCONCLUSIVE
- Inconclusive in T1/T2 → treated as critical (fail-closed)
- Inconclusive in T3 → treated as warning (advisory tier)
- Include error details in the report
Step 4: Gate Enforcement
After all phases in a tier complete:
- If any critical findings → STOP. Present findings, offer to fix. Do NOT proceed to next tier.
If high findings in T2 → present each and ask for acknowledgment:
[phase] file:line — description Acknowledge? (y = accept risk / n = will fix) [y/n]:y: marked acknowledged, doesn't count toward HOLDn: remains unacknowledged, counts toward HOLD
- If
--automode: all highs are unacknowledged (no interactive prompt) - If tier clears → proceed to next tier
Auto-Hook Gate by Branch
| Target | T1 Scope | On Failure |
Integration (for example develop) | Changed files | Warn, allow override |
Release candidate (for example release) | Changed + importers | Block |
Production (for example main) | Full codebase | Block |
Step 5: Scorecard Generation
After all tiers complete (or short-circuit), generate the report.
Verdict Logic
| Verdict | Condition |
| BLOCK | 1+ critical findings |
| HOLD | 0 criticals, 3+ unacknowledged highs |
| SHIP | 0 criticals, all highs acknowledged or 0 highs |
Severity Definitions
| Severity | Meaning | Gate Impact |
| Critical | App is broken, insecure, or will be rejected | Blocks tier |
| High | Significant UX/quality degradation | Accumulates toward HOLD |
| Medium | Suboptimal but functional | Informational |
| Low | Style nit, minor inconsistency | Informational |
Report Template
Use the template in references/scorecard-template.md. Write the report to docs/launch-readiness-report.md in the project root.
Step 6: Fix Offer
After presenting the scorecard:
- Count auto-fixable issues (those with
fix_actionin phase output) - Present: "N issues can be fixed automatically. Fix now?"
- If
--fixflag: skip prompt, fix immediately - On approval: apply fixes grouped by phase
- After fixing: re-run only affected phases to verify
- Present updated scorecard with delta
Step 7: Self-Improvement
After every run, perform learning extraction.
Pattern Mining
Scan findings for recurring patterns not already in phase check lists:
- New code patterns that should be checked
- Check refinements (broader scope than current check)
- Project-specific discoveries
Learning Persistence
Append to references/learnings.md:
## {date} — {project} run
- NEW CHECK ({phase}): {description}
- REFINEMENT ({phase}): {description}Pruning
On each run, scan learnings.md and:
- Remove entries older than 90 days not promoted to a phase/overlay
- Deduplicate identical check descriptions
- Cap at 100 entries (oldest unpromoted pruned first)
Phase Update Proposals
Present at end of report:
"I discovered N patterns not covered by current checks. Update phase files?"
On approval:
- Generic patterns → update
phases/{phase}.md - Project-specific patterns → update
overlays/{project}.md
Auto-Hook Mode
When invoked with --auto (from a UserPromptSubmit hook):
- Run T1 only, scoped to changed files
Condensed output:
Launch Readiness (T1): Testing: PASS (N tests, 0 failures) Security: PASS (0 criticals) Store Compliance: PASS (0 criticals) → Proceeding.- No interactive prompts (highs are unacknowledged)
- On failure: print findings and block
Hook Setup
See hooks/pre-push.md for configuration instructions.
Sources
- https://developer.apple.com/documentation/metrickit
- https://developer.apple.com/documentation/storekit/in-app-purchase
- https://developer.android.com/build/building-cmdline
- https://api.flutter.dev/flutter/widgets/MediaQuery/textScalerOf.html
- https://docs.flutter.dev/ui/accessibility/accessibility-testing
- https://riverpod.dev/docs/whats_new
- https://www.w3.org/TR/WCAG22/
- https://posthog.com/docs/libraries/flutter
- https://firebase.google.com/docs/analytics/flutter/events
- https://amplitude.com/docs/sdks/analytics/flutter/flutter-sdk-4
- https://developer.apple.com/app-store/review/guidelines/
- https://developer.apple.com/app-store/user-privacy-and-data-use/
- https://developer.apple.com/news/upcoming-requirements/
- https://developer.apple.com/support/third-party-SDK-requirements/
- https://developer.apple.com/documentation/bundleresources/privacy-manifest-files
- https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications
- https://developer.apple.com/help/app-store-connect/reference/app-information/age-ratings-values-and-definitions
- https://developer.apple.com/documentation/xcode/configuring-your-app-icon
- https://support.google.com/googleplay/android-developer/answer/11926878
- https://support.google.com/googleplay/android-developer/answer/10787469
- https://support.google.com/googleplay/android-developer/answer/9888076
- https://support.google.com/googleplay/android-developer/answer/13327111
- https://support.google.com/googleplay/android-developer/answer/14115180
- https://support.google.com/googleplay/android-developer/answer/9866151
- https://developer.android.com/guide/practices/page-sizes
- https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions
- https://developers.google.com/android-publisher/api-ref/rest/v3/applications/dataSafety
- https://docs.sentry.io/concepts/key-terms/dsn-explainer/
- https://firebase.google.com/docs/projects/api-keys
- https://pub.dev/packages/mixpanel_flutter
- https://firebase.google.com/docs/crashlytics/flutter/customize-crash-reports
- https://docs.flutter.dev/ui/internationalization
- https://code.claude.com/docs/en/hooks
- https://cli.vgv.dev/docs/commands/test
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.

