From sdlc-team-android
Generates an upload keystore, wires Gradle release signingConfig with git-ignored secrets, and enrolls in Play App Signing for safe Android release builds.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdlc-team-android:android-signing-setup [path-to-android-project][path-to-android-project]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Configure Android release signing the safe way, under **Play App Signing** (Google holds the app
Configure Android release signing the safe way, under Play App Signing (Google holds the app
signing key; you hold the upload key). Belongs to the sdlc-team-android plugin.
path-to-android-project — the project directory (defaults to the current directory).Under Play App Signing, you sign uploads with an upload key; Google re-signs with the app signing key it holds. If you lose the upload key you can request a reset in Play Console and keep shipping — the single-point-of-failure of self-managed signing is gone. Best practice: the upload key is distinct from the app signing key.
keytool -genkeypair -v -keystore upload-keystore.jks \
-keyalg RSA -keysize 2048 -validity 9125 -alias upload
.jks outside the repo (or encrypted); record the store/key passwords in a secret
manager. Export the upload certificate if you need to register it:
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem.keystore.properties (storePassword, keyPassword, keyAlias,
storeFile) and load it in build.gradle.kts:val kp = Properties().apply { load(FileInputStream(rootProject.file("keystore.properties"))) }
android {
signingConfigs {
create("release") {
storeFile = file(kp["storeFile"] as String)
storePassword = kp["storePassword"] as String
keyAlias = kp["keyAlias"] as String
keyPassword = kp["keyPassword"] as String
}
}
buildTypes { getByName("release") { signingConfig = signingConfigs.getByName("release") } }
}
keystore.properties and *.jks/*.keystore to .gitignore. In CI, inject the keystore as
a base64 secret decoded at build time and pass passwords via env vars. Never commit either..aab). For an existing app, enroll via
Play Console → Release → Setup → App signing (PEPK tool to upload an existing key). Confirm the
upload key ≠ app signing key../gradlew signingReport shows the SHA-1/SHA-256 fingerprints per variant (needed to register API
keys / Maps / Sign-In). Run the pre-flight checker — it flags a release build using the debug signing
config and any committed secret in Gradle files.Confirm the release signingConfig reads from the git-ignored properties/CI, the keystore is out of the
repo, and signingReport shows the expected fingerprints. Note the Play App Signing enrollment status.
android-play-release; for signing failures in
CI, see gradle-build-specialist and play-store-release-specialist.Guides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
npx claudepluginhub stevegjones/ai-first-sdlc-practices --plugin sdlc-team-android