app-store-screenshots
A skill for AI coding agents that scaffolds a production-ready Next.js editor for App Store and Google Play marketing screenshots.
A skill for AI-powered coding agents (Claude Code, Cursor, Windsurf, etc.) that automates marketing screenshot capture for SwiftUI iOS apps.
$ npx -y skills add ParthJadhav/ios-marketing-capture --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
What's inside
A skill for AI-powered coding agents (Claude Code, Cursor, Windsurf, etc.) that automates marketing screenshot capture for SwiftUI iOS apps. It builds an in-app capture system, seeds demo data, snapshots every screen and UI element, and loops across all your locales automatically.
#if DEBUG-gated capture system to your app target โ zero production footprintImageRenderer at 3x with transparency-AppleLanguagesTabView, NavigationStack, NavigationSplitViewnpx skills add ParthJadhav/ios-marketing-capture
This works with Claude Code, Cursor, Windsurf, OpenCode, Codex, and 40+ other agents.
Install globally (available across all projects):
npx skills add ParthJadhav/ios-marketing-capture -g
Install for a specific agent:
npx skills add ParthJadhav/ios-marketing-capture -a claude-code
git clone https://github.com/ParthJadhav/ios-marketing-capture ~/.claude/skills/ios-marketing-capture
Once installed, the skill triggers automatically when you ask your agent to:
Or just tell the agent what you need:
> Capture marketing screenshots for my app across all locales
The agent will ask you about your screens, elements, locales, device, appearance, and seed data before writing any code.
These are good starting prompts because they provide context while still leaving room for the skill to guide the process.
Capture marketing screenshots for my coffee tracking app.
I want Home, Shelf, Coffee Detail, Brew Timer, and Settings.
Also render coffee cards and all my widgets as isolated elements.
Capture across en, de, es, fr, ja.
Generate locale screenshots for my habit tracker app.
I need the dashboard, habit detail, streak view, and settings.
Light mode only, iPhone 17 simulator.
All 5 locales in my Localizable.xcstrings.
Capture marketing assets for my finance app.
I want the overview, transaction list, budget detail, and charts.
Render the spending chart and category cards as isolated elements.
English and German only.
Automate App Store screenshot capture for my workout app.
Capture the main dashboard, workout detail mid-session, and history.
Render all my WidgetKit widgets (small, medium, lock screen) as isolated PNGs.
The skill uses an in-app capture approach instead of XCUITest / Fastlane:
ImageRenderer, UIWindow.drawHierarchyxcodebuild build once, then simctl launch per locale (no test-bundle overhead)ImageRenderer on widget views must run inside the app processEach screenshot is a self-contained CaptureStep:
struct CaptureStep {
let name: String // "01-home"
let navigate: @MainActor () -> Void // put the app in the right state
let settle: Duration // wait for animations
let cleanup: (@MainActor () -> Void)? // tear down before next step
}
The coordinator is a simple loop โ no hardcoded screen sequences. The agent composes steps for your specific navigation architecture.
The skill covers three navigation architectures:
| Pattern | How steps drive it |
|---|---|
TabView(selection:) | setTab(index) |
NavigationStack + router | router.push(.route) / router.popToRoot() |
NavigationSplitView | Set sidebar + detail selection bindings |
Isolated components are rendered via ImageRenderer at 3x scale with natural background inside rounded corners and transparency outside:
MarketingElementHarness.renderElement(
name: "card-morning-blend",
width: 380,
cornerRadius: 20,
background: theme.background
) {
CoffeeCard(coffee: coffee, theme: theme)
.padding(.horizontal, 16)
.padding(.vertical, 12)
}
Widget rendering handles the quirks of rendering WidgetKit views outside the widget process (missing containerBackground, missing padding, ProgressView rendering bugs).
The skill guides the agent to create:
YourApp/
โโโ Debug/
โ โโโ MarketingCapture.swift # Capture system (DEBUG-only)
โโโ ContentView.swift # Modified โ DEBUG hook for seed + coordinator
โโโ Views/.../TimerView.swift # Modified โ primed state hooks (if needed)
scripts/
โโโ capture-marketing.sh # Build + install + per-locale loop
marketing/
en/
01-home.png
02-detail.png
03-settings.png
elements/
card-morning-blend.png
widget-pulse-small.png
chart-cupping.png
de/
...
es/
...
The skill documents 11 real bugs discovered during development. These are all baked into the skill's guidance so the agent avoids them automatically:
| # | Gotcha | What happens |
|---|---|---|
| 1 | Live Activities persist across launches | Next locale crashes on stale SwiftData references |
| 2 | Re-seeding per locale | CloudKit sync churn causes crashes |
| 3 | VMs setup before seed | Hold stale empty snapshots |
| 4 | Setting trigger binding to nil | Doesn't dismiss fullScreenCover โ wrong screenshot |
| 5 | NavigationPath can't be popped externally | Must capture clean stack before pushed detail |
| 6 | membershipExceptions is an INCLUSION list | Widget target membership goes backwards |
| 7 | ImageRenderer + ProgressView | Renders as prohibited symbol without explicit style |
| 8 | .containerBackground outside WidgetKit | No-op โ widget renders have no background |
| 9 | iPhone 8 Plus gone on iOS 26 | Legacy 6.5" simulator unavailable |
| 10 | Locale launch argument format | Parens are mandatory: (xx) not xx |
| 11 | SwiftUI animations in ImageRenderer | Captures frame 0, not the animated state |
Use app-store-screenshots as a post-processing step to composite the captured PNGs into Apple-style marketing pages with device mockups, headlines, and gradients.
ImageRenderer, @Observable)Contributions are welcome, especially around:
MIT
.github/
FUNDING.yml
ISSUE_TEMPLATE/
bug_report.yml
config.yml
feature_request.yml
pull_request_template.md
CONTRIBUTING.md
LICENSE
README.md
SKILL.md
templates/
capture-marketing.sh.template
MarketingCapture.swift.templateA skill for AI coding agents that scaffolds a production-ready Next.js editor for App Store and Google Play marketing screenshots.
FAQ
ios-marketing-capture is a Claude Code plugin with 1 hand-picked skill for marketing work, indexed on Flowy. Install it with the command on its page. It includes ios-marketing-capture. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.