app-store-screenshot-pipeline
Use when producing App Store screenshots from real app renders instead of faked CSS mockups, covering the headless simulator export stage, the…
Skill by phrypy
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/phrypy-app-store-screenshot-pipeline
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/app-store-screenshot-pipeline
What's inside
- Skill name
app-store-screenshot-pipeline- Description
- Use when producing App Store screenshots from real app renders instead of faked CSS mockups, covering the headless simulator export stage, the composition-to-device-sizes stage, and the gotchas that quietly waste hours. Pairs with ios-app-store-optimization, which covers what the screenshots should say.
- License
- MIT
- Instructions
- 85 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# App Store Screenshot Pipeline
Marketing screenshots should be the real app, rendered, not a div pretending to be the app.
A CSS mockup drifts from the product the moment you ship a UI change. A real render stays honest, and the listing keeps matching the first-run experience. Build screenshots in two stages: render real views from the app, then compose those PNGs into App Store sizes.
For what the screenshots should say, see `ios-app-store-optimization`. This skill only produces the files from that approved direction; it does not decide the listing message or visual identity.
## The Two Stages
1. headless render from the app, offscreen, on a booted simulator
2. compose those renders into App Store device sizes and upload
Keep the stages separate. Stage one owns pixels of real UI. Stage two owns layout, headlines, and final dimensions.
## Stage 1: Headless Render From The App
Add export functions behind an env gate so they never touch production paths.
```swift
if ProcessInfo.processInfo.environment["APP_EXPORT_SHOTS"] == "1" {
renderOffscreenAndWritePNGs()
}
```
Inside that path, rasterize specific views with SwiftUI `ImageRenderer` (or `UIGraphicsImageRenderer`) and write PNGs into the app's Documents directory.
Trigger it from a booted simulator and pass the env with the `SIMCTL_CHILD_` prefix:
```sh
xcrun simctl launch <device> <bundleid>
# with: SIMCTL_CHILD_APP_EXPORT_SHOTS=1
```
Then pull the PNGs out of the app's data container.
## Stage 1 Gotchas
These are the ones that cost real time. Read them before you start.
- `ImageRenderer` cannot rasterize a `NavigationStack`. You get a yellow box with a red prohibition symbol, not your view.
- it cannot rasterize `ScrollView` content either. That renders blank.
- a `Picker` with `.pickerStyle(.menu)` renders the same placeholder.
- so give yourself a chromeless render path: a plain `VStack`, no `NavigationStack`, no `ScrollView`, and present pickers as sheets rather than inline. Render the content, not the chrome.
- `simctl install` changes the app's data container id. Call `xcrun simctl get_app_container <device> <bundleid> data` after install, never before, or you will read the wrong folder.
- pass env to the launched app with the `SIMCTL_CHILD_` prefix. Without it the variable is set on `simctl`, not on your app.
- render at scale 2 to 3, and set `isOpaque = false` when you need transparency.
- App Store app icon PNGs must be 1024x1024 with no alpha channel. Strip alpha on the icon specifically, even if the rest of your renders keep it.
- when inspecting renders as an agent, downscale first with `sips` before viewing. Very large PNGs fail to display.
## Stage 2: Compose To App Store Sizes
Use a small Next.js plus Playwright generator. Lay out each slide in the browser using the real PNGs from stage one, then capture each slide at literal device pixel dimensions.
Required sizes:
- iPhone 6.9": 1320x2868
- iPad 13": 2064x2752
Capture at exact pixels. Do not capture at a CSS size and scale up, or text and device frames go soft.
One sync trap: if a Node export script keeps its own hardcoded slug or slide list, it will silently skip any slide you add to the manifest but forget to add to the script. Either drive the export from the manifest, or treat the two lists as one thing you change together. A new slide that never exports is easy to miss until upload.
## Upload With asc
Use `asc` and replace the set so the listing is exactly what you intend, with no leftover duplicates.
```sh
asc screenshots upload --replace --device-type APP_IPHONE_69 --path metadata/screenshots
asc screenshots upload --replace --device-type APP_IPAD_PRO_3GEN_129 --path metadata/screenshots
```
`--path` must point at the parent folder whose immediate children are locale directories. For example `metadata/screenshots` with a child `en-US/`, not the locale folder itself.
## Avoid
- div and CSS mockups standing in for real UI
- rasterizing a `NavigationStack`, `ScrollView`, or menu `Picker` and wondering why it is blank or a yellow box
- reading the data container path before install
- forgetting the `SIMCTL_CHILD_` prefix and assuming the env reached the app
- shipping a 1024x1024 icon that still carries an alpha channel
- a manifest slide that never reaches the exporter because a hardcoded list went stale
- uploading without `--replace` and leaving stale screenshots in the setFrom phrypy/ios-app-playbook, MIT.
More from phrypy/ios-app-playbook
- 0.539score
ios-hig-design
phrypy
Use when establishing or auditing the Apple-platform baseline for an iPhone or iPad interface, especially native conventions, system constraints, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-readiness
phrypy
Use when auditing a prepared iOS release for App Store or TestFlight submission risk, including metadata, privacy, capabilities, and reviewer-facing behavior.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-app-icon-and-brand-system
phrypy
Use when designing or reviewing an iOS app icon, lightweight brand system, launch assets, screenshot consistency, or App Store-facing visual identity choices.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-settings-and-data-safety-ux
phrypy
Use when designing iOS settings screens and trust-sensitive flows involving sync, restore, storage, imports, exports, destructive actions, permissions, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
solo-ios-release-flow
phrypy
Use when coordinating the end-to-end release sequence for a prepared SwiftUI app, from final verification through TestFlight or App Store submission.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
swiftui-product-ui
phrypy
Use when composing a new or materially changed SwiftUI product screen or flow that needs clear hierarchy, state ownership, and a focused user journey.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-featuring-nomination
phrypy
Use when submitting an App Store featuring nomination in App Store Connect (Featuring -> Nominations) for an update, launch, or in-app event, including how to…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ship-ios-build-one-command
phrypy
Use when you want to archive, sign, export, and upload an iOS App Store build in one command, or when a build is missing from App Store Connect and you need…
SkillCFreshness: C★ 7Claude Code +9 - 0.531score
ios-interface-polish
phrypy
Use after an iOS screen or flow works, when its visual execution, tactile feedback, or optical consistency still feels unfinished.
SkillCFreshness: C★ 7Claude Code +9 - 0.469score
ios-navigation-and-ia
phrypy
Use when deciding how an iPhone or iPad app should be organized, including tab bars, drill-down flows, sheets, settings grouping, information architecture…
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
ios-motion-and-microinteractions
phrypy
Use when refining iOS interaction polish, including subtle motion, haptics, transitions, state feedback, loading behavior, and microinteractions that should…
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
ios-adaptive-layout
phrypy
Use when adapting an iOS app across iPhone and iPad, handling safe areas, readable widths, compact versus regular size classes, split layouts, and SwiftUI…
SkillDFreshness: D★ 7Claude Code +9
Signals
- Stars
- 7
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Jun 23, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/phrypy/ios-app-playbook
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from phrypy
- 0.539score
ios-hig-design
phrypy
Use when establishing or auditing the Apple-platform baseline for an iPhone or iPad interface, especially native conventions, system constraints, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
solo-ios-release-flow
phrypy
Use when coordinating the end-to-end release sequence for a prepared SwiftUI app, from final verification through TestFlight or App Store submission.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
app-store-readiness
phrypy
Use when auditing a prepared iOS release for App Store or TestFlight submission risk, including metadata, privacy, capabilities, and reviewer-facing behavior.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-app-icon-and-brand-system
phrypy
Use when designing or reviewing an iOS app icon, lightweight brand system, launch assets, screenshot consistency, or App Store-facing visual identity choices.
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
ios-settings-and-data-safety-ux
phrypy
Use when designing iOS settings screens and trust-sensitive flows involving sync, restore, storage, imports, exports, destructive actions, permissions, and…
SkillCFreshness: C★ 7Claude Code +9 - 0.534score
swiftui-product-ui
phrypy
Use when composing a new or materially changed SwiftUI product screen or flow that needs clear hierarchy, state ownership, and a focused user journey.
SkillCFreshness: C★ 7Claude Code +9
Cite this page
app-store-screenshot-pipeline skill. Agent Mart. https://agentmart.dev/skills/phrypy-app-store-screenshot-pipeline (last updated 2026-10-24)