chrisbanes
skills
Pythonโœจ New

Skills for Kotlin, Jetpack Compose, and Android development

Last updated Jul 7, 2026
824
Stars
40
Forks
1
Issues
+44
Stars/day
Attention Score
85
Language breakdown
No language data available.
โ–ธ Files click to expand
README

Skills

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

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

Jetpack Compose

State and side effects

  • compose-state-authoring โ€” author Compose local mutable state and read-only composable accessors correctly.
  • compose-state-hoisting โ€” decide whether Compose UI element state belongs in local remember state, hoisted parameters, a plain state holder class, or a screen-level state holder.
  • compose-state-holder-ui-split โ€” split Compose state-holder wiring from plain-state UI for previewable and testable screens.
  • compose-side-effects โ€” choose and key Compose effect APIs for event Flow collection, callbacks, cleanup, navigation, snackbar, analytics, and other side effects.

Performance

UI API design and layout

  • compose-modifier-and-layout-style โ€” keep Compose layout APIs caller-placeable and modifier chains readable.
  • compose-slot-api-pattern โ€” design reusable Compose components 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-coroutines-structured-concurrency โ€” review coroutine scope ownership, init and fire-and-forget boundaries, cancellation handling, and blocking boundaries.
  • kotlin-control-flow โ€” write and review Kotlin branching with subject when, guard conditions, sealed exhaustiveness, smart casts, nullable branching, and early returns.
  • kotlin-flow-state-event-modeling โ€” model StateFlow, SharedFlow, Channel, stateIn, sharing policy, and one-shot events without lossy defaults.
  • kotlin-multiplatform-expect-actual โ€” design semantic expect/actual and interface boundaries for Kotlin Multiplatform platform interop.
  • kotlin-types-value-class โ€” choose @JvmInline value class over data class for single-field domain types, including Compose stability implications.

Workflows

  • shepherd โ€” autonomously poll open PRs and MRs, triage review comments, detect and fix CI failures, and keep PRs moving forward.

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.json โ€” name and description are required, name must be kebab-case.

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.

License

Apache 2.0

[plugins]: https://docs.claude.com/en/docs/claude-code/plugins

ยฉ 2026 GitRepoTrend ยท chrisbanes/skills ยท Updated daily from GitHub