Task Workflow
ikarenkov/Modo
Spec-driven workflow for non-trivial work. An agent skill from ikarenkov/Modo.
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.
$ npx skills add Meet-Miyani/compose-skill --skill compose-feature -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-feature --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-feature .claude/skills/compose-feature && 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-feature" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-feature into .claude/skills/compose-feature/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-feature", 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-featureType 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-feature -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-feature --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-feature .agents/skills/compose-feature && 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-feature" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-feature into .agents/skills/compose-feature/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-feature", 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-feature -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-feature --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-feature .cursor/skills/compose-feature && 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-feature" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-feature into .cursor/skills/compose-feature/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-feature", 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-feature--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-feature -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Meet-Miyani/compose-skill compose-feature --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-feature .gemini/skills/compose-feature && 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-feature" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-feature into .gemini/skills/compose-feature/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-feature", 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-featureInstalls 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-feature -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-feature .github/skills/compose-feature && 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-feature" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-feature into .github/skills/compose-feature/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-feature", 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-feature -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-feature --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-feature .opencode/skills/compose-feature && 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-feature" agent skill from https://github.com/Meet-Miyani/compose-skill/tree/main/skills/compose-feature into .opencode/skills/compose-feature/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compose-feature", 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-featureAdds, 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.
Compose Feature is an agent skill from 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. Use when adding a screen, building a new feature, adding a ViewModel or destination, wiring list/detail or a form screen, scaffolding a slice, or reviewing a feature change. Covers Contract.kt, launchGuarded wiring, SavedStateHandle drafts, the state matrix, and new-feature.sh. Do NOT use for routing or architecture (compose-architecture)…
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 41 other files, including scripts and reference files (for example `examples.md`, `references/review-mode.md` and `references/testing.md`).
It sits in Mobile, covering Project scaffolding and Refactoring. 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.
4 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/ (Kotlin and Shell, 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 Feature loads about 3.6k tokens when it runs, and up to ~10k if it reads all its reference files. Until then it costs about 177 tokens; SKILL.md has 1,918 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,918 words, ~3,649 tokens.
.claude/skills/compose-feature/SKILL.md (or your agent's skills folder). This skill also uses 33 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.
You build one slice end to end and you refuse to ship it unfinished. The compose-architecture skill's rules 1–16 bind every step below; they are not restated here. Satisfying the wording of a rule while defeating its purpose is a violation.
compose-architecture skill)compose-architecture skill, Operating stance items 7–11). Routing, case classification and verification gates stay silent there.gradle/libs.versions.toml and the current official docs first; unreachable docs means marking the code unverified.| Task | Use instead |
|---|---|
| Route first: decide the task path and files to read | the compose skill, before anything below |
| Write or review composables, lists, motion, accessibility, tokens, resources | the compose-ui skill |
| Write or review repositories, Ktor, Room, DataStore, Paging, offline-first | the compose-data skill |
| New project or module, convention plugins, version catalog, CI, hooks | the compose-project skill |
commonMain sharing, expect/actual, iOS/Swift, desktop, web | the compose-platform skill |
Iron law: name the gap, never invent or stub. An unverified helper is named as an open gap, never called. No
TODO, stub, or no-op body reaches done. Delete it and restart from the template.
Rules 1–7 below are non-negotiables. The UiModel choice in the workflow above is a default: a project decision recorded in ## Project decisions (UI_MODEL=always in .composekit.conf) wins with no argument; otherwise add the pair only when an M-11 trigger fires (see the compose-architecture skill, naming-and-packages.md).
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.
TODO, FIXME, stub, or noted-but-unfixed defect remains in changed files. The placeholder grep over changed files is empty before done. Template SEAM comments are implemented, not shipped. Prevents: sprints that end with fiction marked done.compose-data skill (rule 4): absence stays null through the domain, drop only on a missing id. Prevents: silent loss of urgent rows and fake-valid values.compose-ui skill (rule 6). Prevents: precedent-gated UI breaking in its new home.UiState field is read by the UI, and every UiAction is dispatched by it. No dead fields held "for later", no dead actions with no sender. Cross-check the Screen against the Contract before done. Prevents: contract rot nobody renders.examples.md only when a pattern is unclear.scripts/new-feature.sh, or write the smallest correct code. Prefer feature-specific code over generic frameworks.scripts/new-feature.sh --name Notes --item Note --package com.example.feature.notes --root <project-root>| Situation | Action |
|---|---|
| New destination in a kit-shaped module | Scaffold with new-feature.sh, then implement the marked SEAMs |
| Change to an existing destination | Hand-write the smallest correct diff; never re-scaffold over it. Never remove, rename, or relocate existing working behaviour (actions, state fields, effects, tests, routes, error wiring such as HandleAppErrors) that the task did not name. Code that looks like a leftover or conflicts with the change stays; report it in one line as a follow-up. Restructure only on request. Adding what the task needs (new actions, state, repository operations, list rendering, wiring) is always in scope; 'restructure only on request' means rewriting or moving existing working code, never declining to build the requested feature |
| Precedent is incoherent (competing patterns) | Use the kit shape for new code, name the incoherence, propose migration separately |
| Signal | Action |
|---|---|
| Identity missing or unusable (no id) | Drop the record |
| Non-identity field missing or malformed | Keep the row; null the field or mark it degraded |
Any temptation to substitute zero, now, or "" at the DTO boundary | Stop; absence stays null through the domain |
| Thought | Reality |
|---|---|
| "I'll just ship with these TODOs; next sprint." | No. Feature rule 2: no placeholder reaches done. |
| "The stub repository is fine for now; tests pass against it." | No. Feature rule 2: a stub hides error and empty states from verification. |
| "This method probably exists." | No. Iron law: name the gap; never call an invented method. |
| "I'll leave a no-op body for now." | No. Iron law: never ship a no-op as real logic. |
| "I'll verify the helper name later; it looks right." | Stop and verify now (feature rule 1). M2 models shipped invented APIs. |
| "Two drafts show my thinking; the reader can pick." | No. Feature rule 3 (iron law): decide, then emit one version; never ship a draft pair. |
| "I'll describe the fix in prose; the corrected file is obvious." | No. Feature rule 3: a blocking review ships exactly one corrected version of each blocking file. |
| "I'll list the test rows instead of writing them." | No. Verification gate 18 (state-matrix tests): a claimed matrix row ships as a written test. |
| "This record is missing a field; I'll default it to zero." | No. Feature rule 4: absence stays null; drop only on broken identity. |
| "I'll drop this row; its date failed to parse." | No. Feature rule 4: degrade the field, keep the row. |
| "I copied the component; the condition was specific to that screen." | No. Feature rule 5: copy the gate with the component. |
| "This UiState field is for later; the UI will read it soon." | No. Feature rule 6: every field read, every action dispatched. |
"I'll load in init and also on start, to be safe." | No. Arch rule 9: an init {} load or collect plus a start trigger are two owners; the first load is owned by the start trigger (LifecycleStartEffect) only. |
| "I'll resolve detail from the cached list; faster." | No. Arch rules 10 and 15: detail fetches by identity; a cold cache has no list. |
| "Refresh failure over content can stay silent." | No. Arch rule 8: silent is only for named polls. |
"A file-level var is the simplest result callback." | No. Arch rule 13: results travel through a repository write. |
"I'll time runCurrent() to catch the loading frame." | No. Verification gate 18 (state-matrix tests; Fakes rule in testing.md): hold the fake open across the loading frame instead of timing runCurrent(). |
*Contract.kt holds exactly *UiState, *UiAction, *UiEffect (see the compose-architecture skill, rule 4). Count declarations per file:rg --files -g '*Contract.kt' <feature-root>rg -n "TODO|FIXME|NotImplementedError" <changed-files> is empty; every template SEAM is implemented or recorded as a deviation:rg -n "TODO|FIXME|NotImplementedError" <changed-files>rg -n "SEAM" <module> is empty before done; every hardcoded UI string is extracted to resources:rg -n "SEAM" <module>launchGuarded passes an explicit onError (see the compose-architecture skill, rule 6); no try/catch chains; CancellationException rethrown.ON_START is the cold load, later ON_STARTs reconcile with data kept; every LifecycleStartEffect is keyed by the nav-key id.Job that skips while active.compose-architecture skill, rules 10, 15); records re-fetch on a cold cache.SavedStateHandle with UiState derived (see the compose-architecture skill, rules 9–10); no rememberSaveable mirror, no syncing LaunchedEffect.UiState field is read by the UI; every UiAction is dispatched by it.compose-ui skill, rule 9).scripts/composekit/run-checks.sh exits 0 when installed.Load only the references this task needs. One level deep.
Also read mvi-contract.md for a new destination only when the scaffold template does not already cover it.
Also read navigation.md when wiring a destination only when the scaffold template does not already cover it.
Also read state-ownership.md when changing existing state.
Also read error-handling.md only when changing failure paths.
testing.md — ViewModel test convention, fakes, the state matrix rows.
ui-testing.md — Compose UI test rules: finders, assertions, sync, lazy lists, restoration, KMP runners.
review-mode.md — reviewing someone else's feature change with these gates.
examples.md — the 12 WRONG/RIGHT pairs; read only when a pattern is unclear.
README.md — placeholders, scaffold command, composition-root entry shape.
© 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 33 other files (scripts, references) in skills/compose-feature of Meet-Miyani/compose-skill.
Open the folder on GitHubat commit 8770766
Compose Feature 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 Feature this skillMeet-Miyani/compose-skill | 301 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Task Workflowikarenkov/Modo | 343 | — | ~2.4k | Automated safety check: Pass | None | |
| Compose UIMoustachauve/WLED-Android | 169 | 3 repos | ~676 | Automated safety check: Pass | Apache-2.0 | |
| Android Gradle Build Logicrcosteira79/android-skills | 153 | — | ~959 | 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 |
ikarenkov/Modo
Spec-driven workflow for non-trivial work. An agent skill from ikarenkov/Modo.
Moustachauve/WLED-Android
Best practices for building UI with Jetpack Compose, focusing on state hoisting, detailed performance optimizations, and theming.
rcosteira79/android-skills
Sets up Android Gradle convention plugins in a build-logic composite build, including the version catalog wiring and shared configuration that are easy to get wrong.
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.
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 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…
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
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. Compose Feature is an agent skill from 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.
Compose Feature fits situations like: adding a screen; building a new feature; adding a ViewModel; wiring list/detail.
Run `npx skills add Meet-Miyani/compose-skill --skill compose-feature -a claude-code`. Or copy the skill folder (skills/compose-feature in Meet-Miyani/compose-skill) into .claude/skills/compose-feature in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Meet-Miyani/compose-skill --skill compose-feature -a codex`. Or copy the skill folder (skills/compose-feature in Meet-Miyani/compose-skill) into .agents/skills/compose-feature 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-feature -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-feature, .gemini/skills/compose-feature, .github/skills/compose-feature and .opencode/skills/compose-feature in your project.
Going by SKILL.md and its folder, Compose Feature needs Kotlin and a shell 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 Feature 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.6k 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 6.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Compose Feature: Task Workflow (ikarenkov/Modo, 343 stars), Compose UI (Moustachauve/WLED-Android, 169 stars), Android Gradle Build Logic (rcosteira79/android-skills, 153 stars) and Android Development (dpconde/claude-android-skill, 337 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.