Skip to main content
Glama
beydemirfurkan

playstore-release

playstore-release

Ship an Android app to Google Play end-to-end over the Google Play Developer API — an opinionated, idempotent publishing pipeline with a readiness report, for humans and AI agents. The Android sibling of appstore-release.

No dependencies. Clone it and run it.

git clone https://github.com/beydemirfurkan/playstore-release ~/playstore-release
export PLAY_SERVICE_ACCOUNT_JSON=/abs/service-account.json PLAY_PACKAGE_NAME=com.example.app
node ~/playstore-release/src/cli.mjs doctor
node ~/playstore-release/src/cli.mjs check

What it does

command

what

doctor

credentials present and accepted; can this account open an edit for this app

check

the readiness report: a verdict (ready · blocked · needs-human · rolling-out · halted · live) and an ordered list of next actions

publish

bundle → contact details → listing → graphics → track release → testers, in one edit, committed once; idempotent

promote

internal → production, full or staged; --halt / --resume / --complete

data-safety

apply the Data safety CSV exported from the Console

reviews / review-reply

read and answer user reviews

subscriptions

create / update / activate subscription products

init / validate / schema

author a config without credentials

mcp

the same surface as 10 MCP tools + 7 resources over stdio

What Google keeps Console-only — creating the app, the first bundle upload, content rating, app access, ads / news / government / financial / health declarations, privacy policy, category, countries, pricing — is reported by check with the exact URL and clicks, and spelled out in references/console.md so a browser agent can fill the forms for you.

Related MCP server: play-store-mcp

Design

  • Everything is an edit. Reads and writes go through one EditManager; a pipeline holds it and commits once; any error discards it. --dry-run opens and discards an edit to read state and never validates or commits.

  • Idempotent, provably. A second publish with nothing changed sends only edits.insert + edits.delete — there is a test asserting exactly that.

  • Findings, not logs. Every problem is a Finding with an owner (cli · ui · external), a fix, and — for Console-only steps — the clicks. The CLI text, --json and the MCP tools render the same objects.

  • Local validation first. Screenshot aspect ratio (long side ≤ 2× short), feature graphic size and alpha, listing lengths, rollout fractions: all checked before a byte is sent.

Layout

src/cli.mjs            dispatcher            src/ops/          one file per operation (see _contract.md)
src/index.mjs          library API           src/report/       snapshot → checks → verdict → renderings
src/core/              config, findings, console steps
src/play/              auth (RS256 → OAuth), client, edits, uploads, image headers, error hints
src/mcp/               zero-dep JSON-RPC MCP server
skills/playstore-release/   the Claude Code skill: SKILL.md + references/

As a Claude Code skill

node scripts/install-skill.mjs      # symlinks ~/.claude/skills/playstore-release → skills/playstore-release

Or as a plugin: the repo carries .claude-plugin/ and .mcp.json.

Development

npm install          # dev tooling only (prettier, tsc, ajv)
npm run verify       # typecheck · format · schema · manifests · distribution · tests

MIT.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables to interact with Google Play Console, allowing release management, app vitals monitoring, and APK/AAB deployment via a service account.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to manage Google Play Console reviews and Android app releases, including replying to reviews, promoting releases, managing staged rollouts, and checking crash/ANR vitals.
    44
    11 npm
    1
    MIT