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.

Metadata

Release files for perfectdeckcli 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for perfectdeckcli 0.1.0
File Size Uploaded
perfectdeckcli-0.1.0.tar.gz 112.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for perfectdeckcli 0.1.0
File Interpreter ABI Platform
perfectdeckcli-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 186.5 kB

Release files / perfectdeckcli-0.1.0.tar.gz

Download URL perfectdeckcli-0.1.0.tar.gz
Size 112.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5b83287f9d0bef66e2298e09f52e43ffad6784f982ce3f07c7fad8c262c11827
BLAKE2b-256 checksum
How to use checksums
25aecfec8bbd18e50c9ab775b77b8e79545bcc9a5504c5040816234719287984
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.

Transparency log

Release files / perfectdeckcli-0.1.0-py3-none-any.whl

Download URL perfectdeckcli-0.1.0-py3-none-any.whl
Size 73.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
70e309fb3ef325f183856a6f896db0b9de42e1f157827a34d13c54035328c639
BLAKE2b-256 checksum
How to use checksums
fccb65d883a44574bbee9987e8ee43a675f589b554ff3dcd626658bbbc088688
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page