Thanks for your interest in contributing to asc cli!
Requirements:
- Go 1.26+
Clone and build:
git clone https://github.com/rudrankriyam/App-Store-Connect-CLI.git
cd App-Store-Connect-CLI
make buildRun tests:
go test ./...Optional tooling:
make tools # installs gofumpt + golangci-lint
make lint # uses golangci-lint if installed, else go vet
make format # gofmt + gofumpt (requires gofumpt; install with make tools)Integration tests hit the real App Store Connect API and are skipped by default. Set credentials in your environment and run:
export ASC_KEY_ID="YOUR_KEY_ID"
export ASC_ISSUER_ID="YOUR_ISSUER_ID"
export ASC_PRIVATE_KEY_PATH="/path/to/AuthKey.p8"
export ASC_APP_ID="YOUR_APP_ID"
make test-integrationHeadless alternative (write the key to a temp file at runtime):
export ASC_PRIVATE_KEY_B64="BASE64_KEY"If you have App Store Connect API credentials, you can run real API calls locally:
export ASC_KEY_ID="YOUR_KEY_ID"
export ASC_ISSUER_ID="YOUR_ISSUER_ID"
export ASC_PRIVATE_KEY_PATH="/path/to/AuthKey.p8"
export ASC_APP_ID="YOUR_APP_ID"
asc feedback --app "$ASC_APP_ID"
asc crashes --app "$ASC_APP_ID"
asc reviews --app "$ASC_APP_ID"Credentials are stored in the system keychain when available, with a config fallback at
~/.asc/config.json (restricted permissions). A repo-local ./.asc/config.json is also supported.
Do not commit secrets.
Run this checklist before opening a PR:
make tools # Install gofumpt + golangci-lint
make format # Format code
make lint # Lint code
make check-command-docs # Verify command docs are up to date
ASC_BYPASS_KEYCHAIN=1 make test # Run tests (bypasses keychain)
make build # Build binary
./asc --help # Smoke-test the binary- Keep PRs small and focused.
- Add or update tests for new behavior.
- Update
README.mdif behavior or scope changes. - Avoid committing any credentials or
.p8files.
If you find a security issue, please report it responsibly by opening a private issue or contacting the maintainer directly.
Wall content is generated by make update-wall-of-apps (Go tool at tools/update-wall-of-apps).
The generator reads docs/wall-of-apps.json and updates the Wall snippet in README.md.
To add your app:
- Fork the repo
- Run:
make generate app APP="Your App Name" LINK="https://apps.apple.com/app/id1234567890" CREATOR="your-github-handle" PLATFORM="iOS,macOS"(this updatesdocs/wall-of-apps.jsonand syncsREADME.mdin one step) - Optional manual path: edit
docs/wall-of-apps.jsondirectly, then runmake update-wall-of-apps - Commit all generated changes:
docs/wall-of-apps.jsonREADME.md
- Open a PR
Format:
{
"app": "Your App Name",
"link": "https://apps.apple.com/app/id1234567890",
"creator": "your-github-handle",
"platform": ["iOS"]
}Platform values are free-form labels (for example: iOS, macOS, watchOS, tvOS, visionOS, Android, Web).
If you only change the Wall table in README.md without updating docs/wall-of-apps.json,
CI will fail the Wall generation check.