Skip to content
Back to skills

Gplay Screenshot Automation

ASecurity

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.

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 9, 2026
developmentgoshellbash

Works with

  • cli

Security analysis

A100/100

Scanned October 9, 2026

npx -y skills add deonmenezes/mobile-app-skill --skill gplay-screenshot-automation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gplay Screenshot Automation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gplay Screenshot Automation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/deonmenezes-gplay-screenshot-automation/badge)](https://www.skillsdirectory.com/skills/deonmenezes-gplay-screenshot-automation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gplay-screenshot-automation
description: 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.
---

# 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:

```bash
# 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:

```bash
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:

```bash
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:

```bash
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:

```bash
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

```bash
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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.