Skip to main content

Hybrid CLI + MCP tool to manage App Store and Play Store listing data.

Project description

perfectdeckcli

perfectdeckcli manages App Store Connect and Google Play listing data from a single local source of truth.

It supports:

  • Command-line operations through perfectdeckcli
  • MCP server tools through perfectdeck-mcp
  • Structured listing edits through dotted key paths
  • Version tracking for language updates and release note workflows
  • Regional pricing generation for one-time products

Related docs:

  • MCP client setup: docs/mcp-client-setup.md
  • Authentication and credential storage: docs/authentication.md
  • Regional pricing policy: docs/pricing-policy.md

Installation

With uv

uv tool install .

In a local checkout

uv venv
uv pip install -e ".[dev]"

Quick start

Initialize a project file:

perfectdeckcli init \
  --app prod \
  --stores play,app_store \
  --locales en-US,fr-FR \
  --baseline-locale en-US

Update a localized field:

perfectdeckcli set \
  --app prod \
  --store play \
  --locale fr-FR \
  --key title \
  --value "Docteur des plantes IA"

Inspect the current locale payload:

perfectdeckcli list --app prod --store play --locale fr-FR

Track translation status:

perfectdeckcli status --app prod --store play
perfectdeckcli mark-language-updated --app prod --store play --locale fr-FR
perfectdeckcli bump-version --app prod --store play --reason "new feature copy update" --source-locale en-US

Data model

The default file is listings.yaml with this shape:

apps:
  prod:
    play:
      global: {}
      locales: {}
      release_notes: {}
      products: {}
      subscriptions: {}
    app_store:
      global: {}
      locales: {}
      release_notes: {}
      products: {}
      subscriptions: {}

Authentication

Store credentials are kept in a sibling .listing_credentials.yaml file, which is intentionally gitignored. The tool can persist credentials per app and store so you do not need to pass them on every command.

Play Store typically needs:

  • package_name
  • credentials_path

App Store Connect typically needs:

  • app_id
  • key_id
  • issuer_id
  • private_key_path

See docs/authentication.md for the exact fields and storage behavior.

MCP usage

Run the server locally:

perfectdeck-mcp --root-folder .

For multi-project usage, pass project_path in each MCP tool call relative to --root-folder.

Example:

  • project_path: "aiplantdoctor"
  • project_path: "perfectdeck/mobile-app"

Primary MCP tools:

  • perfectdeck_init_listing
  • perfectdeck_sync_listing
  • perfectdeck_diff_listing
  • perfectdeck_init_from_existing
  • perfectdeck_add_language
  • perfectdeck_list_languages
  • perfectdeck_get_element
  • perfectdeck_set_element
  • perfectdeck_delete_element
  • perfectdeck_upsert_locale
  • perfectdeck_list_section
  • perfectdeck_list_apps
  • perfectdeck_list_stores
  • perfectdeck_set_baseline_language
  • perfectdeck_bump_version
  • perfectdeck_mark_language_updated
  • perfectdeck_get_update_status

Development

Install dev dependencies and run the validation steps used in CI:

uv pip install -e ".[dev]"
pytest
python -m build

See CONTRIBUTING.md for the contribution workflow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

perfectdeckcli-0.1.0.tar.gz (112.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

perfectdeckcli-0.1.0-py3-none-any.whl (73.9 kB view details)

Uploaded Python 3

File details

Details for the file perfectdeckcli-0.1.0.tar.gz.

File metadata

  • Download URL: perfectdeckcli-0.1.0.tar.gz
  • Upload date:
  • Size: 112.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for perfectdeckcli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5b83287f9d0bef66e2298e09f52e43ffad6784f982ce3f07c7fad8c262c11827
MD5 ad5d945039ea045534599a5af243b2ff
BLAKE2b-256 25aecfec8bbd18e50c9ab775b77b8e79545bcc9a5504c5040816234719287984

See more details on using hashes here.

Provenance

The following attestation bundles were made for perfectdeckcli-0.1.0.tar.gz:

Publisher: publish.yml on xjodoin/perfectdeckcli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file perfectdeckcli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: perfectdeckcli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for perfectdeckcli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70e309fb3ef325f183856a6f896db0b9de42e1f157827a34d13c54035328c639
MD5 a718efc58e358e8d90a0ea40e31b934d
BLAKE2b-256 fccb65d883a44574bbee9987e8ee43a675f589b554ff3dcd626658bbbc088688

See more details on using hashes here.

Provenance

The following attestation bundles were made for perfectdeckcli-0.1.0-py3-none-any.whl:

Publisher: publish.yml on xjodoin/perfectdeckcli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page