
App Store Optimization
Plan App Store metadata and visual A/B tests with statistical sizing for icon, screenshot, title, and description experiments.
Overview
app-store-optimization is an agent skill for the Launch phase that plans and tracks A/B tests for App Store metadata and visual assets with typed effect-size defaults.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill app-store-optimizationWhat is this skill?
- ABTestPlanner class for icon, screenshot, title, and description tests
- Minimum detectable effect defaults: 10% icon, 8% screenshot, 5% title, 3% description
- Confidence tiers at 95%, 90%, and 80% for high, standard, and exploratory tests
- design_test() builds hypothesis, variants A/B, and success_metric around conversion_rate
- Tracks active_tests list for ongoing ASO experiment portfolio
- 4 ASO test types: icon, screenshot, title, description
- 4 MIN_EFFECT_SIZES defaults (10%, 8%, 5%, 3%)
- 3 CONFIDENCE_LEVELS (95%, 90%, 80%)
Adoption & trust: 1.3k installs on skills.sh; 40.1k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You change app store screenshots or titles without knowing if conversion moved or if the test was sized to detect real lifts.
Who is it for?
Indie iOS or Android developers running disciplined metadata and creative experiments on live listings.
Skip if: Pre-validate ideation with no app binary or store listing yet—do keyword research and scope first.
When should I use this skill?
When planning or tracking A/B tests for App Store metadata and visual assets to improve conversion_rate.
What do I get? / Deliverables
You get structured test designs with hypotheses, variants, metrics, and confidence levels ready to run in store console or ASO tooling.
- A/B test design dict with hypothesis, variants, and success_metric
- Portfolio view via active_tests tracking
Recommended Skills
Journey fit
How it compares
ASO experiment planner with effect-size heuristics—not a full keyword-rank tracker or ad network integration.
Common Questions / FAQ
Who is app-store-optimization for?
Solo builders shipping mobile apps who need reproducible A/B test plans for store conversion elements.
When should I use app-store-optimization?
At Launch when optimizing App Store or Play listings and comparing icon, screenshot, title, or description variants.
Is app-store-optimization safe to install?
Treat embedded Python like any repo code—review Security Audits on this Prism page before running in CI or with store API keys.
SKILL.md
READMESKILL.md - App Store Optimization
""" A/B testing module for App Store Optimization. Plans and tracks A/B tests for metadata and visual assets. """ from typing import Dict, List, Any, Optional import math class ABTestPlanner: """Plans and tracks A/B tests for ASO elements.""" # Minimum detectable effect sizes (conservative estimates) MIN_EFFECT_SIZES = { 'icon': 0.10, # 10% conversion improvement 'screenshot': 0.08, # 8% conversion improvement 'title': 0.05, # 5% conversion improvement 'description': 0.03 # 3% conversion improvement } # Statistical confidence levels CONFIDENCE_LEVELS = { 'high': 0.95, # 95% confidence 'standard': 0.90, # 90% confidence 'exploratory': 0.80 # 80% confidence } def __init__(self): """Initialize A/B test planner.""" self.active_tests = [] def design_test( self, test_type: str, variant_a: Dict[str, Any], variant_b: Dict[str, Any], hypothesis: str, success_metric: str = 'conversion_rate' ) -> Dict[str, Any]: """ Design an A/B test with hypothesis and variables. Args: test_type: Type of test ('icon', 'screenshot', 'title', 'description') variant_a: Control variant details variant_b: Test variant details hypothesis: Expected outcome hypothesis success_metric: Metric to optimize Returns: Test design with configuration """ test_design = { 'test_id': self._generate_test_id(test_type), 'test_type': test_type, 'hypothesis': hypothesis, 'variants': { 'a': { 'name': 'Control', 'details': variant_a, 'traffic_split': 0.5 }, 'b': { 'name': 'Variation', 'details': variant_b, 'traffic_split': 0.5 } }, 'success_metric': success_metric, 'secondary_metrics': self._get_secondary_metrics(test_type), 'minimum_effect_size': self.MIN_EFFECT_SIZES.get(test_type, 0.05), 'recommended_confidence': 'standard', 'best_practices': self._get_test_best_practices(test_type) } self.active_tests.append(test_design) return test_design def calculate_sample_size( self, baseline_conversion: float, minimum_detectable_effect: float, confidence_level: str = 'standard', power: float = 0.80 ) -> Dict[str, Any]: """ Calculate required sample size for statistical significance. Args: baseline_conversion: Current conversion rate (0-1) minimum_detectable_effect: Minimum effect size to detect (0-1) confidence_level: 'high', 'standard', or 'exploratory' power: Statistical power (typically 0.80 or 0.90) Returns: Sample size calculation with duration estimates """ alpha = 1 - self.CONFIDENCE_LEVELS[confidence_level] beta = 1 - power # Expected conversion for variant B expected_conversion_b = baseline_conversion * (1 + minimum_detectable_effect) # Z-scores for alpha and beta z_alpha = self._get_z_score(1 - alpha / 2) # Two-tailed test z_beta = self._get_z_score(power) # Pooled standard deviation p_pooled = (baseline_conversion + expected_conversion_b) / 2 sd_pooled = math.sqrt(2 * p_pooled * (1 - p_pooled)) # Sample size per variant n_per_variant = math.ceil( ((z_alpha + z_beta) ** 2 * sd_pooled ** 2) / ((expected_conversion_b - baseline_conversion) ** 2) ) total_sample_size = n_per_variant * 2 # Estimate duration based on typical traffic duration_estimates = self._esti