Skip to main content

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.

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

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