К основному содержанию
скилл CX Codex

kotlin-concurrency-and-flow — скилл для Claude Code: корутины и Flow

Скилл для ревью и написания Kotlin-кода с корутинами: разбирает владение scope, отмену, StateFlow, SharedFlow и Channel.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add chrisbanes/skills --skill kotlin-concurrency-and-flow -a claude-code
Открыть на GitHub

Что делает kotlin-concurrency-and-flow

Скилл включается, когда вы пишете или проверяете код на Kotlin с корутинами: владение CoroutineScope, работа с Thread и Executor, init { launch }, runBlocking, отмена, а также StateFlow, SharedFlow, Channel, stateIn и SharingStarted.

Внутри — процедура из семи шагов. Сначала нужно найти каждого владельца корутины, границу отмены, производителя, потребителя, долгоживущее состояние и разовое событие. Дальше скилл советует сравнить текущий контракт API с требуемым владельцем и временем жизни: если suspend-функция уже отдаёт вызывающему отмену, результат и ошибки, менять ничего не надо. Отдельно разбирается выбор примитива: Channel отдаёт событие одному потребителю, настроенный SharedFlow рассылает его всем активным. Для навигационного перехода на одного потребителя, который должен пережить паузу коллектора, предлагается Channel(Channel.BUFFERED) через receiveAsFlow().

Есть роутер по темам: сигналы про структурированную конкурентность ведут в references/structured-concurrency.md, про состояние и события — в references/flow-state-events.md. Для проверки изменений скилл отправляет в ../gradle-run/SKILL.md и прямо запрещает запускать ./gradlew вручную. Работа с Compose-состоянием уходит в соседний скилл compose-state-and-effects. Установка идёт через npx skills add.

Какие задачи решает

  • найти, кто владеет корутиной и когда её отменят
  • убрать fire-and-forget launch из-под обычной функции
  • выбрать между Channel и SharedFlow для разовых событий
  • проверить, не теряется ли событие в паузе коллектора
  • решить, нужен ли stateIn и какой SharingStarted

Примеры запросов агенту

  • Проверь этот ViewModel: кто владеет scope и что будет при отмене?
  • Стоит ли здесь SharedFlow или хватит Channel(Channel.BUFFERED)?
  • Отревьюй обновление состояния: нет ли гонки между _state.value и stateIn?

Как установить kotlin-concurrency-and-flow

1Через Skills CLI (Vercel)

npx skills add chrisbanes/skills --skill kotlin-concurrency-and-flow -a claude-code

2Вручную: положить файлы

~/.claude/skills/kotlin-concurrency-and-flow/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/kotlin-concurrency-and-flow/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о kotlin-concurrency-and-flow

Как установить kotlin-concurrency-and-flow в Claude?

Одной командой: npx skills add chrisbanes/skills --skill kotlin-concurrency-and-flow -a claude-code. Файл скилла появится по пути ~/.claude/skills/kotlin-concurrency-and-flow/SKILL.md.

Что делает этот скилл?

Помогает писать и ревьюить Kotlin-код с корутинами: разбирает владение scope, границы отмены, а также выбор между состоянием и разовыми событиями во Flow.

Чем Channel отличается от SharedFlow по версии скилла?

Channel доставляет каждое событие одному потребителю, а настроенный SharedFlow рассылает его всем активным. Если контракт потребителя неизвестен, скилл просит сначала его определить.

Исходный текст

SKILL.md · Apache-2.0
---
name: kotlin-concurrency-and-flow
description: Use when writing or reviewing Kotlin coroutine scope ownership, raw Thread or Executor work, init launches, non-suspending launch APIs, runBlocking, cancellation, StateFlow, SharedFlow, Channel, stateIn, SharingStarted, state updates, or one-shot events.
---

# Kotlin concurrency and Flow

## Core principle

Give asynchronous work an explicit owner and lifetime, then model durable state
and transient events with primitives whose delivery and replay semantics match
the product contract.

## Procedure

1. Identify each coroutine owner, cancellation boundary, producer, consumer,
   durable state, and transient event.
2. Before changing an API, compare its existing caller-visible contract with
   the required owner and lifetime. If a suspend API already gives its caller
   cancellation, result, and failure ownership, finish with no change; do not
   add a scope, `launch`, callback, or deferred wrapper merely for convenience.
3. Select a scope whose lifecycle owns the work; do not retain arbitrary scopes
   or hide unstructured launches behind non-suspending APIs.
