Don't pass a human-readable app name where a package name is required. Google Play commands require the exact package identifier (e.g. com.example.app), not the display name — using a display name silently fails or matches the wrong app.
Don't rely on default pagination when listing monetization products or subscriptions. Use --all to avoid missing items; a truncated list means resolving the wrong or incomplete ID set.
Don't hard-code version codes across sessions. Version codes change with each upload; always resolve the current version code via gpd publish status before operating on a specific release.
Verify
After resolving any ID:
Echo the resolved value and confirm it matches the expected pattern before passing it to a subsequent command (e.g. package names must match ^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$).
For monetization IDs, run gpd monetization products get <sku> --package com.example.app to confirm the ID is active and not archived before using it in pricing or offer operations.
Output tips
JSON is default; use --pretty for debugging.
Use --all on list commands to avoid missing items.
Documentation Sources
Source
How to Access
Purpose
gpd CLI help
gpd publish --help, gpd monetization --help
Discover list/filter flags for each entity type
gpd output formats
--pretty for debugging, default JSON for scripting
Machine-parseable ID extraction
1---2name: gpd-id-resolver3description: GPD ID Resolver4---56# GPD ID Resolver78## Iron Law910**NEVER PASS A HUMAN-READABLE NAME TO A GPD COMMAND THAT REQUIRES AN EXACT ID OR PACKAGE NAME — RESOLVE IT FIRST**1112Always pass `--package` explicitly. Use `--all` on list commands to avoid missing items.1314## Package name (app ID)15- Package name is the primary identifier: `com.example.app`.16- Always pass `--package` explicitly for deterministic results.1718## Track names19- Common tracks: `internal`, `alpha`, `beta`, `production`.20- List tracks:21 - `gpd publish tracks --package com.example.app`2223## Version codes and release status24- Use release status to find version codes on a track:25 - `gpd publish status --package com.example.app --track production`2627## Tester groups28- List testers by track:29 - `gpd publish testers list --package com.example.app --track internal`3031## Monetization IDs32- Products:33 - `gpd monetization products list --package com.example.app`34 - `gpd monetization products get sku123 --package com.example.app`35- One-time products:36 - `gpd monetization onetimeproducts list --package com.example.app`37- Subscriptions:38 - `gpd monetization subscriptions list --package com.example.app`39 - `gpd monetization subscriptions get sub123 --package com.example.app`40- Base plans and offers:41 - `gpd monetization baseplans migrate-prices --package com.example.app sub123 plan456 --region-code US --price-micros 9990000`42 - `gpd monetization offers list --package com.example.app sub123 plan456`4344## Permissions IDs45- Developer users:46 - `gpd permissions users list --developer-id DEV_ID`47- App grants:48 - `gpd permissions grants create --package com.example.app --email user@example.com --app-permissions CAN_REPLY_TO_REVIEWS`4950## Anti-Patterns5152- **Don't pass a human-readable app name where a package name is required.** Google Play commands require the exact package identifier (e.g. `com.example.app`), not the display name — using a display name silently fails or matches the wrong app.53- **Don't rely on default pagination when listing monetization products or subscriptions.** Use `--all` to avoid missing items; a truncated list means resolving the wrong or incomplete ID set.54- **Don't hard-code version codes across sessions.** Version codes change with each upload; always resolve the current version code via `gpd publish status` before operating on a specific release.5556## Verify5758After resolving any ID:59- Echo the resolved value and confirm it matches the expected pattern before passing it to a subsequent command (e.g. package names must match `^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$`).60- For monetization IDs, run `gpd monetization products get <sku> --package com.example.app` to confirm the ID is active and not archived before using it in pricing or offer operations.6162## Output tips63- JSON is default; use `--pretty` for debugging.64- Use `--all` on list commands to avoid missing items.6566## Documentation Sources6768| Source | How to Access | Purpose |69|--------|--------------|---------|70| gpd CLI help | `gpd publish --help`, `gpd monetization --help` | Discover list/filter flags for each entity type |71| gpd output formats | `--pretty` for debugging, default JSON for scripting | Machine-parseable ID extraction |
Run npx skillmds@latest add kumaran-is/gpd-id-resolver in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
GPD ID Resolver It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
kumaran-is (@kumaran-is) published this skill. Their other Agent Skills are listed on their SkillMD profile.