agentsclimarketplace

Store growth audit

Skill rshankras/claude-code-apple-skills/skills/growth/store-growth-audit

Claude Code skills for Apple platform development (iOS, macOS, iPadOS) — product validation, code generation, App Store optimization, and more

Install
npx -y skills add rshankras/claude-code-apple-skills --skill store-growth-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

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."

SKILL.md

14.3 KB, as published. Nobody here has run it

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 ✅.

Where it fits (read the seams)

  • Not 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.
  • Not analytics-interpretation. Metric-quality judgments ("is 3.2% conversion good?") route there; this skill only records the baseline and whether benchmarks were checked.
  • Fixes never happen here. Every 🔴/🟠 routes to a named sibling skill and (when driven from SwiftShip) an /apple:* command. This skill detects, scores, and routes. Read-only on ASC.

When This Skill Activates

  • "Audit my app's growth / store presence / what levers am I missing"
  • A new app is approaching first submission and needs a growth plan, not just metadata
  • Quarterly re-audit cadence, or after a launch that undershot expectations
  • Before deciding to spend on paid acquisition ("is the free machinery done first?")
  • Portfolio triage: "which of my apps is leaving the most on the table"

The Model: P0–P9

54 items across ten phases. Each phase is a theme; the item detail lives in the checklist files.

PhaseThemeItemsGoal
P0Day-one money toggles4Free margin + a measurement baseline before anything else
P1On-metadata ASO7Every indexed field working (title, subtitle, keywords, events, IAPs)
P2Conversion assets5Icon, screenshots, trust signals that convert impressions
P3Localization5Metadata-first market expansion + PPP pricing
P4Ratings machinery4Prompting, replying, and protecting the rating
P5Experimentation4PPO, CPPs, events as a testing habit
P6Featuring & free discovery6Nominations, new-OS adoption, storefronts, web presence
P7Paid & external traffic8Apple Ads ladder, launch spikes, pre-orders, codes
P8Earnings7Paywall experiments, win-backs, web checkout, bundles
P9Retention loop & ops4Retention 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.

Reference Files

FilePurpose
detection-playbook.mdGather-once machinery: the MCP batch table, the codebase grep table, the single MANUAL question batch
audit-checklist-p0-p4.mdItems P0.1–P4.4 (25): foundations — money toggles through ratings
audit-checklist-p5-p9.mdItems P5.1–P9.4 (29): growth loops — experimentation through ops

Audit Process

  1. Resolve app, mode, and scope. Get the appId (from .planning/STATE.md when driven by SwiftShip, 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.
  2. Gather evidence — one pass, per detection-playbook.md. Run the full MCP read batch, the full codebase grep pass, and ONE batched AskUserQuestion round for every MANUAL item. Never interleave gathering with scoring; never ask questions one at a time.
  3. Score all 54 items against the gathered evidence using each item's rule:. Honor applies-if: guards (⚪ N/A) and ⏳ ANNOUNCED flags. Every status carries a terse, citable evidence string (locales: en-US only, SBP: enrolled (user, 2026-07)).
  4. Compute phase scores + maturity level (rules below), and — when a prior scorecard exists — per-item deltas: fixed / regressed / new since last audit.
  5. Select the top 5 actions (rule below).
  6. Write or refresh the scorecard — in a SwiftShip project this is .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.
  7. Print the digest and route. Maturity level, phase bar, top-5 with routes, deltas, unanswered MANUAL items, next three calendar due-dates, and the suggested next command/skill.

Item Record Format

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
  • ID (P<phase>.<n>) is stable forever — scorecards diff by ID; never renumber.
  • Flags after the name: core (phase-gating), RECURRING (calendar-driven), ⏳ ANNOUNCED (WWDC26).
  • detect: MCP <tool> · CODE <grep> · MANUAL <question> · HYBRID (combination).
  • rule: explicit ✅/🟠/🔴 thresholds; optional applies-if: guard → ⚪ N/A when it fails.
  • new-app: how pre-launch mode scores it — plan / code / defer (see Modes).
  • fix: sibling-skill → /apple:command — the skill path works standalone; the command half applies 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).

