android-build

android-build is a skill for Claude Code, Codex from nikzlabs/shipit. It costs 101 tokens per session (1,176 once invoked), scanned A, original, Apache-2.0.

A skill for building, checking, and previewing Android applications made with Kotlin or Java. It covers Gradle builds, code checks, automated tests, and image-based checks of the app’s screens, with optional emulator access.

In plain words
What is it for?
Use it for Android or Gradle projects, including apps in a monorepo—a repository containing several projects—and projects using Jetpack Compose, Android’s Kotlin UI toolkit.
Why use it?
It gives an Android project a defined loop for finding build errors, code and accessibility problems, test failures, and visual changes.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/nikzlabs/shipit/android-build
Any agent
npx skills add nikzlabs/shipit --skill android-build
Clone the repo
git clone --depth 1 https://github.com/nikzlabs/shipit

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for android-build

README.md
[![agentmods](https://agentmods.dev/badge/skills/nikzlabs/shipit/android-build.svg)](https://agentmods.dev/skills/nikzlabs/shipit/android-build)
Your own site
<a href="https://agentmods.dev/skills/nikzlabs/shipit/android-build"><img src="https://agentmods.dev/badge/skills/nikzlabs/shipit/android-build.svg" alt="Measured on agentmods" height="20"></a>
Per session 101 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,176 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00101 $0.01176
Opus 5 $0.00051 $0.00588
Sonnet 5 $0.00020 $0.00235
Haiku 4.5 $0.00010 $0.00118

Measured 3d ago against content hash 583873dd9bb4, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

android-build scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/android-build/SKILL.md · 101 lines

How it starts

The opening of the file, as written. The whole thing — 101 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Android build, test & preview

The Android toolchain is baked into every session container — JDK 17, the Android SDK, and Gradle 8.7 are always on PATH. A repo declares nothing to build (no shipit.yaml Android fields). Full command reference and env paths: /shipit-docs/android.md — read it for anything not covered here.

There are two surfaces: headless (build/lint/test/snapshot — this container, no device) and a running app (an emulator Compose service over adb).

Find the Gradle root first

Run Gradle from the dir with settings.gradle(.kts) + gradlew. In a monorepo (web app + an android/ module) just cd into it. If there are several Android app modules, flavors, or Gradle roots, list them and pick — or ask the user which to target. Don't guess off stray .gradle files.

cd android
./gradlew projects        # modules
./gradlew tasks --all     # available tasks (snapshot task names vary by library/variant)

The core loop: build → lint → snapshot

./gradlew assembleDebug   # did I break the build?
./gradlew lint            # manifest/resource/accessibility + edge-to-edge/inset checks
./gradlew test            # JVM unit tests (+ Robolectric if used)

Prefer the committed ./gradlew (pins the Gradle version). It downloads its dist once per fresh container; run the baked gradle to skip that if needed.

Reading the output is most of debugging — compile errors, lint findings, and test stack traces are in the command output. Fix the root cause from them.

"Did my UI/inset/padding change render right?" → a snapshot test

This is the key habit: visual verification is a snapshot test, not a screenshot of a running app. Snapshot tests (Paparazzi via layoutlib, Roborazzi via Robolectric) render a screen to a PNG on the JVM with no device, and the test sets up the data it renders — then diffs against a committed golden.

./gradlew verifyPaparazziDebug    # check renders against goldens (or verifyRoborazziDebug)
./gradlew recordPaparazziDebug    # regenerate goldens after an intended visual change

Read the full file on GitHub · 101 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 101 lines · 101 tokens per session scan A 583873dd9bb4

Subscribe to this mod's changes

android-build is a skill published in the GitHub repository nikzlabs/shipit (6 stars, last pushed 4d ago), licensed Apache-2.0. It adds 101 tokens to every session and 1,176 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

oma-mobile

Mobile specialist for Flutter, React Native, and Swift native iOS development. Use for mobile app, Flutter, Dart, React Native, Swift, SwiftUI, iOS, Android, Riverpod, swift-openapi-generator, and widget work.

first-fluke/oh-my-agent · 52 tokens

swift-development

You MUST activate this skill when working on Swift projects.

sammcj/agentic-coding · 13 tokens

lanes-sessions

Use when managing Lanes issues or driving Claude Code sessions through the lanes MCP tools — creating issues, starting/stopping/inspecting sessions, batch-launching work across worktrees, reading terminal output, attaching labels and components by UUID, or moving issues across the backlog/todo/in-progress/done…

lanes-sh/app · 99 tokens

lanes-forms

Use when the user wants a form backend or contact form set up (a live POST endpoint that captures submissions and emails them), OR wants an agent to fill in / submit to a form on their behalf. Lanes Forms creates and manages hosted form endpoints from Claude Code. Triggers on "set up a contact form", "provision a…

lanes-sh/app · 105 tokens

github-lanes-bridge

Use when bridging GitHub and Lanes — importing GitHub issues into Lanes for local Claude Code execution, batch-spawning sessions per ticket, decomposing one GitHub issue into multiple Lanes sub-issues with dependencies, or posting session results (PR links, comments, follow-up issues) back to GitHub. Triggers on…

lanes-sh/app · 161 tokens

linear-lanes-bridge

Use when bridging Linear and Lanes — importing Linear issues into Lanes for local Claude Code execution, batch-spawning sessions per Linear ticket, decomposing one Linear issue into multiple Lanes sub-issues with dependencies, or posting session results (PR links, comments, status updates) back to Linear. Triggers on…

lanes-sh/app · 142 tokens