0.5.0: mobile apps and games positioning (README, site, og image, skills, CLI, MCP, adapters), MCP tools for subscriptions and catalog diff, tests, changelog

This commit is contained in:
CRTkafa 2026-10-11 01:47:09 +08:00
parent 205f65828f
commit c48eead0e0
51 changed files with 960 additions and 318 deletions

View file

@ -1,6 +1,6 @@
---
name: store-screenshots
description: Produce store screenshots and the Play feature graphic for a mobile game in every required size and many languages - capture raw frames from the running game (web build via playwright, iOS Simulator via simctl, Android emulator or device via adb, or a folder of frames from any engine), write per-language marketing copy (incl. RTL Arabic and CJK fonts), render captioned scenes with device frames, review them in a local gallery, A/B variants for Play store listing experiments and App Store Product Page Optimization tests (created and filled through the API), JPEG copies for Play, and upload to both stores. Use when the user needs App Store / Google Play screenshots, preview images, a feature graphic, localized screenshot captions, or screenshot sizes.
description: Produce store screenshots and the Play feature graphic for a mobile app or game in every required size and many languages - capture raw frames from the running app or game (web build via playwright, iOS Simulator via simctl, Android emulator or device via adb, or a folder of frames from any engine), write per-language marketing copy (incl. RTL Arabic and CJK fonts), render captioned scenes with device frames, review them in a local gallery, A/B variants for Play store listing experiments and App Store Product Page Optimization tests (created and filled through the API), JPEG copies for Play, and upload to both stores. Use when the user needs App Store / Google Play screenshots, preview images, a feature graphic, localized screenshot captions, or screenshot sizes.
---
# Store screenshots
@ -43,8 +43,10 @@ simulator screenshot fits after the bar is cropped. Play tablet sizes (tab7 / ta
in a plain Android tablet body instead of the iPad one.
## Steps
1. **Game switches.** Give the game URL params for screenshots: language, fixed seed, no ads / analytics / purchase
UI, skip tutorial, jump to a level, freeze at a moment. Frames must show real gameplay (store rule).
1. **Screenshot switches.** Give the app or game params for screenshots: language, demo data or a fixed seed, no ads /
analytics / purchase UI, skip onboarding or the tutorial, jump to a screen or level, freeze at a moment. Frames must
show the real app in use (store rule; for a game: real gameplay). Apps: sign in to a demo account with realistic,
non-personal sample data; never show real user data.
2. **Capture.** Configure `shots.capture` with a `source` (or pass `--source`), then
`storebound shots capture --lang en --dry` to see the plan, and without `--dry` to capture. Frames land in
`<shots.frames>/<lang>/<phone|tablet>/<shot>.png`, local, not committed.
@ -66,15 +68,19 @@ in a plain Android tablet body instead of the iPad one.
`cropTop` rows (the status bar) so they fit the template: by default the frame's bar share per device class
(162 px on a 6.9" iPhone, 48 px on a 13" iPad with `apple.ipad`); set `cropTop: 120` or `{ phone, tablet }` for
other devices, and `shots.phone` / `shots.tablet` to that device's screen in points. Capture warns when a frame's
aspect does not match. Give the game time to load: `delayMs` (simulator / emulator; 2500 default is short for a
aspect does not match. Give the app time to load: `delayMs` (simulator / emulator; 2500 default is short for a
cold start) or `waitFor` (web).
3. **Copy.** `store/shots/copy.json`: per language, per scene: `eyebrow`, `title` [white line, gold line], `sub`,
`badges` [[big, small]]. Short and true (only claim what is in the game); about 15 Latin characters per title line.
Natural marketing tone per language, not literal translation; use the game's own terms.
`badges` [[big, small]] (game style). Short and true (only claim what is in the app); about 15 Latin characters per title line.
Natural marketing tone per language, not literal translation; use the app's own terms.
4. **Fonts.** `storebound shots fonts` downloads title/body fonts and a Noto subset for every non-Latin script found in
the copy (CJK, Arabic, Hebrew, Devanagari, Thai, Cyrillic/Greek). Re-run after copy edits.
5. **Scenes.** `shots.scenes`: palette (fire, violet, blast, green, night, sky, gold, candy or custom), frames (one
front phone + optional back phones with x / dy / scale / rotate), badge slots (y, side, icon, hot, stars).
5. **Style and scenes.** `shots.style`: `game` (sunburst, sparkles, outlined titles, badges) or `app` (calm gradient,
one clean device frame, headline + subline, no sparkles; badges only as quiet chips when the copy has them).
Default: `app` for the app / subscription-app profiles, `game` otherwise. `shots.scenes`: palette (game: fire,
violet, blast, green, night, sky, gold, candy; app: mist, paper, mint, sand, rose, sky, ocean, slate; or custom
`{ bg, glow, ink, shadow }`), frames (one front phone + optional back phones with x / dy / scale / rotate), badge
slots (y, side, icon, hot, stars). Fonts default to Lilita One + Montserrat (game) or Inter (app).
6. **Render.** `storebound shots render --lang en` first, review `store/renders/en/sheet.png` (contact sheet, sizes
packed into a grid), then
all languages in the background: `storebound shots render > .storebound/render.log 2>&1 &`.