| name | gpc-setup |
| description | Use when setting up GPC (Google Play Console CLI): authentication with service accounts, OAuth, or Application Default Credentials; configuration files (.gpcrc.json, env vars, XDG paths); auth profiles; running gpc doctor; troubleshooting auth errors. Make sure to use this skill whenever the user mentions gpc auth, gpc setup, service account setup, gpc config, gpc doctor, GPC_SERVICE_ACCOUNT, gpc auth login, Google Play API credentials, Play Console authentication, or wants to install/configure GPC — even if they don't explicitly say 'setup.' Also trigger when someone is troubleshooting auth failures, token expiration, keychain issues, or proxy/network configuration for GPC. |
| compatibility | GPC v0.9.82+. Requires Node.js 20+, pnpm 9+ (for development). npm for installation. |
| metadata | {"version":"1.6.0"} |
GPC Setup
When to use
Use this skill when the task involves:
- Installing GPC (
npm install -g @gpc-cli/cli or standalone binary)
- Running the unified setup wizard (
gpc setup, v0.9.68+)
- Authenticating with Google Play Developer API (service account, OAuth, ADC)
- Managing auth profiles (
gpc auth profiles, gpc auth switch)
- Configuring GPC (
.gpcrc.json, env vars, gpc config init)
- Diagnosing setup issues (
gpc doctor)
- Setting up GPC in a new project or CI environment
Inputs required
- Whether this is local development or CI/CD setup
- Auth method: service account JSON, OAuth, or Application Default Credentials
- Package name of the Android app (e.g.,
com.example.app)
- If CI: which CI platform (GitHub Actions, GitLab, etc.)
Procedure
0) Install GPC
Via npm (recommended):
npm install -g @gpc-cli/cli
Via npx (zero-install trial):
npx @gpc-cli/cli --version
Via standalone binary (no Node.js needed):
curl -fsSL https://raw.githubusercontent.com/yasserstudio/gpc/main/scripts/install.sh | bash
1) Unified setup (v0.9.68+, recommended)
The fastest way to get GPC configured from scratch:
gpc setup
gpc setup is a single command that combines authentication, configuration, and verification into one guided flow:
- Detects existing config (resumes if partial)
- Prompts for auth method (service account, OAuth, or ADC)
- Validates credentials
- Sets default package name
- Writes
.gpcrc.json
- Runs
gpc doctor to verify everything works
For CI/CD or headless environments, use the non-interactive variant:
gpc setup --auto
--auto reads from environment variables (GPC_SERVICE_ACCOUNT, GPC_APP) and skips all prompts. Exits 0 on success, non-zero with actionable errors on failure. Ideal for Docker images, GitHub Actions setup steps, and onboarding scripts.
If you need more control, use the individual commands below.
1a) Authenticate
Three auth strategies, in order of recommendation:
A) Service Account (recommended for CI/CD)
New to Google Cloud or setting up for the first time? Use the interactive GCP setup guide:
gpc auth setup-gcp
This fully interactive wizard walks through every step required to connect GPC to the Play Developer API:
- Enabling the Google Play Developer API in your GCP project
- Creating a service account in the GCP Console
- Granting the service account access in Google Play Console (Settings → API access)
- Downloading the JSON key file to your machine
- Running
gpc auth login with the downloaded key
No flags needed -- just run the command and follow the prompts. Ideal for first-time setup on any machine.
Already have a key file? Skip the wizard with --key:
gpc auth setup-gcp --key /path/to/service-account.json
This validates the JSON, authenticates, and saves to config in one step.
Once the wizard completes, or if you already have a key file:
gpc auth login --service-account path/to/key.json
Or via environment variable (preferred in CI):
export GPC_SERVICE_ACCOUNT=path/to/key.json
export GPC_SERVICE_ACCOUNT='{"type":"service_account","project_id":"..."}'
Read:
references/service-account.md
B) OAuth (for local development)
Interactive OAuth device flow — no key file needed:
gpc auth login
Tokens are cached in the OS keychain (macOS Keychain, Linux libsecret) or file fallback.
C) Application Default Credentials (for GCP environments)
Works automatically in Cloud Build, Cloud Run, GKE — no configuration needed:
gpc apps list
2) Configure defaults
Interactive setup wizard:
gpc config init
Guided wizard that:
- Selects auth method (
service-account / adc / skip)
- For service account: validates the file exists (retries if path is wrong)
- Prompts for default package name (warns if format is invalid)
- Writes
.gpcrc.json and prints a post-init summary
- Ends with:
Run \gpc doctor` to verify your setup.`
Manual config file (.gpcrc.json in project root or ~/.config/gpc/config.json):
{
"app": "com.example.myapp",
"output": "table",
"profile": "default"
}
Environment variables:
| Variable | Description |
|---|
GPC_APP | Default package name |
GPC_OUTPUT | Default output format (table/json/yaml/markdown/csv/tsv) |
GPC_PROFILE | Auth profile name |
GPC_NO_COLOR | Disable color output |
GPC_NO_INTERACTIVE | Disable interactive prompts |
GPC_SKIP_KEYCHAIN | Skip OS keychain, use file storage |
Config resolution precedence (v0.9.81+)
When the same setting is supplied through multiple sources, GPC resolves in this order (highest priority first):
| Priority | Source | Example |
|---|
| 1 | CLI flags | --service-account key.json, --app com.example.app |
| 2 | Environment variables | GPC_SERVICE_ACCOUNT, GPC_APP |
| 3 | Active profile | set via gpc auth switch <name> |
| 4 | .gpcrc.json | project-level or global config file |
| 5 | Defaults | built-in fallback values |
Prior to v0.9.81, an active profile silently took precedence over GPC_SERVICE_ACCOUNT and GPC_APP env vars. That bug is fixed. Env vars and CLI flags now reliably override whatever profile is active, which is important for CI environments where secrets are injected at run time.
Read:
references/configuration.md
3) Manage auth profiles
For managing multiple Google Play accounts:
gpc auth profiles
gpc auth switch production
gpc auth whoami
gpc auth status
Use --profile flag to override per-command:
gpc apps list --profile staging
4) Verify setup
gpc doctor
Checks (22 total):
- Node.js version (≥ 20)
- Configuration loaded
- Default app set and valid Android package name format
- Config and cache directory permissions
- Service account file exists and permissions (not group/world-readable)
- Profile env var points to a known profile
- Proxy URL valid (if HTTPS_PROXY set)
- CA cert file exists (if GPC_CA_CERT set)
- DNS resolution (androidpublisher + playdeveloperreporting)
- Authentication valid
- API connectivity (access token obtained)
- Developer verification deadline (September 30, 2026)
- Stale cache warning (>7 days)
- Shell completion detection (bash/zsh)
- API quota proximity: warns if daily or per-minute usage exceeds 80% (v0.9.71+)
- Plugin health: verifies each configured plugin loads without errors (v0.9.71+)
- Signing key verification:
--verify fetches Play signing cert and compares against local keystore (v0.9.75+)
Use gpc doctor --fix to auto-remediate fixable issues (version, auth, config keys).
JSON output is supported: gpc doctor --json or gpc doctor --output json.
Signing key verification (v0.9.75+)
gpc doctor --verify
gpc doctor --verify --keystore release.keystore --store-pass $STORE_PASSWORD
Environment variable alternatives: GPC_KEYSTORE_PATH and GPC_STORE_PASSWORD.
5a) Check developer verification
gpc verify
gpc verify --open
Google's Android developer verification enforcement begins September 2026 for BR, ID, SG, TH. gpc doctor includes this as check #20.
5b) Browse documentation from CLI (v0.9.64+ embedded docs)
Since v0.9.64, GPC ships 108 documentation pages embedded in the binary. No network required.
gpc docs list
gpc docs show authentication
gpc docs show auth
gpc docs search "staged rollout"
gpc docs init
gpc docs web
gpc docs show pipes through $PAGER for long pages. gpc docs list --json and gpc docs search --json for machine-readable output.
5) Network configuration (if needed)
For corporate proxies or custom CA certificates:
export HTTPS_PROXY=http://proxy.example.com:8080
export GPC_CA_CERT=/path/to/ca-bundle.crt
Retry configuration:
export GPC_MAX_RETRIES=3
export GPC_TIMEOUT=30000
export GPC_BASE_DELAY=1000
export GPC_MAX_DELAY=60000
Shell completion (v0.9.58+ walker, v0.9.60+ dynamic values)
GPC ships shell completion for bash, zsh, fish, and PowerShell. The completion tree is introspection-based (v0.9.58+) -- new commands and plugin-registered commands auto-complete without generator edits. Flags declared with .choices() surface their candidate list at TAB time.
gpc completion bash >> ~/.bash_completion
gpc completion zsh >> ~/.zshrc
gpc completion fish > ~/.config/fish/completions/gpc.fish
brew install yasserstudio/tap/gpc
Dynamic values (v0.9.60+)
The completion scripts fill in live values for several flags at TAB time, backed by a hidden gpc __complete <ctx> subcommand. No API call -- reads your config and ~/.cache/gpc/status-*.json cache, returns in under 150ms cold.
| Flag | Source |
|---|
--profile | Profile names from ~/.config/gpc/config.json |
--app / --apps | Package names from config + status cache |
--track | Track names for the current app (from status cache) |
If your package/track completions are stale, run any command that touches gpc status (or gpc status directly) to refresh the cache.
Verification
gpc doctor shows all checks passing
gpc auth status shows authenticated identity
gpc apps list returns real app data
gpc config show displays resolved configuration
Failure modes / debugging
| Symptom | Likely Cause | Fix |
|---|
AUTH_EXPIRED | Access token expired | gpc auth login to re-authenticate |
AUTH_INVALID | Wrong service account or missing permissions | Check Google Play Console → Settings → API access |
NETWORK_ERROR | Proxy or firewall blocking | Set HTTPS_PROXY and/or GPC_CA_CERT |
CONFIG_NOT_FOUND | No config file | Run gpc config init or set GPC_APP env var |
| Doctor fails on "API connectivity" | Service account not granted Play Console access | Add service account in Play Console API access settings |
Read:
references/troubleshooting.md
Escalation