Makes App Store and Google Play screenshots for the app in the current repository using the open-screenshot-generator CLI (osg): it finds or imports the app's raw screenshots, picks or generates a…
Install the "store-screenshots" agent skill from https://github.com/dotnetdreamer/open-screenshot-generator/tree/main/skills/store-screenshots into .claude/skills/store-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-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.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add dotnetdreamer/open-screenshot-generator --skill store-screenshots -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "store-screenshots" agent skill from https://github.com/dotnetdreamer/open-screenshot-generator/tree/main/skills/store-screenshots into .agents/skills/store-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-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.
skills CLI
$ npx skills add dotnetdreamer/open-screenshot-generator --skill store-screenshots -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "store-screenshots" agent skill from https://github.com/dotnetdreamer/open-screenshot-generator/tree/main/skills/store-screenshots into .cursor/skills/store-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-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.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add dotnetdreamer/open-screenshot-generator --skill store-screenshots -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "store-screenshots" agent skill from https://github.com/dotnetdreamer/open-screenshot-generator/tree/main/skills/store-screenshots into .gemini/skills/store-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-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.
Installs 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).
skills CLI
$ npx skills add dotnetdreamer/open-screenshot-generator --skill store-screenshots -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "store-screenshots" agent skill from https://github.com/dotnetdreamer/open-screenshot-generator/tree/main/skills/store-screenshots into .github/skills/store-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-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.
skills CLI
$ npx skills add dotnetdreamer/open-screenshot-generator --skill store-screenshots -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "store-screenshots" agent skill from https://github.com/dotnetdreamer/open-screenshot-generator/tree/main/skills/store-screenshots into .opencode/skills/store-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-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.
Facts
Skill name
store-screenshots
GitHub stars
125
Token cost
~3.8k tokens
SKILL.md length
1,908 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
MIT
At a glance
Makes App Store and Google Play screenshots for the app in the current repository using the open-screenshot-generator CLI (osg): it finds or imports the app's raw screenshots, picks or generates a…
Works in 6 steps: make sure it runs → get the app's screenshots → scaffold, then choose a design → …
Follow ups on assets it already made: a new headline
SKILL.md covers Before anything: is this a…, Step 0: make sure it runs, Step 1: get the app's… and Step 2: scaffold, then choose…, plus 7 more sections
Calls npx and xcrun; needs OSG_API_KEY
What it does
Store Screenshots is an agent skill from dotnetdreamer/open-screenshot-generator. Makes App Store and Google Play screenshots for the app in the current repository using the open-screenshot-generator CLI (osg): it finds or imports the app's raw screenshots, picks or generates a design from 101 built in templates, writes the copy, renders every required size tier, verifies the files against the stores' own rules, and leaves a committed osg/osg.config.ts plus a project file that the next prompt edits instead of rebuilding. Use this whenever someone asks for store screenshots, App Store assets…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering App store release. It works with Tauri. The repository describes itself as: Open source Canva with CLI/GUI, AI Agent, MCP for App Store and Play Store screenshots. Free alternative to AppScreens, AppLaunchpad and Previewed. The licence is MIT.
When your agent uses it
Follow ups on assets it already made: a new headline
A darker background
A different font
Another template
Example prompts
“make screenshots for the store”
“I need App Store assets for this app”
“generate Play Store screenshots”
“/store-screenshots”
Requirements
Node.js
A credential in OSG_API_KEY
Workflow steps
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 556578e. It shows what the files ask for, not the result of running them.
Tool permissions
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.
Runs code
Shell commands in SKILL.md call:
npx
xcrun
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names these keys or tokens, usually read from environment variables:
OSG_API_KEY
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Store Screenshots loads about 3.8k tokens when it runs. Until then it costs about 252 tokens; SKILL.md has 1,908 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~252
When it runs· the whole SKILL.md, loaded when a task matches
~3.8k
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.
Safety
Auto-check passed
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.
Download SKILL.mdSave it as .claude/skills/store-screenshots/SKILL.md (or your agent's skills folder).
name
store-screenshots
description
Makes App Store and Google Play screenshots for the app in the current repository using the open-screenshot-generator CLI (`osg`): it finds or imports the app's raw screenshots, picks or generates a design from 101 built in templates, writes the copy, renders every required size tier, verifies the files against the stores' own rules, and leaves a committed osg/osg.config.ts plus a project file that the next prompt edits instead of rebuilding. Use this whenever someone asks for store screenshots, App Store assets, Play Store graphics, listing images or marketing screenshots, including bare phrasings like "make screenshots for the store", "I need App Store assets for this app", "generate Play Store screenshots", "design my listing images" or "make a screenshot set from these PNGs". Also use it for follow ups on assets it already made: a new headline, a darker background, a different font or device frame, another template, a reordered set, an extra size tier, or another language.
license
MIT
metadata.package
open-screenshot-generator
metadata.homepage
https://openscrgen.app
Store screenshots for the app in this repository
osg drives the real Open Screenshot Generator editor headlessly in a browser it finds on this
machine. There is no second renderer anywhere in the package, so a PNG it writes is byte for byte the
PNG the app writes. Your job is the part a CLI cannot do: choose which screens sell the app, write
copy in the product's voice, pick a design that fits, and drive the pipeline.
The end state: 3 to 5 finished store screenshots per required size tier under osg/out/,
osg verify exiting 0, and two committed files, osg/osg.config.ts and osg/project.json, that
hold every visible choice so the next prompt is a one line edit and one cheap re-render.
Before anything: is this a follow up?
Everything the tool decided lives in files the user can re-prompt against. If they exist, this is an
edit, not a build. Read them in full and jump to the dispatch table at the bottom.
bash
ls osg/osg.config.ts osg/project.json osg/out 2>/dev/null
osg/osg.config.ts is the source of truth for the background, the fonts, the device frame, the size
tiers, the locales and the template. osg/project.json is the design itself: artboards, elements and
the copy on them. Nothing lives only in your head, and nothing lives only in the browser. A user who
says "make it darker" is asking for a change to one of those two files.
Step 0: make sure it runs
bash
npx -y open-screenshot-generator@0 doctor
Every command below is npx -y open-screenshot-generator@0 <cmd>, called osg from here on. It needs
Node 20.12+ and a Chrome, Edge, Brave or Chromium on the machine. doctor reports what it found,
per check, and exits 1 if anything would fail later. Add --json when you want to parse it.
No browser: osg doctor --install-browser fetches one into the CLI's own cache. That build has no
H.264, which only matters for osg video, see the app-preview-video skill.
Behind a proxy or on a locked down runner: the first run hydrates artwork from the project's
deployment into a machine wide cache. osg cache warm does it up front, osg cache info shows the
size, and --offline afterwards refuses any network at all.
Step 1: get the app's screenshots
osg does not boot a simulator. That is deliberate: your agent harness already drives the app better
than a screenshot tool could, and the raw captures usually already exist. In order of preference:
Already in the repo. Look for fastlane/screenshots/, screenshots/, docs/screenshots/,
ios/fastlane/screenshots/, metadata/, or a *.png set beside the README. Prefer the largest
ones, 1206x2622 or better for iPhone.
Already on the store. If the app is published, pull the live listing:bash
npx -y open-screenshot-generator@0 import
That fetches the app's name, icon and current store screenshots so a redesign starts from what
users see today, and so you can tell the user what is changing.
Capture them. Use the platform's own tooling (xcrun simctl io booted screenshot, adb exec-out screencap -p, or the repo's existing UI test target) and drop the PNGs in one directory. Capture a
Release build: a Debug build paints dev banners into the marketing asset.
Set screenshots in the config to that directory. Names matter only for ordering, so 01-home.png,
02-search.png is the friendliest convention.
Choose 3 to 5 screens, not 10. The first two are the only ones most people see. Lead with the
screen that shows the app doing its job with real looking content, then the differentiator, then
proof (ratings, results, a chart), then the breadth screen.
Step 2: scaffold, then choose a design
bash
npx -y open-screenshot-generator@0 init
That writes osg/osg.config.ts and osg/.gitignore (which ignores osg/out/) and prints the next
steps. Then pick one of three routes, cheapest first.
A. A template you chose. Browse browser free, it is a local index:
101 templates in the categories screenshots, apple-watch, mac and play-feature-graphic. Each
entry says how many artboards and how many device slots it has, so pick one whose slot count matches
the number of screenshots you chose. Then:
bash
npx -y open-screenshot-generator@0 new --template somnia-sleep
B. Model free auto fill. Ranks every template against the screenshots you actually have,
places them, and fits the copy. No API key, no model, deterministic, a few seconds:
bash
npx -y open-screenshot-generator@0 fill
C. The AI agent. A design brief plus the screenshots, in one shot. Needs a key:
bash
OSG_API_KEY=... npx -y open-screenshot-generator@0 design "warm, confident, sleep tracking app, dark background, one benefit per screen"
powershell
$env:OSG_API_KEY = '...'
npx -y open-screenshot-generator@0 design "warm, confident, sleep tracking app, dark background, one benefit per screen"
Set ai.provider and ai.model in the config. Never put a key in the config file, it is committed.
Route B is the right default when the user gave you screenshots and no strong opinion. Route C is
right when they described a look. Route A is right when they named a style you can see in the list.
Step 3: write the copy yourself
The template ships placeholder headlines. Replace every one of them. This is the highest leverage
thing in the whole run and no template can do it for you.
One benefit per board, in the product's voice, 2 to 6 words for a headline.
Say what the user gets, not what the screen is called. "Sleep through the night" beats "Sleep tab".
A subhead is optional, and one long line always beats two cramped ones.
Text renders at roughly 3.3x the stored fontSize and the box clips, so a headline that grew needs
measure_element rather than a guess. See the editor-tools skill.
Apply the copy with one batched edit rather than a click path:
where osg/edits.json is a list of tool calls. That form is quoting proof, which matters because
this project's own author is on Windows and PowerShell mangles inline JSON:
For a single call, osg edit --tool update_element --args '{"elementId":"headline","content":"..."}'
works in bash; on Windows prefer the script file. osg call is the same thing with the raw JSON
result on stdout, for piping into jq.
Step 4: render every required tier
Set formats in the config, then:
bash
npx -y open-screenshot-generator@0 render
Store
Tier
Preset id
Pixels
Status
App Store
iPhone medium display
ios-6-3
1206x2622
required for every iPhone app
App Store
iPhone medium display, landscape
ios-6-3-landscape
2622x1206
same slot, for a landscape app; canvas preset, render as-is
App Store
iPhone large display
ios-6-9
1290x2796
optional separate slot
App Store
iPhone large display Pro Max
ios-6-9-promax
1320x2868
accepted large slot alternative; canvas preset, render as-is
App Store
iPad 13 inch
ipad-13
2064x2752
required if the app runs on iPad
App Store
Apple Watch Ultra 3
watch-ultra-3
422x514
required for a watch app; canvas preset, render as-is
App Store
Mac
mac-2560
2560x1600
required for a Mac app; canvas preset, render as-is
Play
Phone
play-phone
1080x1920
required, minimum 2 shots
Play
Feature graphic
play-feature-graphic
1024x500
required on every Play listing; canvas preset, render as-is
Apple scales the required medium tier down to the smaller ones, so formats: ['ios-6-3']
is a complete iPhone submission. The medium slot also accepts 1179x2556 and both landscape
sizes. Add ipad-13 only if the app actually runs on iPad, and never ship an iPad tier
that is a stretched iPhone screenshot.
Canvas presets are not all conversion ids. For a row marked "canvas preset",
use create_artboard with that preset, or update_artboard with its pixel
width and height, then render with formats: ['as-is']. Those tools are
available through osg call, osg edit, and MCP. ios and iphone are aliases
for the default 1206x2622 medium format; ios-large is an alias for 1290x2796.
Rendered files land under osg/out/. Do not guess a path: osg manifest writes
osg/osg.manifest.json naming every file that exists, with its tier, locale, board and pixel size.
Read that.
Show full SKILL.md (687 more words)Show less
Step 5: verify, then report
bash
npx -y open-screenshot-generator@0 verify
Exit 0 means the files satisfy the store rules. Exit 3 means they exist and a rule rejects them, with
the failing file and rule named. Exit 1 is your config or environment, exit 2 is the browser or a
tool call. Fix what it names, re-render, and run it again. The rules and every failure message are in
the store-compliance skill.
The whole pipeline in one command, for CI or a fresh clone:
bash
npx -y open-screenshot-generator@0 all
That runs doctor, build, render, video, manifest and verify in order and stops at the first failure.
Finish by telling the user: how many boards, which tiers, where the files are, what verify said,
and which two files to edit for the next change. If they want to look at it, osg studio opens the
real editor headed on the current project, and anything they change there is a change to the same
project file.
What is committed
<app-repo>/
osg/
osg.config.ts commit. every visible choice
project.json commit. the design itself
.gitignore commit. ignores out/
out/ do not commit. rendered PNGs, MP4s and the manifest
screenshots/ commit if the app's raw captures belong in the repo
A one run flag is a try. A config edit is a decision. If a flag produced something the user wants to
keep, write it into osg/osg.config.ts before you move on, or the next run loses it.
Follow up dispatch
A follow up prompt is a small edit plus the cheapest command that reflects it. Do not re-run the
pipeline, do not re-pick the template, and do not touch boards the user did not mention. Say which
file and field you changed so the next prompt can build on it.
The user asks for
Edit this file and field
Then run
Darker, lighter, a different background
osg.config.tsdesign.background
render
A different background on one board only
project.json via edit --tool set_background
render
A different headline or subhead
project.json via edit --tool update_elementcontent
render takes tens of seconds, fill a few, new rebuilds the project and throws away hand edits.
Prefer the row that changes the least.
Troubleshooting
"No Chrome, Edge or Chromium found." Install a branded browser or run osg doctor --install-browser. Pass --browser <absolute path> or set OSG_BROWSER to pin a specific build.
The editor loaded but never installed its headless bridge. You passed --editor-url at a
deployment older than this CLI. Drop the flag to use the bundled editor.
Bridge protocol mismatch. The message names both versions. Upgrade whichever side is behind.
A render finished but a board is empty or wrong. The design placed screenshots into device slots
by order. Check that screenshots points at the right directory and that the file count matches the
template's device slot count (osg templates --json reports it per template).
A font came out as a serif. An unknown family is rejected by the tools rather than substituted,
so a serif means the family never reached the element. osg call list_fonts is the allowlist.
The run is slow the first time and fast afterwards. That is artwork hydration into the machine
wide cache. osg cache warm moves the cost up front, osg cache prune reclaims it.
Everything is fine but the user is on a plane.--offline blocks the network and fails loudly on
a cache miss rather than rendering a screenshot with a hole in it.
Related skills
store-compliance for what osg verify checks, the required tiers, and osg upload
app-preview-video for the MP4 App Preview, which has different rules from screenshots
store-localization for one design in up to 57 languages
editor-tools for driving the live editor tool by tool over MCP
Store 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.
Store Screenshots compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Store Screenshots this skilldotnetdreamer/open-screenshot-generator
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.
Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands.
Publish a SoloMD release to the stores that have no usable submission API — Google Play Console and Microsoft Partner Center — by driving them through the local Unzoo Browser REST API.
Bulk-localize subscription, subscription-group, and in-app purchase display names across App Store locales using asc, including API 4.4.1 version-scoped v2 resources.
Builds an App Store App Preview video (and a Play Store or landing page promo cut) from a screen recording of the app, using the open-screenshot-generator CLI (osg video): it starts from one of 20…
Drive Open Screenshot Generator headlessly (puppeteer-core + Edge) to take UI screenshots, add palette elements, upload device screenshots, export artboard PNGs, and regenerate the 3D device…
Drives the live Open Screenshot Generator editor tool by tool over MCP, using osg mcp to expose the design tools (artboards, elements, backgrounds, fonts, the asset libraries, templates, App Preview…
Checks that rendered store assets will actually be accepted, and then ships them, using the open-screenshot-generator CLI: osg verify audits the produced PNGs and MP4s against App Store and Google…
Makes App Store and Google Play screenshots for the app in the current repository using the open-screenshot-generator CLI (osg): it finds or imports the app's raw screenshots, picks or generates a…. Store Screenshots is an agent skill from dotnetdreamer/open-screenshot-generator.ts plus a project file that the next prompt edits instead of rebuilding.
When should I use Store Screenshots?
Store Screenshots fits situations like: follow ups on assets it already made: a new headline; A darker background; A different font; another template.
How do I install Store Screenshots in Claude Code?
Run `npx skills add dotnetdreamer/open-screenshot-generator --skill store-screenshots -a claude-code`. Or copy the skill folder (skills/store-screenshots in dotnetdreamer/open-screenshot-generator) into .claude/skills/store-screenshots in your project. Claude Code loads it when a task matches its description.
How do I install Store Screenshots in Codex?
Run `npx skills add dotnetdreamer/open-screenshot-generator --skill store-screenshots -a codex`. Or copy the skill folder (skills/store-screenshots in dotnetdreamer/open-screenshot-generator) into .agents/skills/store-screenshots in your project. Codex loads it when a task matches its description.
Can I use Store Screenshots in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnetdreamer/open-screenshot-generator --skill store-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/store-screenshots, .gemini/skills/store-screenshots, .github/skills/store-screenshots and .opencode/skills/store-screenshots in your project.
What does Store Screenshots need to run?
Going by SKILL.md and its folder, Store Screenshots needs the command-line tools its instructions call (npx and xcrun) and credentials named OSG_API_KEY. Our summary lists: Node.js; A credential in OSG_API_KEY.
Does Store Screenshots access the network?
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Is Store Screenshots safe to install?
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.
What licence does Store Screenshots use?
Store Screenshots is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Store Screenshots use?
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Store Screenshots?
Skills that share tags, products or a category with Store Screenshots: Aso Appstore Screenshots (adamlyttleapps/claude-skill-aso-appstore-screenshots, 1.8k stars), Asc Ppp Pricing (rorkai/app-store-connect-cli-skills, 1.1k stars), Store Submit (zhitongblog/solomd, 1.2k stars) and Workbuddy Skin Studio (cdredfox/workbuddy-skin-studio, 198 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Store Screenshots?
dotnetdreamer (a GitHub user) maintains it in dotnetdreamer/open-screenshot-generator, which has 125 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 7, 2026.