android-playstore-setup
Skill295 starsChanged 4 months agoMITView on GitHub
Complete Play Store setup - orchestrates scanning, privacy policy, version management, Fastlane, and workflows (Internal track only)
- Installs packages
- Commits and pushes
In this repository6 other files it gives its agents.
- AGENTS.mdAGENTS.md
- android-keystore-generationSkill
- android-playstore-scanSkill
- android-service-account-guideSkill
- app-store-optimizationSkill
- readiness-checkSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. About 0 are common, 14 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 63
If PLAY_CONSOLE_SETUP.md shows privacy policy is missing:
- Very specific: line 85
Run /devtools:version-management with platform=gradle
- Distinctive: line 234
All actions pinned to SHAs
- Distinctive: line 255
Create service account in Google Cloud
- Very specific: line 258
Add JSON to GitHub Secrets as SERVICE_ACCOUNT_JSON_PLAINTEXT
- Distinctive: line 331
After first manual upload is complete:
- Distinctive: line 433
Ensure app exists in Play Console
- Distinctive: line 434
Verify package name matches exactly
- Distinctive: line 444
Wait 5-10 minutes for permissions to propagate
- Distinctive: line 447
Verify all GitHub Secrets are set correctly
- Distinctive: line 448
Check workflow logs for specific error
- Distinctive: line 449
Ensure first manual upload was completed
- Distinctive: line 465
Every push to main or PR → Automatic build & test (CI) ✅ Manual workflow trigger → Version management + deployment to internal track 🚀
- Distinctive: line 468
All checks must pass: before marking this skill as complete.
- Distinctive: line 472
Do NOT mark complete unless ALL are verified:
- Distinctive: line 499
After completion, provide this summary:
- Distinctive: line 545
If any skill fails:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Android Play Store Setup
This skill orchestrates complete Google Play Store deployment setup with automated publishing to the internal testing track using Fastlane.
What This Does
Scope: Internal track deployment only (simplified for quick testing)
Sets up everything needed for automated Play Store deployment using Fastlane:
- Scan Project - Analyze project and generate setup checklist
- Fastlane Setup - Configure Fastlane with supply and screengrab
- App Icon - Generate and place icon assets
- Screenshots - Automated screenshot capture
- Store Listing - Feature graphic and metadata
- Privacy Policy - Generate privacy policy for GitHub Pages
- Version Management - Setup Git tag-based versioning
- Signing Configuration - Configure release signing
- Service Account - Play Store API access
- GitHub Actions - CI/CD workflows with Fastlane
Prerequisites
- Google Play Developer account ($25 one-time)
- Google Cloud Platform account (free)
- Admin access to Play Console
- Package name reserved in Play Console
Workflow Overview
1. Scan → 2. Review → 3. Setup → 4. Deploy
↓ ↓ ↓ ↓
📋 ✅ 🔧 🚀Process
Step 1: Scan Project (Analysis Only)
Run /devtools:android-playstore-scan
What it does:
- Scans AndroidManifest.xml and build.gradle
- Detects Health Connect, ads, analytics
- Checks for privacy policy
- Generates
PLAY_CONSOLE_SETUP.mdwith pre-filled answers
Output: PLAY_CONSOLE_SETUP.md
Action: Review the generated file and address any warnings
Step 2: Generate Privacy Policy (If Needed)
If PLAY_CONSOLE_SETUP.md shows privacy policy is missing:
Run /devtools:privacy-policy-generate
What it does:
- Scans project for app info
- Detects Health Connect and third-party SDKs
- Prompts for developer info
- Generates
docs/privacy-policy.md - Creates GitHub Pages setup guide
Verify:
test -f docs/privacy-policy.md && echo "✓ Privacy policy created"Next: Enable GitHub Pages (Settings → Pages → Source: docs/)
Step 3: Setup Version Management
Run /devtools:version-management with platform=gradle
What it does:
- Creates
scripts/version-manager.sh(core) - Creates
scripts/gradle-version.sh(Android adapter) - Creates
version.propertieswith initial version - Updates
app/build.gradle.ktsto read from version.properties
Verify:
./scripts/version-manager.sh latest
./scripts/gradle-version.sh generate patchStep 4: Generate Keystores
Run /devtools:android-keystore-generation
What it does:
- Generates production-release.jks (for CI/CD)
- Generates local-dev-release.jks (for local testing)
- Creates KEYSTORE_INFO.txt with credentials
- Updates .gitignore
Verify:
ls keystores/*.jks
cat keystores/KEYSTORE_INFO.txtStep 5: Configure Signing
Run /devtools:android-signing-config
What it does:
- Adds signing configuration to app/build.gradle.kts
- Configures dual-source credentials (env vars + gradle.properties)
- Updates local ~/.gradle/gradle.properties
- Adds validation for release builds
Verify:
./gradlew assembleReleaseStep 6: Configure ProGuard (If Not Already Setup)
Run /devtools:android-proguard-setup
What it does:
- Creates app/proguard-rules.pro with safe defaults
- Enables minification and resource shrinking
- Adds library-specific rules if needed
Verify:
grep "isMinifyEnabled = true" app/build.gradle.ktsStep 7: Setup Fastlane
Run /devtools:android-fastlane-setup
What it does:
- Creates Gemfile with fastlane and screengrab
- Creates fastlane/Appfile with package name
- Creates fastlane/Fastfile with deployment lanes
- Creates fastlane/Screengrabfile for screenshot automation
- Creates fastlane/metadata/ directory structure
Verify:
bundle exec fastlane --version
bundle exec fastlane lanesStep 7a: Generate App Icon
Run /devtools:android-app-icon
What it does:
- Analyzes project for app name and colors
- Generates docs/APP_ICON_SETUP.md with IconKitchen instructions
- Provides helper script to process IconKitchen downloads
- Copies mipmap resources and Play Store icon
Verify:
test -f fastlane/metadata/android/en-US/images/icon.png
file fastlane/metadata/android/en-US/images/icon.png | grep "512 x 512"Step 7b: Setup Screenshot Automation
Run /devtools:android-screenshot-automation
What it does:
- Adds screengrab dependency to app/build.gradle.kts
- Creates debug manifest with required permissions
- Creates ScreenshotTest.kt for automated capture
- Creates DemoModeRule.kt for clean status bar
Verify:
bundle exec fastlane screenshots
ls fastlane/metadata/android/en-US/images/phoneScreenshots/Step 7c: Create Store Listing Assets
Run /devtools:android-store-listing
What it does:
- Generates docs/STORE_LISTING_GUIDE.md
- Creates metadata templates (title, description, etc.)
- Provides feature graphic generation script
- Guides user through asset creation
Verify:
test -f fastlane/metadata/android/en-US/images/featureGraphic.png
wc -c fastlane/metadata/android/en-US/*.txtStep 8: Create Deployment Workflows
Run /devtools:android-workflow-internal
What it does:
- Creates .github/workflows/build.yml (CI only - runs on push/PR)
- Creates .github/workflows/release-internal.yml (Manual releases with Fastlane)
- Adds Ruby setup and bundle caching
- Uses
bundle exec fastlane deploy_internalfor deployment - All actions pinned to SHAs
Verify:
test -f .github/workflows/build.yml
test -f .github/workflows/release-internal.yml
grep "bundle exec fastlane" .github/workflows/release-internal.ymlStep 9: Service Account Setup
Run /devtools:android-service-account-guide
What it does:
- Provides step-by-step guide for Google Cloud setup
- Documents service account creation
- Creates Play Console setup documentation
Manual steps required:
- Create service account in Google Cloud
- Download JSON key
- Grant permissions in Play Console
- Add JSON to GitHub Secrets as
SERVICE_ACCOUNT_JSON_PLAINTEXT
Step 10: Add Keystore to GitHub Secrets
From keystores/KEYSTORE_INFO.txt, add these secrets to GitHub:
# From KEYSTORE_INFO.txt, copy the base64 encoded keystore:
SIGNING_KEY_STORE_BASE64: <base64_string>
SIGNING_KEY_ALIAS: upload
SIGNING_STORE_PASSWORD: <password>
SIGNING_KEY_PASSWORD: <password>Step 11: Validate API Connection
Run /devtools:android-playstore-api-validation
What it does:
- Creates scripts/validate-playstore.py
- Tests Play Store API connection
- Verifies service account permissions
Verify:
python3 -m venv .venv
source .venv/bin/activate
pip install google-auth google-api-python-client
python3 scripts/validate-playstore.py /path/to/service-account.json com.example.appStep 12: First Manual Upload (CRITICAL)
⚠️ Before GitHub Actions can deploy, you MUST manually upload your first release.
Why?
- Google Play requires manual first upload to complete store listing
- Your production keystore becomes the upload key
- Play App Signing is automatically enabled
Steps:
# 1. Build release bundle locally
./gradlew bundleRelease
# 2. Verify it's signed
jarsigner -verify -verbose app/build/outputs/bundle/release/app-release.aab
# 3. Manual upload via Play ConsoleIn Play Console:
- Go to Release → Internal testing
- Click Create new release
- Upload
app-release.aab - Complete store listing (title, description, icon)
- Complete app content declarations
- Publish to internal testing
IMPORTANT: The keystore used for this first upload must be the same one configured in GitHub Secrets!
Step 13: Test Fastlane Deployment
After first manual upload is complete:
# Push to main branch to trigger deployment
git add .
git commit -m "Setup Play Store deployment"
git push origin mainWhat happens:
- GitHub Actions workflow triggers
- Runs unit tests
- Builds release bundle
- Deploys to internal testing track
Monitor: Go to repository → Actions tab
Understanding Play App Signing
Two Keys System
| Key Type | Purpose | Holder | Can Reset? |
| App Signing Key | Signs APKs for users | No (permanent) | |
| Upload Key | Authenticates your uploads | You | Yes (via Play Console) |
Automatic Setup
For apps created after August 2021, Play App Signing is automatic:
- First upload: Google generates app signing key
- Your production keystore = upload key
- Google re-signs with app signing key before distribution
No action needed - it just works!
Final Verification Checklist
# Project files
✓ Fastlane configured (Gemfile, Fastfile, Appfile)
✓ Version management scripts in scripts/
✓ Keystores in keystores/ (gitignored)
✓ Privacy policy in docs/privacy-policy.md
✓ Metadata in fastlane/metadata/android/en-US/
✓ CI workflow in .github/workflows/build.yml
✓ Release workflow in .github/workflows/release-internal.yml
# Build verification
✓ ./gradlew assembleRelease succeeds
✓ Unit tests pass
✓ ProGuard enabled
# GitHub Secrets configured
✓ SERVICE_ACCOUNT_JSON_PLAINTEXT
✓ SIGNING_KEY_STORE_BASE64
✓ SIGNING_KEY_ALIAS
✓ SIGNING_STORE_PASSWORD
✓ SIGNING_KEY_PASSWORD
# Play Console
✓ First manual upload completed
✓ Internal testing track active
✓ Service account has permissions
# API validation
✓ scripts/validate-playstore.py passesNext Steps
For Beta/Production Deployment
Once internal testing is working:
# Add beta track
/devtools:android-workflow-beta
# Add production track
/devtools:android-workflow-productionTrack Information
| Track | Audience | Review Time | Use Case |
| Internal | Up to 100 testers | Instant | Quick testing, no review |
| Closed (Alpha) | Invited testers | < 24h | Beta testing |
| Open (Beta) | Anyone can join | < 24h | Public beta |
| Production | All users | 1-7 days | Full release |
Troubleshooting
"Package not found" in API validation
- Ensure app exists in Play Console
- Verify package name matches exactly
- Complete first manual upload
"Upload key mismatch"
- Your first upload keystore ≠ GitHub Secrets keystore
- Fix: Use Play Console → App signing → Request upload key reset
- Re-upload with correct keystore
"Permission denied" for service account
- Grant "Release to production" permission in Play Console
- Wait 5-10 minutes for permissions to propagate
GitHub Actions fails to deploy
- Verify all GitHub Secrets are set correctly
- Check workflow logs for specific error
- Ensure first manual upload was completed
Summary
You've successfully setup:
- ✅ Privacy policy (GitHub Pages ready)
- ✅ Version management (Git tag-based)
- ✅ Release signing (production + local dev)
- ✅ Fastlane deployment automation
- ✅ GitHub Actions CI/CD (internal track)
- ✅ Play Store API connection
Your app is now ready for continuous integration and deployment!
Every push to main or PR → Automatic build & test (CI) ✅ Manual workflow trigger → Version management + deployment to internal track 🚀
All checks must pass before marking this skill as complete.
Completion Criteria
Do NOT mark complete unless ALL are verified:
✅ Service Account Setup
- Service account created in Google Cloud
- JSON key downloaded and stored securely
- Play Developer API enabled
- Service account linked to Play Console
- "Release" permission granted
✅ Store Metadata Structure
- fastlane/metadata/android/en-US/ directory exists
- At least en-US locale configured
- Metadata files created (title, description, changelogs)
- docs/PLAY_STORE_TRACKS.md documentation created
✅ API Validation
- scripts/validate-playstore.py exists
- Validation script runs successfully
- API connection confirmed
- Package access confirmed
✅ Documentation
- PLAY_CONSOLE_SETUP.md exists (project root)
- GITHUB_SECRETS.md exists (if needed)
Summary Report
After completion, provide this summary:
✅ Android Play Store Setup Complete!
🔐 Service Account:
✓ Created in Google Cloud
✓ JSON key downloaded
✓ Linked to Play Console
✓ Permissions granted
📝 Store Metadata:
✓ Structure created: fastlane/metadata/android/en-US/
✓ Locales configured
✓ Templates ready
✅ API Validation:
✓ Validation script created
✓ API connection tested
✓ Package access confirmed
📋 Next Steps:
For GitHub:
1. Add secrets (see GITHUB_SECRETS.md if it exists)
2. Create "production" environment with reviewers
For Deployment:
1. Run: /devtools:android-playstore-publish
2. Generate deployment workflows
⚠️ CRITICAL REMINDERS:
- NEVER commit service account JSON to git
- Store JSON key in password manager
- Add all 5 secrets to GitHub before deploying
- Wait 5-10 minutes after granting permissionsIntegration with Other Skills
This skill is prerequisite for:
android-playstore-publishing- Uses service account for deploymentandroid-playstore-pipeline- Complete pipeline setup
Troubleshooting
If any skill fails:
- Fix the specific issue in that skill
- Re-run that skill until it completes
- Continue with remaining skills
- Run final verification
Common issues:
- Service account not found → Check Google Cloud project
- Permissions denied → Grant "Release" permission
- API validation fails → Wait 5-10 minutes for propagation
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

