Latest upstream author date included at this registry's pinned revision.

gplay-screenshot-automation

Synced v1.1.0 License: MIT Source: tamtom/gplay-cli-skills/skills/gplay-screenshot-automation Commit: 10301b2 Latest included change:

Manage, validate, and upload Google Play listing screenshots and graphics with the gplay CLI. Use when organizing screenshots by locale and device type and pushing them to a Play listing via gplay images upload, sync import-images, or a release.

Summary

Purpose
Organizes and validates existing Android store screenshots and graphics, preparing them for Google Play listing updates.
When to use
Use it when prepared images need to be arranged by locale and device type, checked against Play's requirements, and uploaded through an edit or release.
Outputs
A locale-organized image set is uploaded to a Google Play edit or included in a release, with the edit validated before commit.
Upstream changes (2, latest included 2026-07-04)
439c9ae fix(skills): audit cleanup — correct every command, cut dead weight, add drift guardrail (#3) Reworked the skill from end-to-end screenshot capture automation into gplay-focused listing-image management, adding a Fastlane directory layout and validation, upload, and edit workflows while removing detailed capture, framing, and CI pipelines.
f423854 feat: add submission-checks, screenshot-automation, subscription-localization skills Added an initial skill covering Android screenshot capture across devices and locales, image framing and validation, Google Play uploads, and an end-to-end CI pipeline.
npx skills add "lettucebo/Skills#v2.2.0@gplay-screenshot-automation" --full-depth

⚠ Available after v2.2.0 is published

Google Play Screenshot Management

Use this skill to organize, validate, and upload Android screenshots and store graphics to a Google Play listing with gplay. This skill covers the gplay-specific upload/validate flow — not screenshot capture.

Capturing the raw images is standard Android tooling and not gplay-specific: take them with adb shell screencap (then adb pull), or drive state-based captures with an Espresso / UI Automator instrumentation test, switching emulator locale via setprop persist.sys.locale when you need per-language shots. Produce PNGs organized by locale and device type, then use the commands below.

Directory layout

gplay expects a Fastlane-style tree. sync import-images and release --screenshots-dir both read this shape:

metadata/
  en-US/
    images/
      phoneScreenshots/
        1_home.png
        2_search.png
      tenInchScreenshots/
        1_home.png
      featureGraphic.png
  de-DE/
    images/
      phoneScreenshots/
        1_home.png

Screenshots upload in filename order, so prefix with 1_, 2_, etc. to control ordering on the store.

Image types

Type Usage
phoneScreenshots Phone screenshots (required, 2-8)
sevenInchScreenshots 7-inch tablet screenshots
tenInchScreenshots 10-inch tablet screenshots
tvScreenshots Android TV screenshots
wearScreenshots Wear OS screenshots
featureGraphic Feature graphic (1024x500)
promoGraphic Promo graphic (180x120)
icon App icon (512x512)
tvBanner TV banner (1280x720)

Google Play requires PNG or JPEG (PNG recommended), max 8 MB per image.

1) Validate before uploading

Always validate the directory first — this catches count/dimension/format issues before you spend an upload:

# Validate all locales
gplay validate screenshots --dir ./metadata --output table

# Validate a single locale
gplay validate screenshots --dir ./metadata --locale en-US --output table

2) Upload

Option A — bulk import (preferred)

Imports every image in the Fastlane tree in one command. Requires an open edit:

EDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id')

gplay sync import-images \
  --package com.example.app \
  --edit "$EDIT_ID" \
  --dir ./metadata          # add --locale en-US to import one locale, --dry-run to preview

gplay edits validate --package com.example.app --edit "$EDIT_ID"
gplay edits commit   --package com.example.app --edit "$EDIT_ID"

Option B — individual images

Use when you need fine control over specific files:

EDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id')

gplay images upload \
  --package com.example.app \
  --edit "$EDIT_ID" \
  --locale en-US \
  --type phoneScreenshots \
  --file ./metadata/en-US/images/phoneScreenshots/1_home.png

gplay images upload \
  --package com.example.app \
  --edit "$EDIT_ID" \
  --locale en-US \
  --type featureGraphic \
  --file ./metadata/en-US/images/featureGraphic.png

gplay edits validate --package com.example.app --edit "$EDIT_ID"
gplay edits commit   --package com.example.app --edit "$EDIT_ID"

Option C — as part of a release

Upload screenshots alongside a bundle in one release flow:

gplay release \
  --package com.example.app \
  --track production \
  --bundle app-release.aab \
  --screenshots-dir ./metadata \
  --release-notes @release-notes.json

3) Replace existing screenshots

delete-all clears a type for a locale before re-uploading. It defaults --confirm to false and will refuse without it, so --confirm is REQUIRED:

EDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id')

gplay images delete-all \
  --package com.example.app \
  --edit "$EDIT_ID" \
  --locale en-US \
  --type phoneScreenshots \
  --confirm

gplay images upload \
  --package com.example.app \
  --edit "$EDIT_ID" \
  --locale en-US \
  --type phoneScreenshots \
  --file ./metadata/en-US/images/phoneScreenshots/1_home.png

gplay edits validate --package com.example.app --edit "$EDIT_ID"
gplay edits commit   --package com.example.app --edit "$EDIT_ID"

4) Verify what's live

gplay images list \
  --package com.example.app \
  --edit "$EDIT_ID" \
  --locale en-US \
  --type phoneScreenshots \
  --output table

Agent behavior

  • Confirm exact flags with --help before running commands.
  • Always run gplay validate screenshots before uploading.
  • Prefer gplay sync import-images over many individual gplay images upload calls.
  • Every write goes through an edit: create → upload/import → validate → commit.
  • images delete-all needs --confirm; without it the command refuses.
  • Use explicit long flags (--package, --edit, --locale, --type, --file).
  • Default to JSON for machine steps, --output table for human review.

History

v1.1.0 baseline-verified 10301b2
v1.1.0 license-refresh 10301b2