The Problem
Designing App Store and Google Play screenshots today requires manually assembling device frames, adjusting copy for each locale, and exporting correctly sized PNG bundles. Teams often end up with inconsistent assets, duplicated effort across platforms, and no way to iteratively refine a deck without starting over.
What This Does
This repo supplies a full‑screen editor that a coding agent can scaffold on demand. The core lives in skills/app-store-screenshots/template/: a Next.js app (src/app/page.tsx) that renders a connected canvas, device‑frame components (components/editor/device-frames.tsx), an inspector panel (components/editor/inspector.tsx), and a slide‑sidebar (sidebar.tsx). Project state is persisted to app-store-screenshots.json via the API route src/app/api/project/route.ts and mirrored to localStorage for instant reloads. Uploaded source screenshots land in public/screenshots/uploaded/<hash>.png through src/app/api/upload/route.ts. Export generates a zip organized by platform, device, resolution, and locale (README describes the one‑click bundle). Style‑prompt files under skills/app-store-screenshots/style‑prompts/ let you reuse themes or tailor RTL‑aware layouts.
How It Is Wired
- Entry point – the
skillsCLI (ornpx skills add https://github.com/moses-y/app-store-screenshots) registers the skill and creates the template folder. Runningnpm run devinsideskills/app-store-screenshots/template/starts the Next.js dev server. - State flow –
src/lib/storage.tsreads/writesapp-store-screenshots.json; the inspector updates React state that flows intosrc/lib/types.tsdefinitions. Autosave callsPOST /api/project(routesrc/app/api/project/route.ts). - Upload – users drag source images into the picker (
components/editor/screenshot-picker.tsx), which posts toPOST /api/upload(src/app/api/upload/route.ts); saved files are placed underpublic/screenshots/uploaded/. - Export – the toolbar’s export button triggers a client‑side function that zips cropped PNGs for each platform/device; the logic resides in
src/lib/utils.ts(export‑related helpers). - External touches – the only network write is the upload POST; the only filesystem writes are the JSON state file and the uploaded PNGs under
public/. No external APIs or databases are used beyond the local server.
How To Use It
Setup
# Install the skill for the current agent (e.g., Claude Code)
npx skills add https://github.com/moses-y/app-store-screenshots
# or clone manually
git clone https://github.com/moses-y/app-store-screenshots ~/.claude/skills/app-store-screenshots
Configuration No environment variables or API keys are required. The template’s package.json lists next, react, tailwindcss, and related dev dependencies; install them with pnpm install (or npm install) inside the template folder.
Running it
cd skills/app-store-screenshots/template
pnpm install
pnpm run dev # starts Next.js at http://localhost:3000
Prompt the agent: “Build App Store screenshots for my habit tracker. I want 6 slides, clean minimal style, warm neutrals, and a calm premium feel.” The skill will scaffold the editor; you can then adjust style prompts, add screenshots via the UI, and export the bundle.
Real‑World Use
A product team preparing a launch for a new meditation app uses the skill to generate a six‑slide iOS deck. They select the “clean‑light” theme from skills/app-store-screenshots/style‑prompts/01-retro-rubberhose-mascot.md, upload iPhone 13 simulator screenshots, tweak headline copy in the inspector, and export. The resulting zip contains @2× and @3× PNGs for iPhone, iPad, and the App Store’s required sizes, ready for submission.
Code Health & Issues
- Med – No CI/CD pipeline detected;
.github/contains only issue templates and a funding file, no automated build/test gate. - Low – Root‑level dependencies are declared without a lockfile;
skills/app-store-screenshots/template/package.jsonlists dependencies but the only lockfile present isbun.lockinside the template, leaving the root non‑reproducible acrossnpm/pnpminstalls.
The Bottom Line
The repo delivers a ready‑made, editor‑first scaffold for App Store & Google Play screenshots, eliminating the manual stitching of frames and exports. Its strength lies in the connected canvas, persistent JSON state, and themable style prompts. Gaps are the absent CI/CD loop and the missing root lockfile, which should be added for reproducible builds and automated quality gates. Teams that need quick, iteratively editable screenshot decks will find it practical; organizations requiring strict CI integration may need to supply their own pipeline.