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_namecredentials_path
App Store Connect typically needs:
app_idkey_idissuer_idprivate_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_listingperfectdeck_sync_listingperfectdeck_diff_listingperfectdeck_init_from_existingperfectdeck_add_languageperfectdeck_list_languagesperfectdeck_get_elementperfectdeck_set_elementperfectdeck_delete_elementperfectdeck_upsert_localeperfectdeck_list_sectionperfectdeck_list_appsperfectdeck_list_storesperfectdeck_set_baseline_languageperfectdeck_bump_versionperfectdeck_mark_language_updatedperfectdeck_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)
| File | Size | Uploaded | |
|---|---|---|---|
| perfectdeckcli-0.1.0.tar.gz | 112.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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