skills/app-store-screenshot-studio/SKILL.md
Capture real App Store screenshots via Xcode Build MCP, then generate App Store Connect-ready marketing screenshots with Nano Banana Pro (correct sizes, copy, compliance).
npx skillsauth add tc9011/my-skills app-store-screenshot-studioInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A step-by-step workflow for producing App Store Connect-ready screenshot sets.
Important: This is a sequential workflow. Complete each step fully and get user confirmation before moving to the next. Do not skip ahead.
Goal: Define what screenshots to capture and what marketing copy to use.
Create a brief with 5-10 frames. For each frame, specify:
| Field | Description |
|-------|-------------|
| frame_id | e.g., 01_hero, 02_search |
| screen | Which app screen/state to capture |
| headline | 2-5 words, benefit-led |
| subheadline | Optional, max 10 words |
| compliance_notes | IAP disclosure needed? Privacy wording? |
Rules of thumb:
See REFERENCE_APPLE.md for compliance guardrails.
STOP and ask the user:
"Here's the screenshot brief. Does this capture the right screens and messaging? Any changes before I start capturing?"
Do NOT proceed to Step 2 until the user approves the brief.
Goal: Get real screenshots from the app running in a simulator.
Before proceeding, check if Xcode Build MCP tools are available (e.g., xcodebuild_build, simulator_boot, simulator_screenshot).
If NOT available:
STOP. I need Xcode Build MCP to capture screenshots from the simulator.
Install it with:
claude mcp add XcodeBuildMCP npx xcodebuildmcp@latest
Or add to your MCP config (~/.claude.json):
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": ["-y", "xcodebuildmcp@latest"]
}
}
}
Alternatively, you can provide raw screenshots manually and I'll skip to Step 3.
Output convention:
./screenshots/raw/<locale>/<device_category>/<frame_id>.png
Example: ./screenshots/raw/en-US/iphone_6_9/01_hero.png
See STEP_2_CAPTURE.md for detailed capture guidance.
STOP and show the user the captured screenshots:
"Here are the raw screenshots I captured. Do these look correct? Any screens need to be recaptured?"
Do NOT proceed to Step 3 until the user confirms the raw screenshots are good.
Goal: Create low-resolution marketing composites for approval before investing in high-res.
Check if the Nano Banana Pro script exists:
ls ~/.claude/skills/nano-banana-pro/scripts/generate_image.py
If NOT available:
STOP. I need Nano Banana Pro to generate marketing composites.
Install it with:
git clone --depth 1 https://github.com/steipete/agent-scripts /tmp/agent-scripts && \
cp -r /tmp/agent-scripts/skills/nano-banana-pro ~/.claude/skills/ && \
rm -rf /tmp/agent-scripts
Check if the API key is set:
echo $GEMINI_API_KEY | head -c 10
If NOT available:
STOP. Nano Banana Pro requires a Gemini API key.
Set it with:
export GEMINI_API_KEY="your-key-here"
Get a key at: https://aistudio.google.com/apikey
For each frame in the brief, generate a 1K draft:
uv run ~/.claude/skills/nano-banana-pro/scripts/generate_image.py \
--input-image "./screenshots/raw/en-US/iphone_6_9/01_hero.png" \
--prompt "Your compositing prompt here" \
--filename "./screenshots/drafts/en-US/iphone_6_9/01_hero.png" \
--resolution 1K
CRITICAL:
--input-image is MANDATORY. Never omit it.--resolution 1K for drafts (faster, cheaper)../screenshots/drafts/ (not final/).See STEP_3_COMPOSITE.md for prompt templates.
STOP and show the user the draft composites:
"Here are the 1K draft composites. Do these look good? Any changes to copy, layout, or style before I generate the high-res finals?"
Do NOT proceed to Step 4 until the user approves the drafts.
Goal: Re-generate approved drafts at full resolution.
For each approved draft, regenerate at 2K (or 4K for iPad):
uv run ~/.claude/skills/nano-banana-pro/scripts/generate_image.py \
--input-image "./screenshots/raw/en-US/iphone_6_9/01_hero.png" \
--prompt "Same prompt as draft" \
--filename "./screenshots/final/en-US/iphone_6_9/01_hero.png" \
--resolution 2K
Output convention:
./screenshots/final/<locale>/<device_category>/<index>_<slug>.png
Run these checks:
STOP and show the user the final composites:
"Here are the final high-res composites. Ready to package for submission?"
Goal: Produce submission-ready assets.
./screenshots/final/{
"locales": {
"en-US": {
"iphone_6_9": [
"01_hero.png",
"02_search.png",
"03_detail.png"
]
}
}
}
End your response with:
tools
Three.js interaction - raycasting, controls, mouse/touch input, object selection. Use when handling user input, implementing click detection, adding camera controls, or creating interactive 3D experiences.
development
Three.js geometry creation - built-in shapes, BufferGeometry, custom geometry, instancing. Use when creating 3D shapes, working with vertices, building custom meshes, or optimizing with instanced rendering.
tools
Three.js scene setup, cameras, renderer, Object3D hierarchy, coordinate systems. Use when setting up 3D scenes, creating cameras, configuring renderers, managing object hierarchies, or working with transforms.
tools
Three.js animation - keyframe animation, skeletal animation, morph targets, animation mixing. Use when animating objects, playing GLTF animations, creating procedural motion, or blending animations.