Android Development
dpconde/claude-android-skill
Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.
Owns project and build-level work for Compose and Compose Multiplatform apps: bootstrapping a new project, adopting the kit in an existing project, adding or extracting a module, convention plugins…
$ npx skills add Meet-Miyani/compose-skill --skill compose-project -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-project --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Meet-Miyani/compose-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/compose-project .claude/skills/compose-project && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "compose-project" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-project into .claude/skills/compose-project/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-project", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-projectType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Meet-Miyani/compose-skill --skill compose-project -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-project --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Meet-Miyani/compose-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/compose-project .agents/skills/compose-project && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "compose-project" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-project into .agents/skills/compose-project/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-project", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Meet-Miyani/compose-skill --skill compose-project -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-project --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Meet-Miyani/compose-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/compose-project .cursor/skills/compose-project && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "compose-project" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-project into .cursor/skills/compose-project/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-project", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Meet-Miyani/compose-skill.git --path skills/compose-project--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Meet-Miyani/compose-skill --skill compose-project -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-project --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Meet-Miyani/compose-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/compose-project .gemini/skills/compose-project && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "compose-project" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-project into .gemini/skills/compose-project/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-project", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Meet-Miyani/compose-skill compose-projectInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Meet-Miyani/compose-skill --skill compose-project -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Meet-Miyani/compose-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/compose-project .github/skills/compose-project && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "compose-project" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-project into .github/skills/compose-project/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-project", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Meet-Miyani/compose-skill --skill compose-project -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-project --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Meet-Miyani/compose-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/compose-project .opencode/skills/compose-project && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "compose-project" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-project into .opencode/skills/compose-project/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-project", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
compose-projectOwns project and build-level work for Compose and Compose Multiplatform apps: bootstrapping a new project, adopting the kit in an existing project, adding or extracting a module, convention plugins…
Compose Project is an agent skill from Meet-Miyani/compose-skill. Owns project and build-level work for Compose and Compose Multiplatform apps: bootstrapping a new project, adopting the kit in an existing project, adding or extracting a module, convention plugins in build-logic, the version catalog, and CI plus agent hooks. Use when starting a Compose Multiplatform app, adding a module, or editing settings.gradle.kts, build.gradle.kts, build-logic, libs.versions.toml, or packaging. Do NOT use for routing and architecture choices (compose-architecture), feature code…
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 59 other files, including scripts and reference files (for example `references/adopt-existing.md`, `references/bootstrap.md` and `references/convention-plugins.md`).
It sits in Mobile. It works with Gradle and Jetpack Compose. The repository describes itself as: Compose Skill (Compose Kit): agent skills for Jetpack Compose & Compose Multiplatform. Makes Claude Code, Codex, Cursor, Copilot, Gemini CLI and OpenCode write better Compose… The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8770766. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell and Kotlin, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
rgFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Compose Project loads about 3.7k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 169 tokens; SKILL.md has 1,919 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Meet-Miyani/compose-skill at commit 8770766, republished under its MIT licence (© Meet-Miyani). 1,919 words, ~3,734 tokens.
.claude/skills/compose-project/SKILL.md (or your agent's skills folder). This skill also uses 51 other files; get the full folder from GitHub.You are acting as a senior staff mobile engineer who owns this codebase's architecture. You are accountable for how it looks in two years, not for pleasing the requester today.
Build files are load-bearing contracts, not scaffolding to rush past. A shortcut in a module build file replicates to every module after it. Satisfying the wording of a rule while defeating its purpose is a violation.
compose-architecture skill)gradle/libs.versions.toml. The kit's own contract is known: the templates/ shapes in this skill and every file the task context names count as seen. Never call an invented plugin or task.compose-architecture skill, Operating stance items 7–11). Routing, case classification and verification gates stay silent there.gradle/libs.versions.toml, read the current official docs for that version, then write. Unreachable docs means marking the change unverified.| Task | Use instead |
|---|---|
| Route first: decide the task path and files to read | the compose skill, before anything below |
| Add, change or review a screen, destination or slice | the compose-feature skill |
| Repositories, Ktor, Room, DataStore, Paging, offline-first | the compose-data skill |
commonMain sharing, expect/actual, iOS/Swift, desktop, web | the compose-platform skill |
| Composables, stability, resources | the compose-ui skill |
Rules 1–8 are non-negotiables. Rules 9–10 are defaults: a recorded project decision in ## Project decisions wins with no argument; waiving a non-negotiable needs a recorded reason (see the compose-architecture skill, existing-projects.md item 5).
:feature:tags build file applies the feature plugin and declares its namespace plus dependencies only. (Exception: the composition-root shell, :androidApp on CMP or :app on Android-only, mirrors the official template's android {} block.) Copying a target block into one library module guarantees drift across fifty. Prevents: per-module SDK drift (brief §12.1).api() only when the dependency's types appear in this module's public signatures, with a comment naming which. A leaked type expands every consumer's classpath and build graph. Prevents: classpath leaks through core modules (brief §12.6)..composekit.conf and passes run-checks.sh. An unregistered module is invisible to the guards; a green run that skipped it is theater. Prevents: unguarded modules.compose-architecture skill). Prevents: big-bang rewrites that stall mid-flight (STANDARDS §6).:app for now" rots into a shortcut the guards cannot see. Prevents: root-as-junk-drawer (brief §12.3).gradle/libs.versions.toml; no versions appear in module build files. A version written in two places diverges the day one of them is bumped. Prevents: version drift across modules.kotlin.collections.*. Validity rests on immutable models; the rule lives in the compose-ui skill (rule 4), which owns it. Prevents: stability fixes that silently stop applying.when-needed unless the project records otherwise. UI_MODEL=always in .composekit.conf makes the scaffold emit the UiModel pair by default; a recorded ## Project decisions entry of "UiModel for every feature" sets it. A chat preference applies to the current task, and the agent offers to record it.run-checks.sh registry, never around it. The CI job calls the registry; agent hooks call the registry before finishing a Compose change. The exact job shape follows the project's forge; what never changes is registry-first ordering.Version gates: read gradle/libs.versions.toml before writing. If AGP is below 9, stop and report instead of applying the AGP 9 shape. If Kotlin is below 2.3.20, stop and report instead of applying the Koin compiler plugin. If Kotlin is above the highest version the installed SKIE supports, stop and report instead of adding SKIE.
templates/project/: root settings, root build file, gradle.properties, gradle/libs.versions.toml, build-logic/, :core:mvi and :core:error from the compose-architecture templates, :core:designsystem, :feature:notes, the composition root (:composeApp plus :androidApp on CMP, :app on Android-only). A :data:<domain> module joins only when a second feature needs the same data (see bootstrap.md).install-guards.sh; register every module in .composekit.conf and document every key where setup is explained (see bootstrap.md). UI_MODEL stays when-needed unless the project records always.## Project decisions section in AGENTS.md/CLAUDE.md (see bootstrap.md); add the one-line kit-activation pointer from enforcement.md.compose-feature scaffold, never by hand-copying an old screen.scripts/audit-project.sh and produce the gap report from adopt-existing.md. Classify the project as existing-project case 1, 2, or 3 (defined in the compose-architecture skill).## Project decisions for every deviation the project keeps, with the reason stated once.api() only per rule 2..composekit.conf and run run-checks.sh.scripts/composekit/run-checks.sh (the registry), never individual checks. New checks join as one registry line.install-guards.sh; never write them into the user's config without consent.enforcement.md.| Need | Shape |
|---|---|
| Android, iOS, Desktop, Web from one codebase | CMP app: shared :composeApp KMP module plus thin :androidApp shell plus Xcode project (see bootstrap.md) |
| Android only, now and for the foreseeable future | Android-only: :app plus :core:*, :data:*, :feature:* (see bootstrap.md) |
libs.versions.toml shows | Shape |
|---|---|
| AGP 9 or newer | Shared module uses com.android.kotlin.multiplatform.library with the kotlin { android { … } } block; the Android entry point lives in a separate :androidApp module |
| AGP below 9 | Keep com.android.library; do not apply the AGP 9 shape. Stop and report instead of migrating as a side effect |
compose-architecture skill)| Case | Plan |
|---|---|
| Case 1 (green field or kit-shaped) | The kit strictly, from the first module |
| Case 2 (coherent different architecture) | This change follows the project's pattern; kit migration is a separate task |
| Case 3 (incoherent, competing patterns) | New code follows the kit; name the incoherence; propose migration separately |
| Thought | Reality |
|---|---|
"I'll park the tags logic in :app for now to ship faster." | No. Rule 6: the root is a temporary scaffold, never a home. Say no first, then create the feature module. |
| "I'll skip the guard config; we will clean it up later." | No. Rule 4: unregistered means unguarded. Register before done. |
| "I'll do the full rewrite to the kit inside this change." | No. Rule 5: incremental, WARN mode first. A coherent project keeps its pattern for this change. |
| "I'll copy the target block into this module; it is only one module." | No. Rule 1: convention plugins own targets. One copy becomes fifty. |
"I'll use api(); it compiles, so it is fine." | No. Rule 2: api() needs a leaked type plus a comment naming it, or it is implementation(). |
| "I'll pin this version in the module file; the catalog is for libraries." | No. Rule 7: every version lives once in libs.versions.toml. |
| "I'll call one guard script from CI; that covers it." | No. Rule 10: CI calls the registry. One script is a second registry that drifts. |
| "I'll write the hook into the user's config now; they will want it." | No. Print the snippet; never write it without consent. |
| "This plugin id looks right; I remember it." | Stop and verify now (stance item 1). An invented plugin id fails every module at sync time. |
scripts/composekit/run-checks.sh (or the skill's scripts/run-checks.sh <project-root>) exits 0.scripts/audit-project.sh <project-root> output is reviewed for bootstrap gaps and adopt-existing classification.rg -n "compileSdk|minSdk|targetSdk|jvmTarget|jvmToolchain" --glob '*.gradle.kts' <module-dirs> is empty outside build-logic/ and the composition-root shell module.libs. accessors.api( line carries a comment naming the leaked type..composekit.conf; every .composekit.conf key used by the project is documented where setup is explained.AGENTS.md/CLAUDE.md holds the one-line kit-activation pointer and a ## Project decisions section.run-checks.sh; the registry has one line per check and fails when a script is missing.libs.versions.toml: yes or no.Load only the references this task needs. One level deep.
Also read module-graph.md when adding a module.
Also read dependency-injection.md when wiring module bindings.
bootstrap.md — new-project workflow: target selection, module skeleton, guard install, first feature, ## Project decisions, every .composekit.conf key.
adopt-existing.md — audit checklist, gap-report format, incremental order, WARN-mode guards, what never to force-migrate.
convention-plugins.md — plugin set, what each owns, the stability-config wiring, the AGP 9 shape.
dependency-rules.md — api vs implementation, direction checks, accessors, composition-root rules.
version-catalog.md — naming, bundles, verification habit, floors, composite builds.
enforcement.md — install-guards.sh, CI job, agent hooks, kit activation, stability baselines.
distribution.md — desktop packaging, signing and notarization, CI matrix, caches.
© Meet-Miyani, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 51 other files (scripts, references) in skills/compose-project of Meet-Miyani/compose-skill.
Open the folder on GitHubat commit 8770766
Compose Project next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Compose Project this skillMeet-Miyani/compose-skill | 301 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Android Developmentdpconde/claude-android-skill | 337 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Diagnosing Compose StabilityrosuH/EasyWatermark | 1.9k | 1 repos | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Claude Android NinjaDrjacky/claude-android-ninja | 124 | — | ~5.2k | Automated safety check: Pass | Apache-2.0 | |
| Desktop And Build Footgunsmaxrave-dev/kotlin-footguns | 1.1k | — | ~3.8k | Automated safety check: Pass | GPL-3.0 | |
| Flake Triageyschimke/compose-ai-tools | 117 | — | ~1.5k | Automated safety check: Pass | Apache-2.0 |
dpconde/claude-android-skill
Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.
rosuH/EasyWatermark
A skill your agent uses to diagnose Jetpack Compose stability problems by enabling and reading the Compose Compiler Reports (classes.txt, composables.txt, composables.csv, module.json).
Drjacky/claude-android-ninja
Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.
maxrave-dev/kotlin-footguns
Desktop JVM and build traps: JNA natives, bundling, memory, packaging, code signing, R8, deep links, Gradle and CI releases.
yschimke/compose-ai-tools
Decide whether a preview the visual-diff bot flagged actually regressed or is simply nondeterministic, using a repeat-render oracle at a single commit.
parkwoocheol/compose-webview
Builds, tests, and formats ComposeWebView multiplatform library.
Meet-Miyani/compose-skill
Adds, changes, or reviews a screen, sheet, dialog, or destination slice (endpoint to repository to ViewModel to UI to navigation to DI to tests) in a Compose or CMP project.
Meet-Miyani/compose-skill
A skill your agent uses when writing, changing or reviewing code that touches the house contract for Jetpack Compose and Compose Multiplatform apps: module graph, MVI/BaseViewModel, error tiers…
Meet-Miyani/compose-skill
Owns platform splits for Compose Multiplatform apps: places declarations in commonMain, chooses expect/actual vs interface plus DI, wires host adapters and ports, and validates iOS/Swift interop…
Meet-Miyani/compose-skill
Owns repositories, data sources and mapping for Compose and Compose Multiplatform apps: DTO to domain to UiModel boundaries, Ktor clients and bearer auth, WebSocket and SSE, Room, DataStore, Paging…
Meet-Miyani/compose-skill
Writes and reviews composables for Compose and CMP: the Route/Screen/leaf split, state-read placement and stability, loading/empty/error UX states, LazyColumn lists and grids, animation choice…
Meet-Miyani/compose-skill
Use this skill first for any Jetpack Compose or Compose Multiplatform task: a new feature or screen, a change to existing code, a bug fix, a review, making code follow the kit, project or build…
Works with
Categories
Owns project and build-level work for Compose and Compose Multiplatform apps: bootstrapping a new project, adopting the kit in an existing project, adding or extracting a module, convention plugins…. Compose Project is an agent skill from Meet-Miyani/compose-skill. Owns project and build-level work for Compose and Compose Multiplatform apps: bootstrapping a new project, adopting the kit in an existing project, adding or extracting a module, convention plugins in build-logic, the version catalog, and CI plus agent hooks.
Compose Project fits situations like: starting a Compose Multiplatform app; adding a module; editing settings.gradle.kts; build.gradle.kts.
Run `npx skills add Meet-Miyani/compose-skill --skill compose-project -a claude-code`. Or copy the skill folder (skills/compose-project in Meet-Miyani/compose-skill) into .claude/skills/compose-project in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Meet-Miyani/compose-skill --skill compose-project -a codex`. Or copy the skill folder (skills/compose-project in Meet-Miyani/compose-skill) into .agents/skills/compose-project in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Meet-Miyani/compose-skill --skill compose-project -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/compose-project, .gemini/skills/compose-project, .github/skills/compose-project and .opencode/skills/compose-project in your project.
Going by SKILL.md and its folder, Compose Project needs a shell and Kotlin for the scripts in its folder and the command-line tools its instructions call (rg). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Compose Project is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 13k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Compose Project: Android Development (dpconde/claude-android-skill, 337 stars), Diagnosing Compose Stability (rosuH/EasyWatermark, 1.9k stars), Claude Android Ninja (Drjacky/claude-android-ninja, 124 stars) and Desktop And Build Footguns (maxrave-dev/kotlin-footguns, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Meet-Miyani (a GitHub user) maintains it in Meet-Miyani/compose-skill, which has 301 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 6, 2026.
Source: Meet-Miyani/compose-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.