Scoring & Maturity

  • Phase score: ✅ n / N applicable — ⚪ and ⏳ items are excluded from N.
  • Phase grade:
    • 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.
  • Growth maturity level (0–9): the highest P such that every phase ≤ P grades at least 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).

Modes: Existing vs Pre-Launch

Existing appPre-launch
EvidenceASC reads + codebase + MANUAL.planning/ docs + codebase + MANUAL
new-app: plan itemsscored normallyplanned-in-docs → 🟠 planned; absent → 🔴
new-app: code itemsscored normallyscored normally (greps work pre-launch)
new-app: defer itemsscored normally⚪ with an activation trigger noted (e.g. "30 days post-launch")
Output framingaudit + deltaslaunch plan (history row tagged mode: pre-launch)

The first post-launch audit diffs cleanly against the pre-launch scorecard — same IDs, same schema.

Scoped Runs (single phase)

"Run phase 3" = audit + worklist for that stage only.

  • Scope: one phase (P3, bare 3 accepted) or a short range/list (P1-P3, P0,P4). Default remains the full P0–P9 audit.
  • Evidence: pull only the 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.
  • Scorecard: update only the in-scope phase tables and their Phase Scores rows; every other 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.
  • Output: instead of the top-5, print the phase worklist — every applicable in-scope item with status, evidence, and route — ordered core first, 🔴 before 🟠, lowest effort first. End by offering to start the first route (gated, as always).
  • A scoped run never rewrites items outside its scope, and never counts as a full re-audit for the Recurring Calendar's "announced-features recheck" row unless the ⏳ items are in scope.

Output Format

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)

Routing Map

The only place the full route list lives; stanzas carry the short form.

Audit areaSibling skill (canonical)SwiftShip command
SBP, business opsgrowth/indie-business— (ASC manual)
Billing grace/retry, subscription lifecyclegenerators/subscription-lifecycle/apple:subscription
Analytics baseline, benchmarksgrowth/analytics-interpretation/apple:learn-from-store
Keywords, metadata fields, AI taggingapp-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 Assetsapp-store/screenshot-planner/apple:screenshots
Icon + PPO + CPP experimentsgenerators/product-page-optimization, generators/custom-product-pages/apple:experiment
In-app eventsgenerators/in-app-events/apple:event
Localization + PPP pricingproduct/localization-strategy, monetization (pricing-models)/apple:localize
Ratings: prompting, replies, protectionapp-store/ratings-mechanics, generators/review-prompt, app-store/review-response-writer/apple:ratings (health + replies); /apple:ship (phased release)
Featuring nominationsgenerators/featuring-nomination— (ASC manual, calendar-driven)
New-OS adoption/apple:modernize
App Intents / Spotlightapple-intelligence/app-intents, generators/spotlight-indexing/apple:plan
Web SEO, landing page, deal sitesapp-store/web-presence
Pre-orders, offer codes, waitlistgenerators/pre-orders, generators/offer-codes-setup, product/beta-testing/apple:testflight
Paywall + pricing experimentsgenerators/paywall-generator, monetization/apple:subscription
Win-backs, retention messaginggenerators/win-back-offers/apple:subscription
External purchase links / web checkoutmonetization/external-purchases
Bundles, Family Sharing, volume licensingmonetization/bundles-and-licensing
Retention surfacesgenerators/onboarding-generator, generators/push-notifications, generators/widget-generator, generators/live-activity-generator/apple:plan

Caveats

  • Read-only on ASC. The audit never mutates anything — not even analytics report setup (that routes to store-signals / /apple:learn-from-store). Surface → score → route.
  • MANUAL honesty. Ask once, in one batch. "I don't know" scores 🟠 unverified — the scorecard tells the user what to go check, it never guesses.
  • ⏳ items are rechecked every audit. Apple ships announced features on its own schedule; each ⏳ stanza carries a dormant detection rule — when the feature is live, apply it and drop the flag.
  • Never reset the ratings summary (P4.4). That item is a guardrail, not a task: resetting 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.
  • Stable IDs. New items get new numbers; retired items keep their row with status retired.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.