Skip to content

Repository files navigation

Abstract illustration of a modular Kotlin and Jetpack Compose toolkit

Skills

A set of skills for Kotlin, Jetpack Compose, Android development, and grounded writing.

Install

With the skills CLI:

npx skills add chrisbanes/skills

Or install as a Claude Code plugin:

/plugin marketplace add chrisbanes/skills
/plugin install chrisbanes-skills@chrisbanes-skills

Or install as a Codex plugin:

codex plugin marketplace add chrisbanes/skills --ref main
codex plugin add chrisbanes-skills@chrisbanes-skills

Or install as an OpenCode plugin:

{
  "plugin": ["chrisbanes-skills@git+https://github.com/chrisbanes/skills.git"]
}

See .opencode/INSTALL.md for details.

Skills

Start here

Routing

  • using-chrisbanes-skills — route Kotlin and Jetpack Compose work to the focused skills; current Claude Code versions also activate it when working with .kt or .kts files.

Jetpack Compose

State and side effects

  • compose-state-and-effects — decide state ownership and effect lifecycle for local UI state, screen state holders, Flow collection, callbacks, cleanup, navigation, snackbar, analytics, and focus requests.

Performance

  • compose-performance — diagnose stability, deferred reads, composition contracts, and cross-phase back-writing from concrete runtime evidence.

UI API design and layout

  • compose-component-design — design caller-placeable Compose APIs whose variable visual regions are caller-provided slots.
  • compose-animations — choose Compose animation APIs for visibility, value targets, coordinated transitions, and content swaps; align with official quick guide and decision tree.
  • compose-focus-navigation — design and test keyboard, TV, D-pad, and focus-first Compose navigation behavior.

Testing

  • compose-ui-testing-patterns — choose between plain UI tests, semantics assertions, key/focus tests, interaction state tests with MutableInteractionSource, screenshot tests, and integration tests.

Kotlin

  • kotlin-concurrency-and-flow — review coroutine ownership, cancellation, Flow state/event modeling, sharing, replay, and one-shot delivery.
  • kotlin-control-flow — write and review Kotlin branching with subject when, guard conditions, sealed exhaustiveness, smart casts, nullable branching, and early returns.
  • kotlin-api-design — choose function owners, semantic domain types, and Kotlin Multiplatform platform boundaries.

Writing

  • grounded-writing — draft or revise clear, evidence-led writing of any length, including review comments and replies, without inventing personal claims.

Workflows

  • gradle-run — run every agent-initiated Gradle command through a compact-output wrapper; Gradle-centered workflows use one read-only diagnostic owner while parents retain edits.
  • implement-with-subagents — implement or review supplied-task orchestration through separate implementation owners, preserving atomic work, task-scoped acceptance, repair ownership, and the installed implement dependency.
  • to-plan — create a repository-aware implementation plan from one ready GitHub issue or an in-chat task, with a provider-neutral implementation handoff.
  • run-github-project — set up, review, or operate the repository's GitHub Project workflow; preserve live authority, human Planning work, unknown outcomes, epics, checkpoints, triage, and authorized execution boundaries.
  • shepherd — autonomously poll open PRs and MRs, triage review comments, and switch CI failures into a full local verification-and-repair cycle.

Migration from pre-cluster skills

This is a breaking taxonomy change. Replace the removed entrypoints as follows:

Removed skills Replacement
compose-state-authoring, compose-state-hoisting, compose-side-effects compose-state-and-effects
compose-recomposition-performance, compose-stability-diagnostics, compose-state-deferred-reads compose-performance
compose-modifier-and-layout-style, compose-slot-api-pattern compose-component-design
kotlin-coroutines-structured-concurrency, kotlin-flow-state-event-modeling kotlin-concurrency-and-flow
kotlin-functions, kotlin-types-value-class, kotlin-multiplatform-expect-actual kotlin-api-design

Contributing

Skills live at skills/<skill-name>/SKILL.md, flat (no language nesting). The name: in the SKILL.md frontmatter must match the directory name.

Frontmatter is validated against skills.schema.jsonname and description are required, name must be kebab-case. The router also uses Claude Code's optional paths extension. Clients that do not support this extension must ignore the paths field rather than rejecting the skill.

Releases

Release versions use SemVer-compatible CalVer: YYYY.M.D without zero-padded month or day values, for example 2026.6.17.

Keep .claude-plugin/plugin.json, .codex-plugin/plugin.json, and new Git release tags on the same version. Existing zero-padded tags from before this policy map to the non-padded manifest version, so 2026.06.16 maps to 2026.6.16. Only bump versions when publishing an installable release.

To publish a release, run the Release workflow from GitHub Actions. Leave the version input empty to use today's UTC YYYY.M.D version, or provide a specific non-zero-padded CalVer value. Use the dry-run option to validate without creating a commit, tag, or GitHub release.

