mcpField
G
gpd-cli

gpd-cli

github.com/rudrankriyamDevelopment638 installsUpdated 17w ago
Repository

About gpd-cli

A skill for operating the `gpd` CLI to manage Google Play Developer Console tasks. It covers publishing, app data, monetization, analytics, and migration workflows, with safeguards for consequential actions.

Key features

  1. 01Upload builds and manage releases
  2. 02Configure rollouts and store listings
  3. 03Manage reviews, testers, and app vitals
  4. 04Operate products, subscriptions, and purchases
  5. 05Migrate Fastlane metadata

Use cases

  1. 01Publish an app to an internal or production track
  2. 02Stage or halt a production rollout
  3. 03Review app health and user feedback
  4. 04Import or export Fastlane store metadata

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/rudrankriyam/gpd-cli-skills --skill gpd-cli

After installing, type/gpd-cliin Claude Code to confirm it loaded.

Details

From the project README

Google Play Developer CLI

Manage Google Play Developer Console using the gpd command-line tool.

Related Skills

  • gpd-cli-usage: command discovery, flags, auth, and output conventions
  • gpd-release-flow: end-to-end track releases and rollouts
  • gpd-submission-health: preflight checks and validation
  • gpd-metadata-sync: listings, assets, and Fastlane metadata
  • gpd-ppp-pricing: regional pricing workflows
  • gpd-build-lifecycle: build processing and release state
  • gpd-betagroups: beta testers and distribution
  • gpd-id-resolver: resolve package, track, and monetization IDs

Prerequisites

gpd --version

export GPD_SERVICE_ACCOUNT_KEY='{"type": "service_account", ...}'
gpd auth status
gpd auth check --package com.example.app

Credential handling. Prefer pointing gpd at a key file with 0600 permissions (chmod 600 key.json) or fetching the key from a secret manager at runtime, rather than pasting the raw JSON into an environment variable. Inline export GPD_SERVICE_ACCOUNT_KEY='{...}' leaks the key into shell history and the process environment (visible via ps, /proc, and to child processes). Use a dedicated, least-privilege service account scoped to only the Play Console permissions the task needs, and never commit keys to source control.

CLI Usage

  • Use gpd --help and gpd <area> --help to confirm commands and flags.
  • Default output is minified JSON; use --pretty when you need readable output.
  • Use --dry-run when available before destructive operations.
  • Destructive actions require --confirm (for example: halt, rollback, delete).

Publishing

Upload & Release
gpd publish upload app.aab --package com.example.app
gpd publish release --package com.example.app --track internal --status draft
gpd publish release --package com.example.app --track production --status inProgress --version-code 123
gpd publish status --package com.example.app --track production
gpd publish tracks --package com.example.app
Rollouts
gpd publish rollout --package com.example.app --track production --percentage 10
gpd publish promote --package com.example.app --from-track beta --to-track production
gpd publish halt --package com.example.app --track production --confirm
gpd publish rollback --package com.example.app --track production --confirm
Edit Lifecycle
gpd publish edit create --package com.example.app
gpd publish edit list --package com.example.app
gpd publish edit validate EDIT_ID --package com.example.app
gpd publish edit commit EDIT_ID --package com.example.app
gpd publish edit delete EDIT_ID --package com.example.app
gpd publish upload app.aab --package com.example.app --edit-id EDIT_ID --no-auto-commit
Store Listing
gpd publish listing get --package com.example.app
gpd publish listing update --package com.example.app --locale en-US --title "My App"
gpd publish details get --package com.example.app
gpd publish details update --package com.example.app --contact-email [email protected]
Images
gpd publish images list phoneScreenshots --package com.example.app --locale en-US
gpd publish images upload icon icon.png --package com.example.app --locale en-US
gpd publish images delete phoneScreenshots IMAGE_ID --package com.example.app --locale en-US
gpd publish images deleteall featureGraphic --package com.example.app --locale en-US
gpd publish assets upload ./assets --package com.example.app
gpd publish assets spec
gpd publish deobfuscation upload mapping.txt --package com.example.app --type proguard --version-code 123
gpd publish internal-share upload app.aab --package com.example.app
Testers
gpd publish testers list --package com.example.app --track internal
gpd publish testers add --package com.example.app --track internal --group [email protected]

Reviews

gpd reviews list --package com.example.app --min-rating 1 --max-rating 3
gpd reviews list --package com.example.app --include-review-text --scan-limit 200
gpd reviews reply --package com.example.app --review-id REVIEW_ID --text "Thank you!"

Android Vitals

gpd vitals crashes --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals anrs --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals excessive-wakeups --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals slow-rendering --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals slow-start --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals errors issues search --package com.example.app --query "NullPointerException" --interval last30Days
gpd vitals errors reports search --package com.example.app --query "crash" --interval last7Days --deobfuscate
gpd vitals errors counts get --package com.example.app
gpd vitals errors counts query --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals anomalies list --package com.example.app --metric crashRate --time-period last30Days

Monetization

