Skip to content
Back to skills

Android Describe Expert

ASecurity

Expert in `android describe` — JSON project introspection for build targets, output artifact paths, and module graph. Use when using Android CLI tools for android describe.

  • 9 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
developmentgobash

Works with

  • cli

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add anubhavg-icpl/vibe --skill android-describe-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Android Describe Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Android Describe Expert
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/anubhavg-icpl-android-describe-expert/badge)](https://www.skillsdirectory.com/skills/anubhavg-icpl-android-describe-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: android-describe-expert
description: Expert in `android describe` — JSON project introspection for build targets, output artifact paths, and module graph. Use when using Android CLI tools for android describe.
license: CC-BY-NC-SA-4.0
metadata:
  risk: unknown
  source: community
  kind: mode
  category: android-cli
  tags: [android, android-cli, describe, json, introspection, agent-context, 2026]
---

# Android Describe Expert Mode

You are an expert in **`android describe`**, the project-introspection command. It is the canonical way for an agent (or any other tool) to find APK paths, build targets, and module structure of an Android project — without parsing `build.gradle.kts`, walking `build/outputs/`, or guessing.

## Core Capabilities

### Command shape

```text
android describe [--project_dir=<project-directory>]
```

- `--project_dir` — path to the project root (defaults to current directory).
- Output: a single JSON document on stdout.

### What the JSON contains

The `describe` JSON is the contract used by the rest of the Android CLI (and other agent tools) to reason about a project. Expect at least these fields:

- `project.name`, `project.dir`
- `modules[]` — each application/library module
  - `name`, `path`
  - `applicationId` (for app modules)
  - `buildTypes[]` (`debug`, `release`, custom)
  - `flavors[]` (if any)
  - `outputs[]` — per build variant:
    - `variant` (e.g. `debug`, `release`)
    - `apk` (path to the produced APK or splits)
    - `mapping` (path to the R8 mapping file, when applicable)
- `targets[]` — Gradle tasks the CLI knows it can invoke
- `sdk` — `compileSdk`, `minSdk`, `targetSdk`

Treat exact field names as version-specific — always parse defensively (check for key presence, fall back when missing).

### Why agents use it

- **Find APK paths post-build** without globbing `build/outputs/apk/.../*.apk`.
- **Discover modules** in a multi-module monorepo.
- **Determine min/target SDK** before deciding which emulator profile to boot.
- **Hand off** to `android run --apks=...` deterministically.

## Workflow

```bash
# 1. Build first
./gradlew :app:assembleDebug

# 2. Describe — agent saves this JSON to its context
android describe --project_dir=. > project.json

# 3. Pluck the APK path (jq sketch — actual schema may vary by version)
APK=$(jq -r '.modules[] | select(.name=="app") | .outputs[] | select(.variant=="debug") | .apk' project.json)

# 4. Deploy
android run --apks="$APK"
```

## Real Examples

### One-shot build → describe → run

```bash
cd ~/work/checkout
./gradlew :app:assembleDebug
android describe --project_dir=. \
  | jq -r '.modules[] | select(.name=="app") | .outputs[] | select(.variant=="debug") | .apk' \
  | xargs -I {} android run --apks={}
```

### Multi-module agent flow

```bash
android describe --project_dir=. > /tmp/p.json
# Module list
jq -r '.modules[].name' /tmp/p.json
# All debug APKs across modules
jq -r '.modules[] | .outputs[]? | select(.variant=="debug") | .apk' /tmp/p.json
```

### Pre-decide emulator profile from minSdk

```bash
MIN=$(android describe | jq -r '.sdk.minSdk')
case "$MIN" in
  21|22|23) android emulator create --profile=small_phone ;;
  *)        android emulator create --profile=medium_phone ;;
esac
```

### Discover R8 mapping for crash symbolication

```bash
android describe --project_dir=. \
  | jq -r '.modules[] | .outputs[]? | select(.variant=="release") | .mapping'
```

## Common Pitfalls

- **Calling `describe` before any build** may yield empty `outputs[]` for some module types — variants that have never been built may not appear. Build at least once, or be ready for missing fields.
- **Hardcoding the schema.** Field names can shift across CLI versions. Always do `jq -r '... // empty'` or equivalent presence checks.
- **Path is relative to `--project_dir`.** APK paths in the JSON may be relative; resolve against `project.dir` before passing to `android run`.
- **Confusing with `gradle :tasks`.** `tasks` lists Gradle tasks; `describe` describes the *project* (modules, variants, artifacts). Different abstraction, different consumer.
- **Large monorepos** can produce huge JSON. Pipe through `jq` immediately rather than loading the whole document into a model context.

## When to Use This Mode

Use `android describe` whenever an agent needs to:

- Locate a built APK without globbing.
- Enumerate modules in a multi-module project.
- Pre-decide emulator/SDK choices from project metadata.
- Hand a deterministic structure to a downstream tool.

Prefer Android Studio's "Project Structure" dialog when:

- A human wants to interactively browse modules and dependency graphs.

Prefer `./gradlew :app:tasks` / `./gradlew :app:dependencies` when:

- You specifically need Gradle-internal info (task DAG, dependency tree).

## Sources

- Overview of Android CLI (`describe` section) — https://developer.android.com/tools/agents/android-cli
- Release notes — https://developer.android.com/tools/agents/android-cli/release-notes
- Announcement — https://android-developers.googleblog.com/2026/04/build-android-apps-3x-faster-using-any-agent.html

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.