Before pushing, lint skills (frontmatter schema + markdown):

npm install
npm run lint

This also runs on CI for all PRs.

For a taxonomy change, also run the durable cluster behavior evaluation. It checks routing, required references, safeguards, exceptions, and finish gates at the public agent-facing seam.

Evaluating skills

The advisory evaluator tests concrete scenarios modelled on real-world coding work, with expected outcomes and no-change controls. It compares no-skill, forced-skill, and automatic-routing runs. Baseline is the no-skill result, automatic is the headline result, and restraint checks that a skill does not make an unnecessary change. Scorecards also compare subject-side tokens, tool calls, completed turns, elapsed time, and total attempted work per successful outcome. The table reports the latest available result for each skill and correctness metric. These scores were produced using gpt-5.6-terra with medium reasoning, judged by gpt-5.6-sol with high reasoning. Results are model- and reasoning-specific; other configurations may perform differently. These are not merge or release gates. See evals/README.md for evaluation setup and reproducibility.

Skill Baseline Automatic Restraint
compose-animations 75.0% 100.0% 100.0%
compose-component-design 86.7% 100.0% 100.0%
compose-focus-navigation 66.7% 100.0% 100.0%
compose-performance 91.7% 100.0% 100.0%
compose-state-and-effects 77.8% 100.0% 100.0%
compose-ui-testing-patterns 55.6% 100.0% 100.0%
gradle-run 33.3% 100.0% 100.0%
kotlin-api-design 66.7% 100.0% 100.0%
kotlin-concurrency-and-flow 33.3% 100.0% 100.0%
kotlin-control-flow 27.8% 100.0% 100.0%
grounded-writing 100.0% 100.0%
implement-with-subagents 100.0% 100.0%
run-github-project 100.0% 100.0%
shepherd 100.0% 100.0%

Skill efficiency

Values are per-run medians, baseline → automatic, followed by the automatic percentage change. These subject-only measurements use the latest complete, same-run evidence available for each suite and include failed runs and negative controls. Multi-skill scenarios contribute to every targeted skill row. A turn is one completed Codex turn; time remains environment-sensitive. The source runs, selection rules, and detailed scorecards are in the evaluation change record.

Skill Tokens / run Tool calls / run Turns / run Time / run
compose-animations 41.7k → 81.9k (+96%) 2 → 5 (+150%) 1 → 1 (+0%) 26.3s → 42.3s (+60%)
compose-component-design 56.3k → 66.9k (+19%) 3 → 3 (+0%) 1 → 1 (+0%) 32.6s → 29.1s (-11%)
compose-focus-navigation 56.2k → 77.1k (+37%) 3 → 6 (+100%) 1 → 1 (+0%) 32.4s → 44.1s (+36%)
compose-performance 56.2k → 83.0k (+48%) 3 → 4 (+33%) 1 → 1 (+0%) 32.5s → 40.1s (+24%)
compose-state-and-effects 56.2k → 83.3k (+48%) 3 → 5 (+67%) 1 → 1 (+0%) 28.5s → 41.6s (+46%)
compose-ui-testing-patterns 56.7k → 69.0k (+22%) 3 → 4 (+33%) 1 → 1 (+0%) 32.9s → 34.1s (+4%)
gradle-run 70.7k → 83.3k (+18%) 4 → 3 (-25%) 1 → 1 (+0%) 30.2s → 32.9s (+9%)
kotlin-api-design 57.4k → 145.8k (+154%) 3 → 7 (+133%) 1 → 1 (+0%) 30.0s → 53.0s (+77%)
kotlin-concurrency-and-flow 72.7k → 119.2k (+64%) 4 → 5 (+25%) 1 → 1 (+0%) 46.0s → 64.2s (+40%)
kotlin-control-flow 71.8k → 109.6k (+53%) 4 → 5 (+25%) 1 → 1 (+0%) 39.1s → 53.7s (+37%)
grounded-writing 41.3k → 65.4k (+59%) 2 → 3 (+50%) 1 → 1 (+0%) 16.2s → 26.9s (+66%)
implement-with-subagents 40.9k → 50.9k (+24%) 2 → 2 (+0%) 1 → 1 (+0%) 23.7s → 25.9s (+9%)
run-github-project 41.6k → 59.0k (+42%) 2 → 3 (+50%) 1 → 1 (+0%) 25.0s → 24.1s (-3%)
shepherd 51.8k → 74.3k (+43%) 3 → 4 (+33%) 1 → 1 (+0%) 21.8s → 30.2s (+38%)

License

Apache 2.0

About

Skills for Kotlin, Jetpack Compose, and Android development

Topics

Resources

Stars

1.0k stars

Watchers

10 watching

Forks

Releases

Sponsor this project

Contributors

Languages