Stage-by-stage audit of an app's App Store growth machinery against a 54-item P0–P9 playbook — every item scored from an App Store Connect MCP call, a codebase check, or an explicit question to the user, then routed to the skill or command that fixes it. Read-only on App Store Connect. Use for a growth audit or scorecard, a pre-launch growth plan, a quarterly re-audit, or "which growth levers am I missing.
npx skills add https://github.com/rshankras/claude-code-apple-skills --skill store-growth-audit
Walk an app — new or live — through the full App Store growth playbook, phase by phase, and
produce a scorecard: what's installed, what's missing, what to do next, and who fixes it.
> The invariant: every item has a detection rule. Status comes from an ASC read, a codebase
> check, or an explicit question — never from vibes. If the user doesn't know, the item is
> 🟠 *unverified*, not assumed ✅.
store-signals. That is the continuous *signal → backlog* loop: are the numbers moving,did last cycle's bets pay off? This is the *structural* audit: is the machinery even installed?
Run this quarterly (or pre-launch); run store-signals monthly. Trend questions route there.
analytics-interpretation. Metric-quality judgments ("is 3.2% conversion good?") routethere; this skill only records the baseline and whether benchmarks were checked.
SwiftShip) an /apple:* command. This skill detects, scores, and routes. Read-only on ASC.
54 items across ten phases. Each phase is a theme; the item detail lives in the checklist files.
| Phase | Theme | Items | Goal |
|-------|-------|-------|------|
| P0 | Day-one money toggles | 4 | Free margin + a measurement baseline before anything else |
| P1 | On-metadata ASO | 7 | Every indexed field working (title, subtitle, keywords, events, IAPs) |
| P2 | Conversion assets | 5 | Icon, screenshots, trust signals that convert impressions |
| P3 | Localization | 5 | Metadata-first market expansion + PPP pricing |
| P4 | Ratings machinery | 4 | Prompting, replying, and protecting the rating |
| P5 | Experimentation | 4 | PPO, CPPs, events as a testing habit |
| P6 | Featuring & free discovery | 6 | Nominations, new-OS adoption, storefronts, web presence |
| P7 | Paid & external traffic | 8 | Apple Ads ladder, launch spikes, pre-orders, codes |
| P8 | Earnings | 7 | Paywall experiments, win-backs, web checkout, bundles |
| P9 | Retention loop & ops | 4 | Retention surfaces + the recurring refresh calendar |
Compressed priority (used for action selection, not the maturity ladder): P0 money toggles
first → P1–P3 (metadata, conversion, localization) → P8.4 web checkout + P8.6 volume purchasing
(the 2026-era revenue unlocks) → everything else → P7 paid traffic last. Paid spend on top of
broken free machinery is burned money.
| File | Purpose |
|------|---------|
| detection-playbook.md | Gather-once machinery: the MCP batch table, the codebase grep table, the single MANUAL question batch |
| audit-checklist-p0-p4.md | Items P0.1–P4.4 (25): foundations — money toggles through ratings |
| audit-checklist-p5-p9.md | Items P5.1–P9.4 (29): growth loops — experimentation through ops |
appId (from .planning/STATE.md when driven bySwiftShip, else list_apps + confirm with the user). App live on the store → *existing* mode;
not yet shipped → *pre-launch* mode. Scope defaults to the full P0–P9; a named phase runs
scoped (see Scoped Runs). A prior scorecard (GROWTH.md), if present, is the diff baseline.
detection-playbook.md. Run the full MCP read batch, thefull codebase grep pass, and ONE batched AskUserQuestion round for every MANUAL item. Never
interleave gathering with scoring; never ask questions one at a time.
rule:. Honorapplies-if: guards (⚪ N/A) and ⏳ ANNOUNCED flags. Every status carries a terse, citable
evidence string (locales: en-US only, SBP: enrolled (user, 2026-07)).
per-item deltas: fixed / regressed / new since last audit.
.planning/GROWTH.md(schema in SwiftShip's templates/GROWTH.md); standalone, write GROWTH.md beside the audit.
Append an audit-history row; refresh the recurring calendar's next-due dates.
unanswered MANUAL items, next three calendar due-dates, and the suggested next command/skill.
Each checklist item is a stanza:
#### P3.1 Metadata-only localization (ja de fr es pt ko zh-Hans) — core
- detect: MCP `list_locales`
- rule: ✅ ≥7 target locales localized · 🟠 1–6 non-English locales · 🔴 en-only
- new-app: plan — seed target locales in the first submission
- fix: product/localization-strategy → /apple:localize
P<phase>.<n>) is stable forever — scorecards diff by ID; never renumber.core (phase-gating), RECURRING (calendar-driven), ⏳ ANNOUNCED (WWDC26).MCP <tool> · CODE <grep> · MANUAL <question> · HYBRID (combination).applies-if: guard → ⚪ N/A when it fails.plan / code / defer (see Modes).sibling-skill → /apple:command — the skill path works standalone; the command halfapplies when driven from SwiftShip.
Status vocabulary: ✅ done/healthy · 🟠 partial, stale, or unverified · 🔴 missing ·
⚪ N/A (applies-if failed; excluded from denominators) · ⏳ ANNOUNCED (not yet scoreable; excluded
from denominators; carries prep: and recheck: lines instead of a live rule).
✅ n / N applicable — ⚪ and ⏳ items are excluded from N.Complete — all applicable items ✅Working — ≥50% ✅ and no core item 🔴Gaps — any core item 🔴, or <50% ✅Not started — no applicable item ✅core items (13): P0.1, P0.2, P1.1, P2.2, P2.4, P3.1, P4.1, P4.2, P5.1, P6.1, P8.1, P8.4, P9.2.Working. An app with P0–P3 working but P4 in gaps is Level 3, no matter how good P5–P9 look.
The ladder follows numeric phase order; the compressed priority shapes only action selection.
Top-5 action selection: from all applicable 🔴 + 🟠 items, order by compressed-priority tier
(T1: P0 · T2: P1–P3 · T3: P8.4 + P8.6-when-live · T4: P4–P6, rest of P8, P9 · T5: P7), then within
a tier: core first, 🔴 before 🟠, lowest effort first. Two overrides: an overdue RECURRING
calendar item jumps to the top; always include at least one metadata-only quick win (shippable
without a binary release).
| | Existing app | Pre-launch |
|---|---|---|
| Evidence | ASC reads + codebase + MANUAL | .planning/ docs + codebase + MANUAL |
| new-app: plan items | scored normally | planned-in-docs → 🟠 planned; absent → 🔴 |
| new-app: code items | scored normally | scored normally (greps work pre-launch) |
| new-app: defer items | scored normally | ⚪ with an activation trigger noted (e.g. "30 days post-launch") |
| Output framing | audit + deltas | launch plan (history row tagged mode: pre-launch) |
The first post-launch audit diffs cleanly against the pre-launch scorecard — same IDs, same schema.
"Run phase 3" = audit + worklist for that stage only.
P3, bare 3 accepted) or a short range/list (P1-P3, P0,P4).Default remains the full P0–P9 audit.
detection-playbook.md rows whose items are in scope — MCP calls,greps, and MANUAL questions alike. A P1 run needs get_metadata/list_locales/list_iap/
list_app_events, not sales reports or paywall greps.
row stays untouched (stable IDs make the partial update safe). Append an Audit History row
tagged scope: P3. Recompute the maturity level from the refreshed rows plus the untouched
remainder — mark it (est.) if any out-of-scope phase has never been audited.
with status, evidence, and route — ordered core first, 🔴 before 🟠, lowest effort first.
End by offering to start the first route (gated, as always).
the Recurring Calendar's "announced-features recheck" row unless the ⏳ items are in scope.
The scorecard file (schema = SwiftShip templates/GROWTH.md):
header (app, date, mode, maturity) · phase-score table · top-5 actions · ten per-phase tables
(ID | Item | Status | Evidence | Next step | Route) · Watchlist (⏳ announced) · Recurring
Calendar · Baseline Metrics Snapshot · append-only Audit History.
The printed digest never dumps 54 rows:
Growth audit: <App> — Level 4/9 (existing, re-audit)
P0 ▓▓▓░ 3/4 · P1 ▓▓▓▓▓░░ 5/7 · P2 ▓▓▓░░ 3/5 · P3 ▓░░░░ 1/5 · P4 ▓▓▓▓ 4/4 …
Top 5: 1) P0.1 Apply to Small Business Program (route: growth/indie-business) …
Since last audit: 3 fixed, 1 regressed (P9.3 update freshness)
Unverified (you were unsure): P0.3 peer benchmarks, P7.2 brand defense
Calendar: featuring nomination due in 12 days · keyword refresh due 2026-10-01
Next: /apple:localize (or product/localization-strategy standalone)
The only place the full route list lives; stanzas carry the short form.
| Audit area | Sibling skill (canonical) | SwiftShip command |
|---|---|---|
| SBP, business ops | growth/indie-business | — (ASC manual) |
| Billing grace/retry, subscription lifecycle | generators/subscription-lifecycle | /apple:subscription |
| Analytics baseline, benchmarks | growth/analytics-interpretation | /apple:learn-from-store |
| Keywords, metadata fields, AI tagging | app-store/keyword-optimizer | /apple:metadata (or /apple:aso if installed) |
| Apple Ads (discovery, exact, halo, brand) | app-store/apple-search-ads | /apple:aso if installed |
| Screenshots, previews, Creative Assets | app-store/screenshot-planner | /apple:screenshots |
| Icon + PPO + CPP experiments | generators/product-page-optimization, generators/custom-product-pages | /apple:experiment |
| In-app events | generators/in-app-events | /apple:event |
| Localization + PPP pricing | product/localization-strategy, monetization (pricing-models) | /apple:localize |
| Ratings: prompting, replies, protection | app-store/ratings-mechanics, generators/review-prompt, app-store/review-response-writer | /apple:ratings (health + replies); /apple:ship (phased release) |
| Featuring nominations | generators/featuring-nomination | — (ASC manual, calendar-driven) |
| New-OS adoption | — | /apple:modernize |
| App Intents / Spotlight | apple-intelligence/app-intents, generators/spotlight-indexing | /apple:plan |
| Web SEO, landing page, deal sites | app-store/web-presence | — |
| Pre-orders, offer codes, waitlist | generators/pre-orders, generators/offer-codes-setup, product/beta-testing | /apple:testflight |
| Paywall + pricing experiments | generators/paywall-generator, monetization | /apple:subscription |
| Win-backs, retention messaging | generators/win-back-offers | /apple:subscription |
| External purchase links / web checkout | monetization/external-purchases | — |
| Bundles, Family Sharing, volume licensing | monetization/bundles-and-licensing | — |
| Retention surfaces | generators/onboarding-generator, generators/push-notifications, generators/widget-generator, generators/live-activity-generator | /apple:plan |
routes to store-signals / /apple:learn-from-store). Surface → score → route.
scorecard tells the user what to go check, it never guesses.
⏳ stanza carries a dormant detection rule — when the feature is live, apply it and drop the flag.
discards accumulated social proof and is almost never recoverable. Default ✅; flip to 🔴 only
if a reset is planned or happened — then route to app-store/ratings-mechanics to stop it.
retired.A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take rshankras/store-growth-audit from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.