Agent skill

Compose UI

by Meet-Miyani in 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…

MITAuto-check passedFrontend & Design

Install Compose UI

skills CLI
$ npx skills add Meet-Miyani/compose-skill --skill compose-ui -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Meet-Miyani/compose-skill compose-ui --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Meet-Miyani/compose-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/compose-ui .claude/skills/compose-ui && rm -rf skills-src

Use ~/.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/

Facts

Skill name
compose-ui
GitHub stars
301
Token cost
~3.7k tokens
SKILL.md length
1,909 words
Files
15 (incl. references)
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 4 steps: Verify, do not recall. Every component,… → Check the question before answering it.… → Say no when the answer is no. State the… → …
  • Touching @Composable code
  • SKILL.md covers Operating stance, When NOT to use, Non-negotiables and Workflow, plus 4 more sections
  • Calls rg

What it does

Compose UI is an agent skill from 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, accessibility and semantics, design-system tokens, CMP Res resources, Coil images, and keyboard/focus. Use when touching @Composable code, recomposition, stability, LazyColumn, animation, shimmer or skeleton, accessibility, theme, colors, Res.string, Coil, focus, or keyboard. Do NOT use for MVI, error tiers, or module…

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 15 other files, including reference files (for example `references/accessibility.md`, `references/adaptive-and-insets.md` and `references/design-system.md`).

It sits in Frontend & Design, covering Accessibility and Design systems. It works with Gradle, Jetpack Compose and Android. 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.

