Compose Skill (Compose Kit)
A Compose skill for AI coding agents: seven agent skills that make Claude Code, Codex, Cursor, Copilot and Gemini
write better Jetpack Compose and Compose Multiplatform code.
One consistent house style, measured on seven models in real agent CLIs.

Works with Claude Code · Codex · Cursor · OpenCode · Copilot · Gemini CLI · Antigravity
Website: compose.avinya.dev · Install guides per agent · Results
What we achieved
- Held-out v5 (120 agentic runs): the kit lifted Gemini 3.8 Flash by +25.6 points and Sonnet 5.5 by +18.6, and
the test found a real flaw: on a "match our conventions" task, models restructured too much with the kit
(results).
- v6.0.0-preview.1 (2026-10-01): seven skills, one entry tree, four install channels.
- Website live (2026-10-02): compose.avinya.dev, with install guides per agent and a
build check that every number on it appears in the evidence files.
- v6 A/B (90 agentic runs): v6.0 vs the v6.1 fixes vs no kit. The "no new UI controls, screens or features" item
on conform tasks went from 2 of 10 cells (v6.0) to 8 of 10 (v6.1), and every pre-registered rule held
(results).
- v6.1.0 stable (2026-10-05): no model scored below its own no-kit result, so it is released as stable. v6.1.1
(2026-10-11) fixes a guard-script security issue. v6.2.0 (2026-10-23), the GitHub "Latest" release, adds
adaptive-layout guidance (screens follow the window size class, never the device) and more guard fixes.
- Cheap models (36 add-on runs): DeepSeek V4.1 Flash went from 82.1% to 97.4% of items with v6.1, and DeepSeek
V4 Pro from 74.4% to 87.2% (results).
Why
AI agents write Compose that compiles and then drifts: state ends up in the wrong place, every screen gets its own
pattern, error handling changes from file to file, and reviews flag perfectly fine code as blocking. Compose Kit gives
the agent one house style plus the reasoning behind it, and only loads the parts the current task needs.
- One consistent style: MVI on a shared
BaseViewModel contract, Koin annotations, Navigation 3,
feature-owned data/domain/presentation layers, and typed error handling.
- Progressive loading: a ~1.3k-token entry tree picks the task path and the exact reference files. The full kit
is about 127k tokens; in the v5 test, 35 of 40 kit runs loaded under 20k.
- Respects your project: in a coherent existing codebase (Hilt, MVVM, Navigation 2, your own base class), the
kit follows your pattern and proposes migration separately.
- Checked, not trusted: 11 shell guard scripts catch drift in CI, backed by 90 fixture tests.
What's inside
| Skill | What it owns |
|---|
compose | The entry decision tree (~1.3k tokens): task kind → affected area → exact reference files |
compose-architecture | Module graph, MVI/BaseViewModel contract, error tiers, state ownership, naming, Koin DI, Navigation 3, coroutines |
compose-feature | A screen or feature slice end to end: contract, ViewModel, UI, navigation, DI and tests; review mode |
compose-ui | Composables: Route/Screen split, stability, loading/empty/error states, lists, animation, accessibility, resources, adaptive layouts |
compose-data | Repositories, Ktor, Room, DataStore, Paging 3, offline-first, data-layer tests |
compose-project | New projects, adopting the kit, modules, convention plugins, version catalog, CI and agent hooks |
compose-platform | commonMain vs expect/actual, iOS/Swift interop, desktop and web targets, platform lifecycle |
Also included: project and feature templates, and the guard scripts (compose-architecture/scripts/).
How it works
flowchart TD
P["Your prompt"] --> E["compose entry tree · ~1.3k tokens"]
E --> K{"What kind of task?<br/>new feature · change · bug fix · review<br/>conform · setup · question"}
K --> A{"Which areas does it touch?<br/>architecture · feature · ui<br/>data · project · platform"}
A --> F["Load one reference file per affected area"]
F --> C["Code in the house style"]
Install
Install all seven skills. compose is the entry point, and it hands each task to the other six. Step-by-step pages
for each agent are on the website: Claude Code,
Codex, Cursor,
GitHub Copilot,
Gemini CLI and Antigravity,
OpenCode.
Every option below can install for one project (lives in the repo, so your team gets it too) or globally (for
you, in every project on your machine).
npx skills
Needs Node 22.20+. Works with Claude Code, Codex, Cursor, OpenCode, Copilot, Gemini CLI, Antigravity and 70+ other agents.
# This project only (run it in the repo root)
npx skills add Meet-Miyani/compose-skill --skill '*' -a claude-code
# Globally, for every project
npx skills add Meet-Miyani/compose-skill --skill '*' -a claude-code -g
Swap claude-code for your agent: codex, cursor, opencode, github-copilot, gemini-cli, antigravity. Repeat
-a to install for several at once. Leave it out and you get an interactive picker.
| Agent | This project | Global |
|---|
| Claude Code | .claude/skills/ | ~/.claude/skills/ |
| Codex, Cursor, OpenCode, Copilot, Gemini CLI, Antigravity | .agents/skills/ | the agent's own folder, e.g. ~/.codex/skills/ |
Update later with npx skills update.
gh skill
Needs GitHub CLI 2.90+. It installs the latest stable release. Pass --agent too: without it, a non-interactive run
installs for GitHub Copilot.
for s in compose compose-architecture compose-feature compose-ui compose-data compose-project compose-platform; do
gh skill install Meet-Miyani/compose-skill "$s" --agent claude-code --scope project
done
Update later with gh skill update --all. Installed with --pin before? Run gh skill update --unpin --all once:
gh skill update skips pinned skills.
Use --scope user to install globally. Agent IDs: claude-code, codex, cursor, opencode, gemini-cli,
antigravity, github-copilot.
Claude Code plugin
/plugin marketplace add Meet-Miyani/compose-skill
/plugin install compose-kit@compose-kit
From a terminal, the same with a scope: user (the default, every project), project (shared through the repo) or
local (this project, just you).
claude plugin marketplace add Meet-Miyani/compose-skill
claude plugin install compose-kit@compose-kit --scope project
Update later from a terminal: claude plugin marketplace update compose-kit, then
claude plugin update compose-kit@compose-kit, then restart Claude Code.
Codex plugin
codex plugin marketplace add Meet-Miyani/compose-skill
codex plugin add compose-kit@compose-kit
Codex plugins install for your user, so they're available in every project.
Update later with codex plugin marketplace upgrade: it refreshes the marketplace and the installed plugin.
Then point your agent at it
Add this line to the project's AGENTS.md or CLAUDE.md:
Compose/CMP work: load the compose skill first; it picks the path and the files to read.
The skills also trigger on their own; the line just makes sure the entry tree loads first.
Coming from the old single compose skill (v5.x or the composekit CLI)? Delete the old compose folder from
your agent's skills directory, then install with any option above. The old CLI's update can't fetch v6.
Optional: install the guard scripts into a project to catch drift in CI:
bash <skills dir>/compose-architecture/scripts/install-guards.sh <project>
Results: v6.1
The v6.1 test: 5 models × 6 new tasks × 3 arms (no kit, v6.0 kit, v6.1 kit) = 90 agentic runs in the real CLIs. Each
answer was graded blind by the two vendors other than its own, and an item passes only when both graders pass it.
Items passed of 39 (27 [eng] items written by the independent task author, 12 [kit] items written by the
moderator):
| Model | No kit | v6.0 kit | v6.1 kit | v6.1 − no kit |
|---|
| Sonnet 5.5 | 31 (79.5%) | 35 (89.7%) | 34 (87.2%) | +3 (+7.7 pts) |
| GPT-6-Luna | 28 (71.8%) | 35 (89.7%) | 37 (94.9%) | +9 (+23.1 pts) |
| GPT-6-Sol | 30 (76.9%) | 34 (87.2%) | 34 (87.2%) | +4 (+10.3 pts) |
| Gemini 3.8 Flash | 22 (56.4%) | 33 (84.6%) | 34 (87.2%) | +12 (+30.8 pts) |
| Muse Spark 1.3 | 27 (69.2%) | 27 (69.2%) | 29 (74.4%) | +2 (+5.1 pts) |
By task type, all five models together (both graders agree):
| Tasks | No kit | v6.0 kit | v6.1 kit |
|---|
| Conform (2 tasks, 60 items) | 73.3% | 75.0% | 80.0% |
| Review (2 tasks, 75 items) | 78.7% | 94.7% | 94.7% |
| New feature (2 tasks, 60 items) | 58.3% | 80.0% | 81.7% |
All pre-registered rules held, and no model scored below its own no-kit result, so v6.1.0 is the stable release.