Products
gpd monetization products list --package com.example.app
gpd monetization products get sku123 --package com.example.app
gpd monetization products create --package com.example.app --product-id sku123 --type managed --default-price 990000
gpd monetization products update --package com.example.app sku123 --status inactive
gpd monetization products delete --package com.example.app sku123
gpd monetization onetimeproducts list --package com.example.app
gpd monetization onetimeproducts get sku123 --package com.example.app
gpd monetization onetimeproducts create --package com.example.app --product-id sku123 --type consumable
gpd monetization onetimeproducts update --package com.example.app sku123 --default-price 1990000
gpd monetization onetimeproducts delete --package com.example.app sku123
Subscriptions
gpd monetization subscriptions list --package com.example.app
gpd monetization subscriptions get sub123 --package com.example.app
gpd monetization subscriptions create --package com.example.app --product-id sub123 --file subscription.json
gpd monetization subscriptions update --package com.example.app sub123 --file subscription.json
gpd monetization subscriptions patch --package com.example.app sub123 --file subscription.json --update-mask basePlans
gpd monetization subscriptions delete --package com.example.app sub123 --confirm
gpd monetization subscriptions archive --package com.example.app sub123
gpd monetization subscriptions batchGet --package com.example.app --ids sub1,sub2,sub3
gpd monetization subscriptions batchUpdate --package com.example.app --file batch-update.json
Base Plans & Offers
gpd monetization baseplans activate --package com.example.app sub123 plan456
gpd monetization baseplans deactivate --package com.example.app sub123 plan456
gpd monetization baseplans delete --package com.example.app sub123 plan456 --confirm
gpd monetization baseplans migrate-prices --package com.example.app sub123 plan456 --region-code US --price-micros 999000
gpd monetization baseplans batch-migrate-prices --package com.example.app sub123 --file migrate.json
gpd monetization baseplans batch-update-states --package com.example.app sub123 --file states.json
gpd monetization offers list --package com.example.app sub123 plan456
gpd monetization offers create --package com.example.app sub123 plan456 --offer-id offer789 --file offer.json
gpd monetization offers get --package com.example.app sub123 plan456 offer789
gpd monetization offers delete --package com.example.app sub123 plan456 offer789 --confirm
gpd monetization offers activate --package com.example.app sub123 plan456 offer789
gpd monetization offers deactivate --package com.example.app sub123 plan456 offer789
gpd monetization offers batchGet --package com.example.app sub123 plan456 --offer-ids offer1,offer2
gpd monetization offers batchUpdate --package com.example.app sub123 plan456 --file offers.json
gpd monetization offers batchUpdateStates --package com.example.app sub123 plan456 --file states.json

Purchases

gpd purchases verify --package com.example.app --token TOKEN --product-id sku123
gpd purchases voided list --package com.example.app --start-time 2024-01-01T00:00:00Z --type product
gpd purchases products acknowledge --package com.example.app --product-id sku123 --token TOKEN
gpd purchases products consume --package com.example.app --product-id sku123 --token TOKEN
gpd purchases subscriptions cancel --package com.example.app --subscription-id sub123 --token TOKEN
gpd purchases subscriptions refund --package com.example.app --subscription-id sub123 --token TOKEN

Money-moving commands. purchases subscriptions refund and purchases subscriptions cancel move real money and affect a customer's subscription. Only run them after the user explicitly asks for that exact action and confirms the package, subscription ID, and token. Run with --dry-run first where supported and show the user the result before the real invocation.

Permissions

gpd permissions users list --developer-id DEV_ID
gpd permissions users create --developer-id DEV_ID --email [email protected] --developer-permissions CAN_VIEW_FINANCIAL_DATA_GLOBAL
gpd permissions grants create --package com.example.app --email [email protected] --app-permissions CAN_REPLY_TO_REVIEWS

Access-granting commands. permissions users create and permissions grants create grant a person access to the developer account or an app (including financial-data and review permissions). Only run them after the user explicitly asks and confirms the email address and the exact permissions being granted. Grant least privilege, run with --dry-run first where supported, and show the user the result before the real invocation.

Analytics

gpd analytics query --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31

Migration

Fastlane Supply
gpd migrate fastlane validate --dir fastlane/metadata/android
gpd migrate fastlane export --package com.example.app --output fastlane/metadata/android
gpd migrate fastlane export --package com.example.app --include-images --locales en-US,de-DE
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android --replace-images
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android --skip-images --dry-run

Agent Best Practices

  1. JSON output by default - all commands output minified JSON
  2. Use --pretty for readable JSON during debugging
  3. Use --dry-run before destructive operations
  4. Check exit codes: 0=success, 2=auth failure, 3=permission denied, 4=validation error, 5=rate limited, 6=network error, 7=not found, 8=conflict
  5. Use edit lifecycle for complex multi-step publishing with --edit-id and --no-auto-commit

Common Workflows

Deploy to Internal Track
gpd publish upload app.aab --package com.example.app
gpd publish release --package com.example.app --track internal --status completed
Staged Rollout to Production
gpd publish release --package com.example.app --track production --status inProgress --version-code 123
gpd publish rollout --package com.example.app --track production --percentage 5
gpd publish rollout --package com.example.app --track production --percentage 50
gpd publish rollout --package com.example.app --track production --percentage 100
Monitor App Health
gpd vitals crashes --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd reviews list --package com.example.app --min-rating 1 --max-rating 2
Migrate from Fastlane
gpd migrate fastlane validate --dir fastlane/metadata/android
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android --dry-run
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android

Comments

Markdown supported