# Using Chrisbanes Skills

Use when routing Kotlin or Jetpack Compose work, or physical Android benchmark evidence...

- Repository: https://github.com/chrisbanes/skills (1135 stars)
- Category: Mobile
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add chrisbanes/skills --skill using-chrisbanes-skills -g -a claude-code -y`
Codex: `npx skills add chrisbanes/skills --skill using-chrisbanes-skills -g -a codex -y`
Cursor: `npx skills add chrisbanes/skills --skill using-chrisbanes-skills -g -a cursor -y`
Gemini CLI: `npx skills add chrisbanes/skills --skill using-chrisbanes-skills -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add chrisbanes/skills`

## Description

Use when routing Kotlin or Jetpack Compose work, or physical Android benchmark evidence that needs a configuration decision, especially when several Kotlin or Compose concerns overlap.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Using chrisbanes skills

## Core principle

Route by the decision the code needs, not by the number of APIs mentioned.
Load one cluster when its shared procedure owns the concern; add a specialist
only when its independent behavior changes the same work.

## Routing procedure

1. Read the task. For Kotlin or Compose work, inspect the source that makes the
   concern concrete. For an Android benchmark comparison, inspect the supplied
   reports, configurations, and traces instead.
2. If one focused skill clearly matches, load it directly and stop routing.
3. Before loading a Compose skill, point to a concrete Compose API or composable
   in the inspected source, or to an explicit request to create or design
   Compose code. A hypothetical UI consumer is not evidence. If neither form
   of evidence exists, stay in the Kotlin cluster even when the task mentions
   UI, routes, or navigation.
4. Match each observed code signal to the table below.
5. Add a second skill only when it owns an independent decision in the same
   change; do not load adjacent skills speculatively. For example, a flow
   delivery defect plus a separate catch-all over a sealed route needs both
   `kotlin-concurrency-and-flow` and `kotlin-control-flow`. Load the latter
   because the branch mapping needs an explicit decision, including whether a
   data-bearing subtype's payload is used through a smart cast or deliberately
   discarded, not merely because a `when` appears in the file.
6. Finish routing when every material concern has one focused owner and those
   skills are loaded before advice or edits.

## Common routes

The rest: https://github.com/chrisbanes/skills/blob/HEAD/skills/using-chrisbanes-skills/SKILL.md
