# android-cicd

This skill wires up a GitHub Actions pipeline that builds your Android app and pushes it to Google Play, detecting the framework and handling signing secrets for you.

- skill · `type=skill` · Claude Code · 74 installs
- Author: ezescholz
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/davila7/claude-code-templates/tree/HEAD/cli-tool/components/skills/development/android-cicd
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/skills/android-cicd

## What it does

Setup runs through an interactive wizard, `npx android-cicd`, launched from the project root. It inspects the directory layout to pick a framework: Flutter shows up as `pubspec.yaml` with a `flutter:` entry, React Native as `android/app/build.gradle` plus a `react-native` dependency in `package.json`, TWA as `twa-manifest.json` or `.bubblewrap/config.json`, native Android as `app/build.gradle`. You can override whatever it guesses.

The wizard then creates a keystore, uploads secrets with `gh secret set` and scaffolds the workflow. Which Google Play track gets the build depends on the git ref: a push to `main` lands in `internal`, a `v1.2-alpha` tag in `alpha`, `v1.2-beta` in `beta`, `v1.2.0` in `production`. A manual `workflow_dispatch` lets you choose the track yourself. Each push to `main` makes CI read the current `versionCode`, add one, and commit with `[skip ci]`. Tag builds skip that bump, since a tag pins a commit — raise the version before you tag.

You need Node.js 18 or newer, JDK 17 with `keytool` on the path, an authenticated `gh` CLI, and an app in Play Console that already has one manual AAB upload. Play App Signing has to be on. The service account JSON key and the Google Play Android Developer API are set up by hand, and without that first manual upload the API cannot publish anything. Keep `org.gradle.java.home` out of `gradle.properties` — it breaks Linux CI runners.

## Requirements
- Works with: GitHub

## Install

### Claude Code (native platform)

1. **claude-code-templates**
```bash
npx claude-code-templates@latest --skill development/android-cicd
```

2. **Skills CLI (Vercel)**
```bash
npx skills add davila7/claude-code-templates --skill android-cicd -a claude-code
```

3. **Manually: put the files in place**
- File: `~/.claude/skills/android-cicd/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/android-cicd/

### Codex

**Manually: put the files in place**
- File: `.agents/skills/android-cicd/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

**Manually: put the files in place**
- File: `.cursor/skills/android-cicd/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install davila7/claude-code-templates android-cicd
```

2. **Manually: put the files in place**
- File: `.github/skills/android-cicd/SKILL.md`

### Gemini CLI

**Platform CLI**
```bash
gemini skills install https://github.com/davila7/claude-code-templates --path cli-tool/components/skills/development/android-cicd
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/android-cicd/SKILL.md` — The legacy .windsurf/skills/ path still works

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/davila7/claude-code-templates/tree/HEAD/cli-tool/components/skills/development/android-cicd

## When to use it
- publish Android builds to Google Play from GitHub Actions
- route releases to internal, alpha, beta and production by git tag
- stop bumping versionCode by hand on every main push
- wire the upload keystore and signing secrets into CI
- set up a pipeline for TWA, React Native, Flutter or native Android

## Example prompts
- Set up Android CI/CD for this project with `npx android-cicd`
- Generate the keystore and push the signing secrets to GitHub
- Scaffold a workflow that auto-bumps `versionCode` on pushes to `main`

## Similar
- [github-actions](https://affpapa.org/en/nevibecode/skills/github-actions.md) — skill · 10900 installs
- [android-emulator](https://affpapa.org/en/nevibecode/skills/android-emulator.md) — skill · 4600 installs
- [cicd-expert](https://affpapa.org/en/nevibecode/skills/cicd-expert.md) — skill · 645 installs
- [cicd-pipeline-setup](https://affpapa.org/en/nevibecode/skills/cicd-pipeline-setup.md) — skill · 498 installs
- [app-store-deployment](https://affpapa.org/en/nevibecode/skills/app-store-deployment.md) — skill · 564 installs
- [cicd-automation](https://affpapa.org/en/nevibecode/plugins/cicd-automation.md) — plugin · ★ 41823

From the same set: [davila7/claude-code-templates](https://affpapa.org/en/nevibecode/by/davila7/claude-code-templates.md) — 361 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
