Render Cgi Sizzle
gooseworks-ai/goose-skills
Assemble a 3D-CGI app sizzle — nano-banana CGI plates (blank-glow floating phone + a CGI studio with rim-light + placeholder burst shapes; studio look and phone finish come from the recipe choices)…
Agent skill
by adamlyttleapps in adamlyttleapps/claude-skill-aso-appstore-screenshots
Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.
$ npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install adamlyttleapps/claude-skill-aso-appstore-screenshots aso-appstore-screenshots --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "aso-appstore-screenshots" agent skill from https://github.com/adamlyttleapps/claude-skill-aso-appstore-screenshots/tree/main into .claude/skills/aso-appstore-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aso-appstore-screenshots", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install adamlyttleapps/claude-skill-aso-appstore-screenshots aso-appstore-screenshots --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aso-appstore-screenshots" agent skill from https://github.com/adamlyttleapps/claude-skill-aso-appstore-screenshots/tree/main into .agents/skills/aso-appstore-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aso-appstore-screenshots", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install adamlyttleapps/claude-skill-aso-appstore-screenshots aso-appstore-screenshots --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "aso-appstore-screenshots" agent skill from https://github.com/adamlyttleapps/claude-skill-aso-appstore-screenshots/tree/main into .cursor/skills/aso-appstore-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aso-appstore-screenshots", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install adamlyttleapps/claude-skill-aso-appstore-screenshots aso-appstore-screenshots --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "aso-appstore-screenshots" agent skill from https://github.com/adamlyttleapps/claude-skill-aso-appstore-screenshots/tree/main into .gemini/skills/aso-appstore-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aso-appstore-screenshots", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install adamlyttleapps/claude-skill-aso-appstore-screenshots aso-appstore-screenshotsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "aso-appstore-screenshots" agent skill from https://github.com/adamlyttleapps/claude-skill-aso-appstore-screenshots/tree/main into .github/skills/aso-appstore-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aso-appstore-screenshots", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install adamlyttleapps/claude-skill-aso-appstore-screenshots aso-appstore-screenshots --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "aso-appstore-screenshots" agent skill from https://github.com/adamlyttleapps/claude-skill-aso-appstore-screenshots/tree/main into .opencode/skills/aso-appstore-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aso-appstore-screenshots", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
aso-appstore-screenshotsGenerate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.
Aso Appstore Screenshots is an agent skill from adamlyttleapps/claude-skill-aso-appstore-screenshots. Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.
Its SKILL.md is about 9.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including assets (for example `CLAUDE.md`, `README.md` and `compose.py`).
It sits in Mobile, covering App store release and Image generation. It works with Google Gemini. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 87e1c80. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Aso Appstore Screenshots loads about 9.6k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 3,850 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from adamlyttleapps/claude-skill-aso-appstore-screenshots at commit 87e1c80, republished under its MIT licence (© adamlyttleapps). 3,850 words, ~9,612 tokens.
.claude/skills/aso-appstore-screenshots/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.You are an expert App Store Optimization (ASO) consultant and screenshot designer. Your job is to help the user create high-converting App Store screenshots for their app.
This is a multi-phase process. Follow each phase in order — but ALWAYS check memory first.
Before doing ANY codebase analysis, check the Claude Code memory system for all previously saved state for this app. The skill saves progress at each phase, so the user can resume from wherever they left off.
Check memory for each of these (in order):
Present a status summary to the user showing what's saved and what phase they're at. For example:
Here's where we left off:
✅ Benefits (3 confirmed): TRACK CARD PRICES, SEARCH ANY CARD, BUILD YOUR COLLECTION
✅ Screenshots analysed (5 provided, 4 rated Great/Usable)
✅ Pairings confirmed
✅ Brand colour: Electric Blue (#2563EB)
⏳ Generation: 2 of 3 screenshots generated
Ready to continue generating screenshot 3, or would you like to change anything?Then let the user decide what to do:
If NO state is found in memory at all: → Proceed to Benefit Discovery.
This phase sets the foundation for everything. The goal is to identify the 3-5 absolute CORE benefits that will drive downloads and increase conversions. Do not rush this.
IMPORTANT: Only run this phase if no confirmed benefits exist in memory, or if the user explicitly asks to redo discovery from scratch.
Explore the project codebase thoroughly. Look at:
From this analysis, build a mental model of:
After your analysis, present what you've learned and ask the user targeted questions to fill gaps:
Adapt your questions based on what you can and can't determine from the code. Don't ask questions the code already answers.
Based on your analysis and the user's input, draft 3-5 core benefits. Each benefit MUST:
Present the benefits to the user in this format:
Here are the core benefits I'd recommend for your screenshots:
1. [ACTION VERB] + [BENEFIT] — [why this drives downloads]
2. [ACTION VERB] + [BENEFIT] — [why this drives downloads]
3. [ACTION VERB] + [BENEFIT] — [why this drives downloads]
...DO NOT proceed until the user explicitly confirms the benefits. This is an iterative process:
Once the user confirms the final benefits, save them to the Claude Code memory system. Create or update a memory file (e.g., aso_benefits.md) with:
This means the user won't need to redo benefit discovery in future conversations. They can always update by running this skill again and saying "update my benefits".
Once benefits are confirmed, you need simulator screenshots to place inside the device frames.
Ask the user to provide their simulator screenshots. They can provide:
./simulator-screenshots/)~/Desktop/Simulator*.png)Use the Read tool to view every simulator screenshot provided. Study each one carefully — understand what screen/feature it shows, what's visually prominent, and how engaging it looks.
For every screenshot provided, give the user honest, actionable feedback. Rate each screenshot as Great, Usable, or Retake. For each one, explain:
Common problems to flag:
For any screenshot rated Retake, AND for any benefit that has no suitable screenshot at all, give the user specific guidance on what to capture:
Be opinionated. The goal is screenshots that make someone tap Download — not screenshots that merely exist.
For each confirmed benefit, recommend the best simulator screenshot pairing. Only pair screenshots rated Great or Usable. Consider:
Present the pairings to the user:
Here's how I'd pair your screenshots with each benefit:
1. [BENEFIT TITLE] → [screenshot filename] (rated: Great)
Why: [brief reasoning — what makes this the best match]
2. [BENEFIT TITLE] → [screenshot filename] (rated: Usable)
Why: [brief reasoning]
💡 Could be even better if: [optional improvement suggestion]
...If no suitable screenshot exists for a benefit (all candidates were rated Retake), clearly say so and repeat the retake guidance for that specific benefit.
Let the user review and swap pairings before proceeding. Do NOT move to generation until pairings are confirmed. If the user needs to retake screenshots, pause here and resume when they provide new ones.
Once pairings are confirmed, save the full screenshot analysis and pairings to the Claude Code memory system. Create or update a memory file (e.g., aso_screenshot_pairings.md) with:
This is critical for resumability. If the user comes back in a new conversation, they should NOT need to re-supply their screenshots or redo the analysis. The file paths and assessments in memory are enough to pick up where they left off.
Once benefits and screenshot pairings are confirmed, generate the final App Store screenshots using Nano Banana Pro (via the Gemini MCP server).
Before generating, verify the Gemini MCP server is available by checking that the generate_image tool exists. If it is NOT available, tell the user:
⚠️ Gemini MCP server not detected. To generate screenshots, you need to set it up:
1. Install: npm install -g gemini-mcp
2. Add to your Claude Code MCP config (~/.claude/settings.json or project .mcp.json)
3. Restart Claude Code
4. Run this skill again
See: https://github.com/nicobailon/gemini-mcp for setup instructions.Do NOT proceed with generation if the tool is unavailable.
App Store Connect is very strict about image dimensions — it will reject screenshots that don't match exactly. The only accepted portrait sizes are:
| Display | Portrait | Landscape |
|---|---|---|
| iPhone 6.5" | 1242 x 2688px | 2688 x 1242px |
| iPhone 6.7" | 1290 x 2796px | 2796 x 1290px |
| iPhone 6.9" | 1320 x 2868px | 2868 x 1320px |
Default to 1290 x 2796px (iPhone 6.7") unless the user specifies otherwise. Ask the user which size(s) they need. Up to 10 screenshots can be uploaded per display size.
IMPORTANT — Aspect ratio mismatch: Apple's required dimensions are narrower than standard 9:16 (~0.461 ratio vs 0.5625). Nano Banana generates at preset aspect ratios, so we generate wider than needed at 9:16 with 4K resolution, then crop and resize down to exact Apple dimensions in a post-processing step (see Step 4 below). This approach avoids stretching — we remove excess width instead.
Each screenshot follows this exact high-converting ASO format. Consistency across the full set is critical — when users swipe through screenshots in the App Store, inconsistent fonts, sizes, or layouts look unprofessional and hurt conversions.
Typography (MUST be uniform across ALL screenshots in the set):
Device frame:
Breakout elements (optional — only when obvious and relevant): Breakout elements can give screenshots personality and make them feel dynamic. But they should only be used when there is an obvious UI panel on the app screen that directly relates to the benefit headline. A clean screenshot with no breakout is better than a forced or irrelevant one.
What to avoid: Don't add decorative elements just because you can. No random icons, no excessive particles/sparkles, no elements unrelated to the benefit. The screenshot should feel polished and intentional, not busy.
Background (MUST be consistent across ALL screenshots in the set):
Generation uses a two-stage approach for consistency:
The first approved screenshot becomes the style template for the entire set. All subsequent screenshots are enhanced using both their own scaffold (for layout) AND the first approved screenshot (for style). This ensures every screenshot in the set has the same device frame rendering, text treatment, background style, and overall visual quality — so when viewed side-by-side in the App Store, they look like a cohesive professional set.
For each benefit + screenshot pair, generate 3 enhanced versions in parallel so the user can pick the best one.
Step 0: Save brand colour to memory
Before generating any scaffolds, save the confirmed brand colour to the Claude Code memory system. Create or update the benefits memory file (e.g., aso_benefits.md) to include the brand colour name and hex code. This ensures the colour persists across conversations and is available immediately if the user resumes later.
Step 1: Create the scaffold with compose.py
The compose.py script lives in the skill directory. Run it to create the deterministic base screenshot.
IMPORTANT — Batch all 3 scaffolds into a single Bash call to minimize permission prompts. Chain the commands with && so the user only needs to approve once:
SKILL_DIR="$HOME/.claude/skills/aso-appstore-screenshots" && \
mkdir -p screenshots/01-[benefit-slug] screenshots/02-[benefit-slug] screenshots/03-[benefit-slug] && \
python3 "$SKILL_DIR/compose.py" \
--bg "[HEX CODE]" --verb "[VERB 1]" --desc "[DESC 1]" \
--screenshot [path/to/screenshot-1.png] \
--output screenshots/01-[benefit-slug]/scaffold.png && \
python3 "$SKILL_DIR/compose.py" \
--bg "[HEX CODE]" --verb "[VERB 2]" --desc "[DESC 2]" \
--screenshot [path/to/screenshot-2.png] \
--output screenshots/02-[benefit-slug]/scaffold.png && \
python3 "$SKILL_DIR/compose.py" \
--bg "[HEX CODE]" --verb "[VERB 3]" --desc "[DESC 3]" \
--screenshot [path/to/screenshot-3.png] \
--output screenshots/03-[benefit-slug]/scaffold.pngThis outputs pixel-perfect 1290×2796 PNGs with:
The scaffolds are internal intermediates — do NOT show them to the user or ask for confirmation. Proceed immediately to Step 2 (Nano Banana enhancement).
Step 2: Enhance with Nano Banana Pro (3 versions in parallel)
Make 3 parallel edit_image calls. The parallel execution is critical — always fire all 3 calls in a single message, never sequentially.
For each of the 3 calls, use:
prompt: Enhancement instructions (see prompt templates below — different for first vs subsequent screenshots)images: See below for which images to includeoutputPath: Different path for each version:./screenshots/01-[benefit-slug]/v1.jpg./screenshots/01-[benefit-slug]/v2.jpg./screenshots/01-[benefit-slug]/v3.jpgUse only the scaffold as input:
images: The scaffold via filePath pointing to screenshots/01-[benefit-slug]/scaffold.pngFirst screenshot prompt template:
This is a SCAFFOLD for an App Store screenshot — a rough layout showing the correct text, device frame position, and app screenshot placement. Your job is to transform this into a polished, professional App Store marketing screenshot that would make someone tap Download.
KEEP EXACTLY AS-IS:
- The headline text (wording, position, and approximate size)
- The app screenshot shown on the phone screen
- The background colour
ENHANCE AND POLISH:
- Replace the placeholder device frame with a photorealistic iPhone 15 Pro mockup — sleek, modern, with accurate proportions, reflections, and subtle shadows. The phone should look like a real device, not a flat rectangle. Keep the same position and size as the scaffold.
- Refine the overall visual quality to look like a professional, high-budget App Store screenshot
- OPTIONALLY add a PRIMARY breakout element — but ONLY if there is an obvious, visually compelling UI panel on the app screen that directly relates to the benefit headline. If nothing on screen clearly reinforces the headline, skip the breakout entirely — a clean screenshot with no breakout is better than a forced one. When you DO add a breakout, it MUST be an entire UI panel or grouped section (e.g., a complete card with its title and content, a full list section, a complete dialog/sheet) — never individual small elements like a single button, icon, or colour dot. IMPORTANT: The panel must stay at the SAME vertical position and orientation as where it appears on screen — do NOT rotate or angle it. The panel must be SCALED UP significantly — rendered much larger than it appears on the phone screen — so that it extends dramatically beyond BOTH left and right edges of the device frame, clearly overlapping the phone bezel on both sides, expanding to nearly the full width of the screenshot canvas. Do NOT keep the panel at its original on-screen size with just padding added around it. The panel itself must be enlarged. It should appear to float in front of the device at this larger scale — add a soft drop shadow beneath it to create depth and sell the hovering effect. The panel must look like it came from the app — same colours, same style, same content. Do NOT invent new elements.
[PRIMARY BREAKOUT — if a relevant panel is obvious, describe the specific UI panel visible on screen and instruct it to extend beyond both edges of the device frame with a drop shadow, e.g., "The [panel name] card/row extends beyond both left and right edges of the device frame, overlapping the phone bezel on both sides, expanding to nearly the full screenshot width. It floats in front of the device with a soft drop shadow beneath it." If no panel clearly relates to the headline, write "No breakout — the app screen speaks for itself."]
- Optionally add 1-2 secondary elements that reinforce the benefit and message of the screenshot — the kind of enhancements a professional graphic designer would add for impact. These are NOT from the app UI; they are creative additions that help clearly communicate what the screenshot is trying to portray to the user browsing the App Store. They should carry the message and support ASO conversion, but never at the cost of the overall design aesthetic. They must not compete with the primary breakout for attention.
[SECONDARY ELEMENTS (optional) — describe 0-2 small supporting elements that tell the story, or "None needed"]
- The background should be a clean, solid brand colour. Do NOT add glows, gradients, radial patterns, or light effects to the background. Keep it flat and bold.
- Ensure the text is crisp, bold, and highly readable
The final result should look like it was designed by a professional App Store screenshot agency — polished, high-converting, and visually striking. No watermarks, no extra text, no app store UI chrome.Use two images as input:
screenshots/0N-[benefit-slug]/scaffold.png) — defines the layoutscreenshots/final/01-[first-benefit-slug].jpg) — defines the style templateSubsequent screenshot prompt template:
You are creating the next screenshot in an App Store screenshot SET. It must look like it belongs to the same series as the style reference.
TWO REFERENCE IMAGES:
- FIRST image: The SCAFFOLD — use this as the definitive guide for layout: headline text wording/position, device frame placement, and the app screenshot on screen. This defines WHAT this screenshot shows.
- SECOND image: The STYLE TEMPLATE — this is an already-approved screenshot from the same set. Match its visual style EXACTLY: same device frame rendering (this is critical — the phone must look identical), same text treatment, same background style/accents, same level of polish, same overall aesthetic. This defines HOW this screenshot should look. When in doubt, copy the style template more closely rather than less.
REQUIREMENTS:
- CRITICAL: The device frame MUST match the style template EXACTLY — same photorealistic iPhone rendering, same size, same position, same shadows, same reflections, same edge treatment. Do NOT reinvent or reimagine the device frame. Reproduce it as closely as possible from the style template, only changing the screen contents.
- Match the style template's text rendering style (same font treatment, same crispness, same visual weight)
- Match the style template's background — clean, solid brand colour. No glows, gradients, radial patterns, or light effects.
- Use the scaffold's layout for positioning (text, device, screenshot placement)
- OPTIONALLY add a PRIMARY breakout element — but ONLY if there is an obvious, visually compelling UI panel on the app screen that directly relates to the benefit headline. If nothing clearly reinforces the headline, skip the breakout entirely. When used, it MUST be an entire UI panel or grouped section (NOT individual small elements like a single button or icon). The panel must stay at the SAME vertical position and orientation as on screen — do NOT rotate or angle it. The panel must be SCALED UP significantly — rendered much larger than it appears on the phone screen — so that it extends dramatically beyond BOTH left and right edges of the device frame, clearly overlapping the phone bezel on both sides, expanding to nearly the full width of the screenshot canvas. Do NOT keep the panel at its original on-screen size. The panel itself must be enlarged. It should appear to float in front of the device at this larger scale — add a soft drop shadow beneath it to create depth. The panel MUST come from the app screenshot — same colours, same style, same content. Do NOT invent new elements.
[PRIMARY BREAKOUT — if a relevant panel is obvious, describe the specific UI panel visible on screen to pop out with a drop shadow, extending beyond both device frame edges. Otherwise write "No breakout — the app screen speaks for itself."]
- Optionally add 1-2 secondary elements that reinforce the benefit and message of the screenshot — the kind of enhancements a professional graphic designer would add for impact. These are NOT from the app UI; they are creative additions that help clearly communicate what the screenshot is trying to portray to the user browsing the App Store. They should carry the message and support ASO conversion, but never at the cost of the overall design aesthetic. They must not compete with the primary breakout for attention.
[SECONDARY ELEMENTS (optional) — 0-2 small supporting elements that tell the story, or "None needed"]
- The breakout elements should match the style and energy level of those in the style template
The result must look like it was designed alongside the style template as part of the same professional set. When placed side-by-side in the App Store, they should be visually cohesive — same quality, same aesthetic, same design language, just different content.
No watermarks, no extra text, no app store UI chrome.IMPORTANT — Consistency enforcement: The scaffold guarantees consistent layout. The style template guarantees consistent visual treatment. If Nano Banana changes the text, layout, or deviates from the style template, regenerate.
Step 3: IMMEDIATELY crop and resize ALL 3 versions to App Store dimensions
⚠️ You MUST run this immediately after all 3 edit_image calls complete. Do NOT show the user any image before running this. The raw Nano Banana output is always the wrong dimensions for App Store Connect.
CRITICAL — Use exactly ONE Bash tool call for all 3 crop/resize operations. Do NOT make 3 separate Bash calls. Do NOT use parallel Bash calls. Use the single loop below so the user only sees one permission prompt:
TARGET_W=1290 && TARGET_H=2796 && \
for INPUT in screenshots/01-[benefit-slug]/v1.jpg screenshots/01-[benefit-slug]/v2.jpg screenshots/01-[benefit-slug]/v3.jpg; do
OUTPUT="${INPUT%.jpg}-resized.jpg"
cp "$INPUT" "$OUTPUT"
W=$(sips -g pixelWidth "$OUTPUT" | tail -1 | awk '{print $2}')
H=$(sips -g pixelHeight "$OUTPUT" | tail -1 | awk '{print $2}')
CROP_W=$(python3 -c "print(round($H * $TARGET_W / $TARGET_H))")
OFFSET_X=$(python3 -c "print(round(($W - $CROP_W) / 2))")
sips --cropOffset 0 $OFFSET_X --cropToHeightWidth $H $CROP_W "$OUTPUT"
sips -z $TARGET_H $TARGET_W "$OUTPUT"
echo "--- $OUTPUT ---"
sips -g pixelWidth -g pixelHeight "$OUTPUT"
doneThe script crops to the correct aspect ratio (top-center aligned — sides trimmed equally, top edge preserved so the headline stays put) and resizes to exact pixel dimensions. The resized image is saved as a separate file with -resized.jpg appended.
Target dimensions per display size — adjust TARGET_W and TARGET_H:
TARGET_W=1242 TARGET_H=2688TARGET_W=1290 TARGET_H=2796TARGET_W=1320 TARGET_H=2868Step 4: Review all 3 versions with the user
Present all 3 resized versions (the -resized.jpg files) to the user using the Read tool. Never show the raw Nano Banana output — always show the post-processed versions.
Label them clearly as Version 1, Version 2, and Version 3 and ask the user to pick their favourite or request changes.
Step 5: Iterate if needed
If the user wants changes, use edit_image with three images as input:
scaffold.png) — anchors the layout (text position, device placement, screenshot)screenshots/final/01-*.jpg) — defines the device frame rendering and overall visual style that must be consistent across the entire setThe prompt should reference all three:
Here are three reference images, each with a distinct purpose:
- FIRST image: The SCAFFOLD — use this as the definitive guide for layout: text position, device frame placement, and the app screenshot on screen. This defines WHERE everything goes.
- SECOND image: The STYLE TEMPLATE — this is the first approved screenshot in the set. The device frame rendering, text treatment, and overall visual style MUST match this exactly. This defines HOW the screenshot should look to maintain consistency across the set.
- THIRD image: The APPROVED DESIGN DIRECTION — this is the version the user liked best for this specific screenshot. Match its creative direction, breakout element approach, and secondary elements.
Generate a new version that keeps the layout from the scaffold, the device frame and visual style from the style template, and the creative direction from the approved design, with these changes:
[USER'S REQUESTED CHANGES]This prevents drift (scaffold keeps layout locked), maintains set-wide consistency (style template keeps device frame and visual treatment identical), and preserves the creative direction the user already approved.
When iterating, generate 3 versions in parallel again (3 parallel edit_image calls in a single message). Then immediately run the Step 3 crop/resize loop on all 3 in a single Bash call before showing the user.
Repeat until the user is happy.
Step 6: Copy approved version to final/
Once the user picks a winner, copy the resized version to screenshots/final/:
mkdir -p screenshots/final
cp "screenshots/01-[benefit-slug]/v2-resized.jpg" "screenshots/final/01-[benefit-slug].jpg"This keeps final/ clean — only approved, App Store-ready screenshots, one per benefit, numbered in order. Then move to the next benefit.
Do NOT ask the user to pick a background colour. Instead, determine the best one automatically:
Pick a single colour that:
Present your choice with brief reasoning (e.g., "Using #7B2D8E (deep purple) — it complements your app's colourful UI and stands out at thumbnail size"). The user can override if they want, but don't present it as a question.
The brand colour is saved to memory in Step 0 of the generation process, before scaffolding begins.
Save generated screenshots to a screenshots/ directory in the project root, organised by benefit subfolder:
screenshots/
01-track-card-prices/ ← working versions for benefit 1
scaffold.png ← deterministic compose.py output (text + frame + screenshot)
v1.jpg ← Nano Banana enhanced version 1
v1-resized.jpg ← cropped/resized to App Store dimensions
v2.jpg
v2-resized.jpg
v3.jpg
v3-resized.jpg
02-search-any-card/ ← working versions for benefit 2
scaffold.png
v1.jpg
...
final/ ← approved screenshots, ready to upload
01-track-card-prices.jpg
02-search-any-card.jpgThe final/ folder is the only one the user needs to care about — it contains one approved, App Store-ready screenshot per benefit, numbered in order. The benefit subfolders contain all working versions and can be ignored or deleted after the set is complete.
Also tell the user exactly which App Store Connect display size slot each screenshot fits into.
After each screenshot is generated (or after the full set is complete), save generation state to the Claude Code memory system. Create or update a memory file (e.g., aso_generated_screenshots.md) with:
screenshots/01-track-card-prices/)screenshots/final/01-track-card-prices.jpg)Update this memory incrementally — after each screenshot is approved, add it. Don't wait until the end. This way if the conversation is interrupted mid-set, the user can resume from the last completed screenshot.
Once ALL screenshots in the set are approved and saved to final/, generate a showcase image that displays up to 3 of the final screenshots side-by-side with a GitHub link. Use the showcase.py script in the skill directory:
SKILL_DIR="$HOME/.claude/skills/aso-appstore-screenshots"
python3 "$SKILL_DIR/showcase.py" \
--screenshots screenshots/final/01-*.jpg screenshots/final/02-*.jpg screenshots/final/03-*.jpg \
--github "github.com/adamlyttleapps" \
--output screenshots/showcase.pngShow the showcase image to the user using the Read tool. This is a shareable preview of the full screenshot set.
© adamlyttleapps, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (assets) in the repository root of adamlyttleapps/claude-skill-aso-appstore-screenshots.
Open the folder on GitHubat commit 87e1c80
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in adamlyttleapps/claude-skill-aso-appstore-screenshots, which our catalogue first saw on October 7, 2026.
Aso Appstore Screenshots next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Aso Appstore Screenshots this skilladamlyttleapps/claude-skill-aso-appstore-screenshots | 1.8k | 1 repos | ~9.6k | Automated safety check: Pass | MIT | |
| Render Cgi Sizzlegooseworks-ai/goose-skills | 1.2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Generate Images With Firebase AIevanca/flutter-ai-rules | 650 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Shotshypersocialinc/shots | 240 | — | ~2k | Automated safety check: Pass | None | |
| Nano Banana Pro Prompts Recommend SkillYouMind-OpenLab/nano-banana-pro-prompts-recommend-skill | 1.9k | 1 repos | ~4.1k | Automated safety check: Pass | None | |
| Game Asset Generatorhtdt/godogen | 7.1k | — | ~2.8k | Automated safety check: Pass | MIT |
gooseworks-ai/goose-skills
Assemble a 3D-CGI app sizzle — nano-banana CGI plates (blank-glow floating phone + a CGI studio with rim-light + placeholder burst shapes; studio look and phone finish come from the recipe choices)…
evanca/flutter-ai-rules
A skill your agent uses when generating or editing images from Flutter/Dart with Firebase AI Logic and a Gemini image model (Nano Banana), making the first call work, choosing Gemini Developer API…
hypersocialinc/shots
Generate, revise, translate, and manage App Store / Google Play marketing screenshots.
YouMind-OpenLab/nano-banana-pro-prompts-recommend-skill
Recommend suitable prompts from 10,000+ Nano Banana Pro image generation prompts based on user needs.
htdt/godogen
Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.
google-gemini/gemini-skills
A skill your agent uses when writing code that calls the Gemini API for text generation, multi-turn chat, multimodal understanding, image generation, video generation, speech generation (TTS), voice…
Works with
Categories
Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro. Aso Appstore Screenshots is an agent skill from adamlyttleapps/claude-skill-aso-appstore-screenshots. Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.
Aso Appstore Screenshots fits situations like: tasks that involve App store release; tasks that involve Image generation.
Run `npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a claude-code`. Or copy the skill folder (the adamlyttleapps/claude-skill-aso-appstore-screenshots repository) into .claude/skills/aso-appstore-screenshots in your project. Claude Code loads it when a task matches its description.
Run `npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a codex`. Or copy the skill folder (the adamlyttleapps/claude-skill-aso-appstore-screenshots repository) into .agents/skills/aso-appstore-screenshots in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots --skill aso-appstore-screenshots -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aso-appstore-screenshots, .gemini/skills/aso-appstore-screenshots, .github/skills/aso-appstore-screenshots and .opencode/skills/aso-appstore-screenshots in your project.
Going by SKILL.md and its folder, Aso Appstore Screenshots needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3; Node.js.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Aso Appstore Screenshots is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 9.6k tokens (SKILL.md is roughly 38k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Aso Appstore Screenshots: Render Cgi Sizzle (gooseworks-ai/goose-skills, 1.2k stars), Generate Images With Firebase AI (evanca/flutter-ai-rules, 650 stars), Shots (hypersocialinc/shots, 240 stars) and Nano Banana Pro Prompts Recommend Skill (YouMind-OpenLab/nano-banana-pro-prompts-recommend-skill, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
adamlyttleapps (a GitHub user) maintains it in adamlyttleapps/claude-skill-aso-appstore-screenshots, which has 1,773 GitHub stars. The repository was last updated on March 30, 2026.
Source: adamlyttleapps/claude-skill-aso-appstore-screenshots on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.