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:
data-ai
Writing, exploit — shape raw material into an article, paragraph by paragraph.
testing
Reference for writing and editing skills well — the vocabulary and principles that make a skill predictable.
data-ai
Writing, explore — mine raw fragments, no structure yet.
tools
Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it.