Generates Custom Product Page metadata templates with screenshot strategies, keyword targeting, and audience-specific messaging for up to 35 page variants. Use when creating targeted App Store pages for different audiences, ad campaigns, or traffic sources.
npx skills add https://github.com/rshankras/claude-code-apple-skills --skill custom-product-pages
Generate metadata templates for Custom Product Pages (CPPs) — targeted App Store product page variants optimized for specific audiences, ad campaigns, or traffic sources.
Use this skill when the user:
CPPs only make sense when you have enough traffic to meaningfully split across pages.
| Monthly Impressions | Recommendation |
|--------------------|----|
| Under 2,000 | Don't create CPPs. Focus on optimizing your single default page. You won't have enough traffic per page to know if it's working. |
| 2,000-10,000 | Create 1 CPP max for your most distinct audience segment or highest-spend ad campaign. Monitor for 4+ weeks. |
| 10,000-50,000 | Create 2-3 CPPs. Enough traffic to compare performance across pages. |
| 50,000+ | Full CPP strategy. Multiple pages per segment, ad campaign-specific pages, seasonal variants. |
Exception: If you're running paid Apple Search Ads campaigns, CPPs are valuable even at lower organic volume because ad traffic is directed specifically to your CPP — you're not splitting organic impressions.
You can assign keywords to a custom product page, per language, so App Store searches on that keyword land on the matching CPP instead of the default page:
| Feature | Custom Product Pages | Product Page Optimization |
|---------|---------------------|--------------------------|
| Purpose | Targeted pages for specific audiences | A/B test default page |
| Count | Up to 35 pages | Up to 3 treatments |
| Elements | Screenshots, previews, promo text | Icon, screenshots, previews |
| URL | Unique URL per page | Same URL, random distribution |
| Use with ads | Yes (assign to ad groups) | No |
Ask user via AskUserQuestion:
For each audience segment:
For each custom page:
Design the screenshot order for each page to match the audience's priorities:
At minimum, customize the first two screenshots — they're the most visible (per Apple's Tech Talk). And align each page's creative with the exact ad creative sending the traffic: the page should feel like a continuation of the ad, not a reset.
# Custom Product Pages Strategy: [App Name]
## Audience Segments
| Segment | Description | Traffic Source | Page URL |
|---------|-------------|---------------|----------|
| [Name] | [Who they are] | [Where they come from] | [CPP URL] |
---
## Page 1: [Audience Name]
### Audience Profile
- **Who**: [Description]
- **Pain point**: [What frustrates them]
- **Value prop**: [What you solve for them]
- **Traffic source**: [Where this page is linked]
### Promotional Text (170 chars)
> [Customized promotional text targeting this audience]
### Screenshot Strategy
| Position | Feature | Caption | Why This Audience Cares |
|----------|---------|---------|------------------------|
| 1 | [Feature] | [Caption text] | [Relevance to audience] |
| 2 | [Feature] | [Caption text] | [Relevance to audience] |
| 3 | [Feature] | [Caption text] | [Relevance to audience] |
| 4 | [Feature] | [Caption text] | [Relevance to audience] |
| 5 | [Feature] | [Caption text] | [Relevance to audience] |
### App Preview (if applicable)
- **Opening shot**: [What to show first]
- **Key demo**: [Core feature for this audience]
- **Closing CTA**: [Call to action]
### Keyword Alignment
Keywords this audience is likely searching for:
- [keyword 1]
- [keyword 2]
- [keyword 3]
---
## Page 2: [Audience Name]
[Same format as Page 1]
---
## Implementation Checklist
- [ ] Create custom pages in App Store Connect
- [ ] Upload audience-specific screenshots for each page
- [ ] Write promotional text for each page
- [ ] Get unique URLs for each page
- [ ] Configure Apple Search Ads to use specific pages (if applicable)
- [ ] Set up UTM tracking for non-ASA traffic sources
- [ ] Monitor conversion rates per page
- [ ] A/B test within pages after initial launch
Example: Productivity app for students, freelancers, and teams
| Page | Audience | Screenshot Focus | Promo Text Angle |
|------|----------|-----------------|-----------------|
| Default | General | Overview of all features | Broad appeal |
| CPP 1 | Students | Note-taking, study tools, price | "The study companion that..." |
| CPP 2 | Freelancers | Time tracking, invoicing, clients | "Manage your freelance..." |
| CPP 3 | Teams | Collaboration, sharing, admin | "Team productivity that..." |
Example: Fitness app running ads on multiple channels
| Page | Channel | Visual Style | Messaging |
|------|---------|-------------|-----------|
| Default | Organic | Clean, professional | Feature-focused |
| CPP 1 | Instagram | Lifestyle, aspirational | Transformation stories |
| CPP 2 | Google Search | Results-oriented | Data and progress tracking |
| CPP 3 | Podcast | Social proof | "As heard on [podcast]" |
Example: Photo editing app with multiple use cases
| Page | Feature | Target Search Terms |
|------|---------|-------------------|
| Default | All features | "photo editor" |
| CPP 1 | Portrait mode | "portrait editor", "selfie" |
| CPP 2 | Filters | "photo filters", "instagram" |
| CPP 3 | Collage maker | "photo collage", "grid" |
App Analytics reports each CPP separately: page views, downloads, conversion rate, average proceeds per paying user, retention, and sessions — segmentable by territory and source.
❌ NEVER compare custom pages head-to-head — each page sees a different audience, so raw CVR gaps are audience differences, not creative quality. For apples-to-apples creative testing, run PPO on a single page instead.
| Developer | Tactic | Result |
|-----------|--------|--------|
| FunPlus | Audience-matched pages per campaign | +33% conversion, −14% cost per install |
| CBS Sports | Seasonal March Madness pages | +20% conversion |
| Baidu / Otto | Pairing ASA ad variations with matching CPPs | +10–12% install rate |
generators/product-page-optimization — A/B test the default pageapp-store/screenshot-planner — Screenshot design and sequencingapp-store/keyword-optimizer — Keyword strategy per audienceapp-store/marketing-strategy — Overall promotional strategyA 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/custom-product-pages 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.