Close the post-launch loop — turn a live app's App Store signals (reviews, analytics, sales, crashes, listing conversion) into a metric-tagged backlog for the next version, AND verify whether last cycle's changes moved the metric they promised to move. Read-only on App Store Connect; every change is surfaced and routed to another command, never auto-applied. Use before planning the next version, on a monthly cadence, or ~1-2 weeks after shipping to check if a change worked.
npx skills add https://github.com/rshankras/claude-code-apple-skills --skill store-signals
Pull what the *shipped* app is actually telling you and convert it into the next backlog — then
verify whether last cycle's bets paid off.
> This is the missing arc that turns build → ship into a loop:
> ship → MEASURE → DIAGNOSE → next PLAN → build → ship → measure again…
> The ledger (SIGNALS.md) is what makes it a loop and not a monthly report.
analytics-interpretation. That *interprets* a metric you hand it (is 14% D7 good?). Thisis the end-to-end operate loop: gather every signal → cluster → diagnose → **write a metric-tagged
backlog → close last cycle's hypotheses**. It *uses* analytics-interpretation's benchmarks.
on explicit OK, and routes the change to the right command (next-version, bugfix, metadata).
ROADMAP.md + rows in SIGNALS.md,consumed by /apple:next-version / /apple:release.
appId from .planning/STATE.md, else list_apps + confirm..planning/ context: STATE.md, APP.md, POSITIONING.md (job-to-be-done + guardrails)..planning/SIGNALS.md if present — the OPEN hypotheses from prior runs (each with a target metric,recorded baseline, and "check-after" date). See signals-ledger.md for the ledger + backlog formats.
SIGNALS.md → the OPEN rows to verify in step 5.list_reviews (recent, lowest-star first; flag unanswered), get_review for detail.get_analytics_report: retention, funnel/conversion, acquisition, impression→download.No report configured yet → setup_analytics_reports and note "retention/funnel lands next cycle."
get_sales_report: proceeds/units vs trailing 7/30-day.get_diagnostics (crash/hang signatures) + get_perf_metrics (launch, memory, energy).list_beta_feedback_crashes if in TestFlight.get_metadata to spot ASO conversion problems against current copy.frequency; attach magnitude (users / revenue / retention implicated). Weight by **frequency ×
revenue impact**, not by how loud one reviewer is.
conversion · crash-free rate · ASO conversion · proceeds); score impact × confidence ÷ effort.
Strategy filter: cross-check POSITIONING.md — on-strategy → backlog; off-strategy → list under
"Declined (why)" (never silently drop, never silently build). Carry the app's guardrails forward.
Small-N (new app): say so, lean on qualitative reviews, flag low confidence.
passed: compare the target metric now vs its baseline → WIN / REGRESSION / NEUTRAL. WIN → resolve;
REGRESSION → open a revert/rethink task; NEUTRAL → keep watching or retire.
ROADMAP.md and update SIGNALS.md(one row per hypothesis; formats in signals-ledger.md). Then output a ranked digest (top 3-5
"what's hurting most, why, the proposed move"), the loop-closure results, and a suggested next
command (/apple:next-version, /apple:bugfix for a hot crash, /apple:metadata for an ASO fix).
With no single app (or --portfolio): run steps 2-4 across every app in list_apps, then rank which
app to invest in next — biggest fixable revenue/retention/rating gap first (pairs with
portfolio-health-monitor). Output one line per app + the single highest-ROI move overall.
backlog written to ROADMAP.md + SIGNALS.md, with a routed next command.
not the roadmap.
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Automate customer engagement workflows including broadcast triggers, message analytics, segment management, and newsletter tracking through Customer.io via Composio
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Query live pathogen genomic surveillance data through the GenSpectrum LAPIS API to find which viral lineages are circulating now, how fast they are growing, and what mutations they carry. Use whenever a question depends on the current state of a pathogen population rather than on remembered facts - which SARS-CoV-2 variant is dominant, whether a Pango lineage is still designated or has been withdrawn, what clade or genotype of H5N1 is in a host or region, whether a PCR primer or assay target still matches circulating sequence, or how a lineage's prevalence has moved week to week. Triggers include "variant surveillance", "genomic surveillance", "what variant is circulating", "dominant variant", "Pango lineage", "lineage prevalence", "growth advantage", "SARS-CoV-2 variant", "XFG", "clade 2.3.4.4b", "H5N1 genotype", "influenza clade", "RSV/mpox/measles/dengue lineage", "CoV-Spectrum", "LAPIS", "Nextclade", "pango-designation", and any request to report what a pathogen population looks like today.
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Create a comprehensive product strategy using the 9-section Product Strategy Canvas — vision, segments, costs, value propositions, trade-offs, metrics, growth, capabilities, and defensibility. Use when building a product strategy, creating a strategic plan, or defining product direction.
Build a marketing performance report with key metrics, trend analysis, wins and misses, and prioritized optimization recommendations. Use when wrapping a campaign, when preparing weekly, monthly, or quarterly channel summaries for stakeholders, or when you need data translated into an executive summary with next-period priorities.
Calculate SaaS revenue, retention, and growth metrics. Use when diagnosing momentum, churn, expansion, or product-market-fit signals.
Take rshankras/store-signals 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.