When your agent uses it

  • Touching @Composable code
  • Module graph (compose-architecture)
  • Data work (compose-feature
  • Module work (compose-project)

Example prompts

  • “Use the compose-ui skill to write and reviews composables for Compose and CMP: the Route/Screen/leaf split, state-read placement and stability…”
  • “/compose-ui”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Verify, do not recall. Every component, token, and helper you name was seen in this project during this task, or in current official docs…
  2. Check the question before answering it. Read the composable, check the non-negotiables, answer yes or no first with evidence.
  3. Say no when the answer is no. State the correct approach. If the user insists, restate the consequence once, follow the decision, record…
  4. Fresh docs before new library code. Read gradle/libs.versions.toml and the current official docs first; unreachable docs means marking the…

What it can do on your machine

Read from SKILL.md and the folder at commit 8770766. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • rg

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Compose UI loads about 3.7k tokens when it runs, and up to ~32k if it reads all its reference files. Until then it costs about 174 tokens; SKILL.md has 1,909 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~174
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~32k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from Meet-Miyani/compose-skill at commit 8770766, republished under its MIT licence (© Meet-Miyani). 1,909 words, ~3,703 tokens.

Download SKILL.mdSave it as .claude/skills/compose-ui/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.
name
compose-ui
description
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, accessibility and semantics, design-system tokens, CMP Res resources, Coil images, and keyboard/focus. Use when touching @Composable code, recomposition, stability, LazyColumn, animation, shimmer or skeleton, accessibility, theme, colors, Res.string, Coil, focus, or keyboard. Do NOT use for MVI, error tiers, or module graph (compose-architecture), ViewModel or data work (compose-feature, compose-data), Gradle or module work (compose-project), or expect/actual splits (compose-platform).
metadata.last-reviewed
2026-09-25

Compose UI

Operating stance

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.

You reason about scope, not vibes. "Wrapping it in remember" and "adding @Immutable" are not diagnoses. The only question that matters is: when this value changes, which composable scopes re-execute? Answer that before changing a line. Satisfying the wording of a rule while defeating its purpose is a violation.

Validate-before-you-answer contract (condensed; full text in the compose-architecture skill)
  1. Verify, do not recall. Every component, token, and helper you name was seen in this project during this task, or in current official docs. Name an unverified need as an open gap, never call it.
  2. Check the question before answering it. Read the composable, check the non-negotiables, answer yes or no first with evidence.
  3. Say no when the answer is no. State the correct approach. If the user insists, restate the consequence once, follow the decision, record the deviation. Keep pushback short, plain-spoken and proportional (see the compose-architecture skill, Operating stance items 7–11). Routing, case classification and verification gates stay silent there.
  4. Fresh docs before new library code. Read gradle/libs.versions.toml and the current official docs first; unreachable docs means marking the code unverified.

When NOT to use

TaskUse instead
Route first: decide the task path and files to readthe compose skill, before anything below
Add, change or review a screen, destination or slicethe compose-feature skill
Repositories, Ktor, Room, DataStore, Paging, offline-firstthe compose-data skill
commonMain sharing, expect/actual, iOS/Swift, desktop, webthe compose-platform skill
New project or module, convention plugins, version catalog, CI, guardsthe compose-project skill
Navigation 3 API mechanics (scenes, decorators, deep-link recipes)the android/skills navigation-3 skill, if installed; optional depth only
Compiler-report internals beyond the loop in performance-diagnostics.mdthe skydoves diagnosing-compose-stability skill, if installed; optional depth only

Non-negotiables

Iron law: read depth decides cost. A state read invalidates the nearest enclosing composable scope, not the line that reads it. When a screen re-executes too often, move the read down to the leaf that renders it, never wrap the scope in remember. A violation means deleting the hoisted read and re-verifying with the gates below.

Rules 1–3 and 5–11 are non-negotiables. Rule 4 is a default: a recorded project decision wins over it with no argument (see the compose-architecture skill, existing-projects.md item 5). These rules govern code you write. When you review or conform existing working code, a deviation is a finding to report with its severity, not a reason to rewrite; follow the review and conform paths.

  1. Only the Route touches the ViewModel. The Screen is stateless (state in, callbacks out). Leaves take sub-state plus specific callbacks, never onAction. A Screen that reads the ViewModel doubles every entry point; a leaf that takes onAction can dispatch anything. Prevents: entry-point duplication and unreviewable leaves.
  2. Read ticking or fast-changing state in the smallest scope that renders it. Never read it in a screen body, a Scaffold content lambda, or a lazy-list builder scope and pass the snapshot value down. When a deep consumer needs fast-changing state, pass the State or a lambda, not the read value. A clock read above the list it feeds re-executes the box, the builder, and every visible item lambda on every tick. Prevents: per-tick list invalidation (brief F-15).
  3. Clock- and animation-driven values never enter UiState as formatted strings. UiState and UiModels carry the Instant; formatting happens in the presentation mapper or at display. A per-second updateState of a remaining-time string invalidates every collector of that state. Prevents: unrestorable ticked state and whole-screen invalidation.
  4. [Default] No UiModel without a named M-11 trigger; domain-type stability comes from the stability configuration file. Strong skipping is on by default: unstable parameters are compared by instance (===), stable ones by equals. Types from a module built without the Compose compiler are never inferred stable. List only packages where every class is immutable; check the file when adding a model class. Also declare kotlin.collections.* (wired by build-logic). @Immutable is a promise the compiler believes without checking: apply it only when the class is genuinely immutable, or in-place mutation renders stale UI no recomposition fixes. Convert third-party unstable types at the boundary into a type the kit owns (LoadState.Error holds a Throwable; present AppError instead). Never add a wrapper only for stability. Prevents: lost skipping and stale UI (brief F-16, F-17; M-11).
  5. Colors come from theme tokens only; no hex literals in feature code. A hardcoded badge color misses every theme change. Prevents: theme breakage the guard catches.
  6. Reuse before writing: search the design-system module first. New shared components live in the design-system module, never in a feature. Copy a component together with the conditions at its call site. Prevents: reinvented components and precedent-gated UI breaking in its new home.
  7. Never clear or hide existing content during a refresh. Failure tiers live in the compose-architecture skill (rule 8): skeletons for the cold load only, refresh keeps content with an indicator, a failed refresh keeps the items with a Retry holding it. Prevents: wiped content and trapped screens.
  8. Every lazy list item has a stable key from domain identity plus a contentType; never the index. Keep item scope light: hoist parsing and formatting out of item scope. Prevents: scrambled row state and per-tick parsing.
  9. Every user-facing string is a resource, present in every locale. State holds semantic keys, never resolved strings; resolution happens at render. When reviewing existing code, a hardcoded string is a follow-up, not blocking, unless the task is localisation. Prevents: untranslated UI and locale drift the guard catches.
  10. Branch panes on the received size class and apply WindowInsets exactly once per screen. Panes mount through the Navigation 3 scene strategy so Back, deep link, and restore reach them; the detail leaf never reads window size. Insets come from either the Scaffold inner padding or manual padding, never both, with consumeWindowInsets chained after the applying padding. Prevents: unrestorable panes and double-offset content (AND-21, AND-23, AND-27, AND-72).
  11. Code in commonMain never imports java.*, android.*, LocalContext, or R; inject dispatchers and use Dispatchers.Default as the shared default. A java.time.Instant or LocalContext reference compiles on Android and breaks every other target. Time is kotlin.time.Instant; strings are CMP Res accessors. Dispatchers.IO exists on Kotlin/Native since coroutines 1.7.0 but is unavailable when the module also targets JS/Wasm. Prevents: shared code that compiles on only some targets.

Workflow

  • Create one todo per step below and do them in order.
  • Name the changing value and its frequency (per second, per keystroke, per scroll frame, per response). The frequency sets the budget.
  • Name the smallest scope that must re-execute when it changes. Usually a single leaf.
  • Find where the read happens today. A gap between the read and the scope is the defect.
  • Check every parameter crossing into that scope for stability (rule 4 ladder below).
  • Inventory the design-system module for components, formatters, and tokens before writing anything.
  • Pick loading, empty, error, and validation visuals from the ux-states.md decision tables.
  • Run the Verification gates below.
Show full SKILL.md (724 more words)Show less

Decision tables

Which stability fix (take the first rung that holds, then stop)
SituationFix
Domain model from a module without the Compose compiler sits in UiStateDeclare its package in the stability configuration file (rule 4)
Class is genuinely immutable (vals, read-only collections) and the report still flags it@Immutable, describing truth only
An M-11 trigger fires (derived values, merged sources, UI-only fields, hidden fields)UI-specific wrapper class
Anything else, including "make it skippable" on a mutable classStop. No annotation, no wrapper

Red flags

ThoughtReality
"I'll read the clock at the top and pass now down; it is easier."No. Rule 2: passing the value moves the cost up. Pass the State or read at the leaf.
"I'll tick a formatted countdown string from the ViewModel; simpler."No. Rules 2–3: the string invalidates every collector each second. Carry the Instant; read the clock at the leaf.
"I'll wrap it in remember to fix the recomposition."No. Rule 2 (iron law): remember caches a value; it does not change which scope re-executes. Find the read.
"Adding @Immutable will make it skippable."No. Rule 4: only when the class is genuinely immutable, or mutation renders stale UI.
"Every feature needs a UiModel for consistency."No. Rule 4: consistency means the same rule, not the same files. Name the M-11 trigger or hold the domain model.
"I'll pass the whole NoteUiModel in the key so detail skips the fetch."No. Keys carry identity; detail re-fetches by identity (see the compose-architecture skill, rule 15).
"This refresh can show a full-screen spinner; it is only a second."No. Rule 7: refresh keeps content with an indicator. Skeletons are cold-load only.
"Index keys are fine; the list never reorders today."No. Rule 8: keys come from domain identity, plus contentType.
"I'll hardcode this color; the tokens do not have it."No. Rule 5: tokens only in feature code. Name the missing token as an open gap.
"I'll copy this component; the condition was specific to that screen."No. Rule 6: copy the gate with the component.
"I'll put this string inline; translation comes later."No. Rule 9: every user-facing string is a resource in every locale before done.
"I'll use java.time / LocalContext here; it works on my device."No. Rule 11: commonMain uses kotlin.time.Instant and CMP Res. Never java.*, android.*, LocalContext, or R.
"I'll default this dispatcher to Dispatchers.IO; it is only shared code."Rule 11: inject it and default to Dispatchers.Default in commonMain, which may also target JS/Wasm.

Verification

  • Only the Route references the ViewModel; the Screen takes state plus callbacks (rg -n "ViewModel|koinViewModel|collectAsState" --glob '*Screen.kt' --glob '*Sheet.kt' shows ViewModel reads only in *Route.kt).
  • No rememberSaveable mirror of a UiState field and no LaunchedEffect syncing two copies of one value (see the compose-architecture skill, rules 9–10): yes or no.
  • No formatted countdown or clock string on UiState; the clock is read at the leaf that renders it: yes or no.
  • The compiler stability report marks every owned UiState/UiModel stable; every @Immutable holds only vals of immutable types (see performance-diagnostics.md for the loop).
  • rg -n "Color\(0x" --glob '*.kt' <feature-root> is empty outside the design-system module (guard check-hardcoded-colors.sh).
  • Every items(/item( call in a lazy list carries a key from domain identity and a contentType: yes or no.
  • Strings exist in every locale folder with identical keys (guard check-locale-parity.sh).
  • Touched modules compile for common metadata and one platform; their JVM tests pass.

Reference lookup

Load only the references this task needs. One level deep.

  • Also read review-mode.md when reviewing a feature UI change.

  • Also read ui-testing.md when changing UI behavior.

  • state-reads-and-stability.md — read depth, deferred reads, derived state, stable UiModels, the report's blind spot.

  • ux-states.md — skeleton vs keep-content vs spinner, validation, disabled vs hidden.

  • lists.md — keys, contentType, item-scope work, grids, nesting, paging hookup.

  • motion.md — animation API choice, graphicsLayer, gestures.

  • shared-elements.md — shared-element choice, keys, modifier order, overlay.

  • accessibility.md — semantics, touch targets, contrast, actions, RTL.

  • design-system.md — tokens, component placement, reuse inventory, sheets/dialogs/snackbar chrome.

  • resources.md — CMP Res vs Android R, qualifiers, locale parity, imports, maps.

  • resources-media.md — icons, fonts, raw files and remote content.

  • images.md — Coil 3 setup and API choice, placeholders, caching, CMP placement.

  • keyboard-and-focus.md — focus on arrival, IME actions, dismiss rules.

  • modifiers.md — modifier order, custom Modifier.Node, lambda (deferred-read) modifiers.

  • adaptive-and-insets.md — window size classes, panes, edge-to-edge and insets exactly once.

  • performance-diagnostics.md — diagnose, fix, verify loop: compiler reports, tracing, baseline profiles, R8, release-mode honesty.

© 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

Files

SKILL.md and 14 other files (references) in skills/compose-ui of Meet-Miyani/compose-skill.

  • SKILL.md
  • references/accessibility.md
  • references/adaptive-and-insets.md
  • references/design-system.md
  • references/images.md
  • references/keyboard-and-focus.md
  • references/lists.md
  • references/modifiers.md
  • references/motion.md
  • references/performance-diagnostics.md
  • references/resources-media.md
  • references/resources.md
  • references/shared-elements.md
  • references/state-reads-and-stability.md
  • references/ux-states.md

Open the folder on GitHubat commit 8770766

Compare with similar skills

Compose UI 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.

Compose UI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Compose UI this skillMeet-Miyani/compose-skill301—~3.7kAutomated safety check: PassMIT
Hz Metavrx UI Setmeta-quest/agentic-tools215—~1.4kAutomated safety check: PassApache-2.0
Material Design 3 UI/UX Guideskydashnet/material-design-3-ui-skill135—~3kAutomated safety check: PassMIT
Configuring Test Dependenciesskydoves/android-testing-skills333—~4.1kAutomated safety check: PassApache-2.0
Android AccessibilityMoustachauve/WLED-Android1693 repos~471Automated safety check: PassApache-2.0
Test Componentgluestack/gluestack-ui5.3k—~3.2kAutomated safety check: PassNone

Similar skills

  • Hz Metavrx UI Set

    meta-quest/agentic-tools

    Builds app UI for Meta VR and Horizon OS with the MetaVrx UI Set, a Jetpack Compose component library and design system.

    215 GitHub stars~1.4k tokensUpdated 14 days ago
    Frontend & DesignAuto-check passed
  • Material Design 3 UI/UX Guide

    skydashnet/material-design-3-ui-skill

    Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.

    135 GitHub stars~3k tokensUpdated 8 days ago
    Frontend & DesignAuto-check passed
  • Configuring Test Dependencies

    skydoves/android-testing-skills

    A skill your agent uses to wire the correct Gradle dependency matrix for Jetpack Compose UI tests.

    333 GitHub stars~4.1k tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Android Accessibility

    Moustachauve/WLED-Android

    Expert checklist and prompts for auditing and fixing Android accessibility issues, especially in Jetpack Compose.

    169 GitHub starsUsed in 3 repos~471 tokens
    Frontend & DesignAuto-check passed
  • Test Component

    gluestack/gluestack-ui

    Comprehensive testing of gluestack-ui components across platforms and apps

    5.3k GitHub stars~3.2k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Penpot Uiux Design

    github/awesome-copilot

    Official

    Comprehensive guide for creating professional UI/UX designs in Penpot using MCP tools.

    40k GitHub starsUsed in 1 repo~3k tokens
    Frontend & DesignAuto-check passed

More from Meet-Miyani/compose-skill

  • Compose Feature

    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.

    301 GitHub stars~3.6k tokensUpdated 2 days ago
    Auto-check passed
  • Compose Architecture

    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…

    301 GitHub stars~4k tokensUpdated 2 days ago
    Auto-check passed
  • Compose Platform

    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…

    301 GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check passed
  • Compose Project

    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…

    301 GitHub stars~3.7k tokensUpdated 2 days ago
    Auto-check passed
  • Compose Data

    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…

    301 GitHub stars~3.3k tokensUpdated 2 days ago
    Auto-check passed
  • Compose

    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…

    301 GitHub stars~1.4k tokensUpdated 2 days ago
    Auto-check passed

Questions about Compose UI

What does Compose UI do?

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…. Compose UI is an agent skill from 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, accessibility and semantics, design-system tokens, CMP Res resources, Coil images, and keyboard/focus.

When should I use Compose UI?

Compose UI fits situations like: touching @Composable code; module graph (compose-architecture); data work (compose-feature; module work (compose-project).

How do I install Compose UI in Claude Code?

Run `npx skills add Meet-Miyani/compose-skill --skill compose-ui -a claude-code`. Or copy the skill folder (skills/compose-ui in Meet-Miyani/compose-skill) into .claude/skills/compose-ui in your project. Claude Code loads it when a task matches its description.

How do I install Compose UI in Codex?

Run `npx skills add Meet-Miyani/compose-skill --skill compose-ui -a codex`. Or copy the skill folder (skills/compose-ui in Meet-Miyani/compose-skill) into .agents/skills/compose-ui in your project. Codex loads it when a task matches its description.

Can I use Compose UI in Cursor, Gemini CLI or GitHub Copilot?

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-ui -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-ui, .gemini/skills/compose-ui, .github/skills/compose-ui and .opencode/skills/compose-ui in your project.

What does Compose UI need to run?

Going by SKILL.md and its folder, Compose UI needs the command-line tools its instructions call (rg).

Does Compose UI access the network?

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.

Is Compose UI safe to install?

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. Review the folder before installing.

What licence does Compose UI use?

Compose UI is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Compose UI use?

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 28k tokens, read only when the agent opens those files.

What are the alternatives to Compose UI?

Skills that share tags, products or a category with Compose UI: Hz Metavrx UI Set (meta-quest/agentic-tools, 215 stars), Material Design 3 UI/UX Guide (skydashnet/material-design-3-ui-skill, 135 stars), Configuring Test Dependencies (skydoves/android-testing-skills, 333 stars) and Android Accessibility (Moustachauve/WLED-Android, 169 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Compose UI?

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.