4. Model renderable, current data as state and imperative one-shot work as an
   event only when its loss and replay behavior are explicitly acceptable.
   Ask whether one consumer handles each event or every active consumer must
   receive it. A `Channel` hands each event to one consumer; a configured
   `SharedFlow` broadcasts to active consumers. If that consumer contract is
   unknown, state both options and the decision needed before choosing one.
   For a one-consumer navigation handoff that must survive a collector gap,
   choose a bounded `Channel(Channel.BUFFERED)` (not `UNLIMITED`) exposed as
   `receiveAsFlow()`; do not preserve a
   replay-zero `SharedFlow` after identifying event loss as the defect.
5. Choose Flow sharing and buffering semantics from the producer and consumer
   lifetimes rather than from a default.
6. Read the focused reference for the material concern below.
7. Finish when cancellation, restart, replay, and failure behavior are all
   observable from the public API and no caller must guess who owns the work.

## Topic router

| Signal | Read |
|---|---|
| Stored `CoroutineScope`, raw `Thread` or `Executor` work, `init { launch }`, fire-and-forget API, `runBlocking`, broad catch, or cancellation boundary | [Structured concurrency](references/structured-concurrency.md) |
| `StateFlow`, `SharedFlow`, `Channel`, `stateIn`, `SharingStarted`, `.value`, state updates, sentinel values, or one-shot events | [Flow state and events](references/flow-state-events.md) |
| Running Gradle to validate a change | [Gradle run](../gradle-run/SKILL.md); never raw `./gradlew` |
| Compose collection or UI effect handling | [Compose state and effects](../compose-state-and-effects/SKILL.md) |

© chrisbanes · Apache-2.0 · chrisbanes/skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
kotlin-coroutines-flows affaan-m Скилл подсказывает паттерны Kotlin Coroutines и Flow для Android и KMP. Пригодится при отладке отмены, параллельных задач и тестов. CX Codex +1 4 800установок kotlin-specialist https://github.com/Jeffallan Скилл направляет ИИ при разработке на Kotlin: корутины, Flow, KMP, Compose и Ktor. Пригодится для реализации функций с проверками стиля и отмены задач. CX Codex +1 5 200установок android-kotlin alinaqi Подсказывает агенту структуру Android-проекта на Kotlin: Coroutines, Jetpack Compose, Hilt, Room и тесты на MockK. Включается сам при работе с файлами .kt. CX Codex +1 3 300установок kotlin-patterns affaan-m Скилл задаёт правила идиоматичного Kotlin для ИИ-агентов. Пригодится при ревью кода, настройке корутин и избавлении от лишних проверок на null. CX Codex +1 4 800установок asyncio-concurrency-patterns manutej Скилл по конкурентности в Python: event loop, корутины, задачи, семафоры и блокировки. Пригодится, когда пишешь асинхронный сервис или клиент. CX Codex +1 489установок kotlin-tooling-agp9-migration JetBrains Ведёт проект Kotlin Multiplatform через переход на Android Gradle Plugin 9.0: замена плагинов, разбиение модулей, перенос DSL. CX Codex +1 2 200установок

Из того же набора17

compose-ui-testing-patterns Помогает писать и проверять UI-тесты Jetpack Compose: семантику, снимки экрана, ввод с клавиатуры и состояния взаимодействия. CX Codex +1 2 200установок compose-focus-navigation Скилл помогает писать и проверять навигацию фокуса в Jetpack Compose для TV, клавиатуры и D-pad. Пригодится для начального и восстановленного фокуса. CX Codex +1 1 900установок compose-animations Помогает выбирать и ревьюить анимации в Jetpack Compose под разные сценарии движения. Пригодится при настройке переходов видимости, смене контента и связывании нескольких свойств. CX Codex +1 1 800установок shepherd Отслеживает открытые pull request и merge request, разбирает замечания ревьюеров и падения CI, а также готовит правки к пушу. CX Codex +1 1 200установок compose-performance Скилл для расследования стоимости рекомпозиции в Jetpack Compose: помогает найти фазу, из-за которой пересчитывается UI, и починить её точечно. CX Codex +1 1 100установок compose-state-and-effects Скилл помогает проектировать и проверять владение состоянием в Jetpack Compose. Он распределяет стейт по уровням и подбирает эффекты под их жизненный цикл. CX Codex +1 1 100установок using-chrisbanes-skills Разбирает задачу по Kotlin или Jetpack Compose и подключает нужный скилл из набора chrisbanes. Полезен, когда в одном изменении пересекаются несколько тем. CX Codex +1 1 100установок kotlin-control-flow Скилл для ИИ-агента, который пишет и правит ветвления Kotlin: when, guard-условия, исчерпывающие проверки sealed-типов, smart casts. CX Codex +1 1 100установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой