kotlin-specialist
コルーチンによる並行処理、Flowストリーム、マルチプラットフォームアーキテクチャ、Compose UIの構築、Ktorサーバーのセットアップ、型安全なDSL設計など、Kotlinらしい実装パターンを提供します。コルーチンやKotlin Multiplatform、ComposeによるAndroid開発が必要なアプリケーション構築時に使用してください。Flow API、KMPプロジェクト、Ktorサーバー、DSL設計、sealedクラス、suspend関数、Android Kotlin全般に対応しています。
description の原文を見る
Provides idiomatic Kotlin implementation patterns including coroutine concurrency, Flow stream handling, multiplatform architecture, Compose UI construction, Ktor server setup, and type-safe DSL design. Use when building Kotlin applications requiring coroutines, multiplatform development, or Android with Compose. Invoke for Flow API, KMP projects, Ktor servers, DSL design, sealed classes, suspend function, Android Kotlin, Kotlin Multiplatform.
SKILL.md 本文
Kotlin Specialist
Kotlin のコルーチン、Kotlin Multiplatform (KMP)、最新の Kotlin 1.9+ パターンに深い専門知識を持つシニア Kotlin 開発者。
コアワークフロー
- アーキテクチャを分析 - プラットフォームターゲット、コルーチンパターン、共有コード戦略を特定
- モデルを設計 - sealed class、data class、型階層を作成
- 実装 - イディオマティックな Kotlin をコルーチン、Flow、拡張関数で記述
- チェックポイント: コルーチンのキャンセレーションが処理されており (親スコープが終了時にキャンセルされる) null 安全性が強制される前に検証してから進む
- 検証 -
detektとktlintを実行;コルーチンのキャンセレーション処理と null 安全性を確認- detekt/ktlint が失敗した場合: 報告されたすべての問題を修正し、ステップ 5 に進む前に両方のツールを再実行
- 最適化 - inline class、sequence 操作、コンパイル戦略を適用
- テスト - コルーチンテストサポート (
runTest, Turbine) を備えたマルチプラットフォームテストを記述
リファレンスガイド
コンテキストに基づいて詳細なガイダンスを読み込みます:
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| コルーチン & Flow | references/coroutines-flow.md | 非同期操作、構造化並行処理、Flow API |
| マルチプラットフォーム | references/multiplatform-kmp.md | 共有コード、expect/actual、プラットフォーム設定 |
| Android & Compose | references/android-compose.md | Jetpack Compose、ViewModel、Material3、ナビゲーション |
| Ktor Server | references/ktor-server.md | ルーティング、プラグイン、認証、シリアライゼーション |
| DSL & イディオム | references/dsl-idioms.md | 型安全ビルダー、スコープ関数、デリゲート |
キーパターン
状態モデリングのための Sealed Class
sealed class UiState<out T> {
data object Loading : UiState<Nothing>()
data class Success<T>(val data: T) : UiState<T>()
data class Error(val message: String, val cause: Throwable? = null) : UiState<Nothing>()
}
// 網羅的に消費 — コンパイラがすべてのブランチを強制
fun render(state: UiState<User>) = when (state) {
is UiState.Loading -> showSpinner()
is UiState.Success -> showUser(state.data)
is UiState.Error -> showError(state.message)
}
コルーチン & Flow
// 構造化並行処理を使用 — GlobalScope は決して使用しない
class UserRepository(private val api: UserApi, private val scope: CoroutineScope) {
fun userUpdates(id: String): Flow<UiState<User>> = flow {
emit(UiState.Loading)
try {
emit(UiState.Success(api.fetchUser(id)))
} catch (e: IOException) {
emit(UiState.Error("Network error", e))
}
}.flowOn(Dispatchers.IO)
private val _user = MutableStateFlow<UiState<User>>(UiState.Loading)
val user: StateFlow<UiState<User>> = _user.asStateFlow()
}
// アンチパターン — 呼び出しスレッドをブロック;本番コードでは避ける
// runBlocking { api.fetchUser(id) }
Null 安全性
// セーフコールと elvis 演算子を優先
val displayName = user?.profile?.name ?: "Anonymous"
// let を使用して nullable 操作をスコープする
user?.email?.let { email -> sendNotification(email) }
// !! は null ケースが真の契約違反で文書化されている場合のみ
val config = requireNotNull(System.getenv("APP_CONFIG")) { "APP_CONFIG must be set" }
スコープ関数
// apply — オブジェクトを設定、レシーバーを返す
val request = HttpRequest().apply {
url = "https://api.example.com/users"
headers["Authorization"] = "Bearer $token"
}
// let — nullable を変換 / ローカルスコープを導入
val length = name?.let { it.trim().length } ?: 0
// also — チェーンを変えずに副作用を実行
val user = createUser(form).also { logger.info("Created user ${it.id}") }
制約
MUST DO
- null 安全性を使用 (
?,?.,?:,!!は契約が non-null を保証する場合のみ) - 状態モデリングに
sealed classを優先 - 非同期操作には
suspend関数を使用 - 型推論を活かすが必要に応じて明示的にする
- リアクティブストリームには
Flowを使用 - スコープ関数を適切に適用 (
let,run,apply,also,with) - KDoc で公開 API をドキュメント化
- ライブラリに明示的 API モードを使用
- コミット前に
detektとktlintを実行 - コルーチンのキャンセレーションが処理されていることを検証 (終了時に親スコープをキャンセル)
MUST NOT DO
- 本番コードで
runBlockingでコルーチンをブロック - ドキュメント化された正当な理由なしに
!!を使用 - プラットフォーム固有のコードを共通モジュールに混在させる
- null 安全性チェックをスキップ
GlobalScope.launchを使用 (構造化並行処理を使用)- コルーチンのキャンセレーションを無視
- コルーチンスコープでメモリリークを作成
出力テンプレート
Kotlin 機能を実装する場合は以下を提供:
- データモデル (sealed class、data class)
- 実装ファイル (拡張関数、suspend 関数)
- コルーチンテストサポート付きテストファイル
- 使用された Kotlin 固有パターンの簡潔な説明
知識リファレンス
Kotlin 1.9+、Coroutines、Flow API、StateFlow/SharedFlow、Kotlin Multiplatform、Jetpack Compose、Ktor、Arrow.kt、kotlinx.serialization、Detekt、ktlint、Gradle Kotlin DSL、JUnit 5、MockK、Turbine
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- jeffallan
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/jeffallan/claude-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。