Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

android-coroutines

プロダクション品質のKotlin CoroutinesをAndroidに適用するための信頼性の高いルールとパターンを提供します。構造化された並行処理、ライフサイクルとの統合、リアクティブストリームを網羅しています。

description の原文を見る

Authoritative rules and patterns for production-quality Kotlin Coroutines onto Android. Covers structured concurrency, lifecycle integration, and reactive streams.

SKILL.md 本文

Android Coroutines エキスパートスキル

このスキルは、Android での本番品質の Kotlin Coroutines コードを記述するための権威的なルールとパターンを提供します。構造化並行性、ライフサイクルセーフティ、および最新のベストプラクティス(2025年標準)を実施します。

責務

  • 非同期ロジック: サスペンド関数の実装、Dispatcher 管理、並列実行。
  • リアクティブストリーム: FlowStateFlowSharedFlowcallbackFlow の実装。
  • ライフサイクル統合: スコープ(viewModelScopelifecycleScope)の管理と安全な収集(repeatOnLifecycle)。
  • エラーハンドリング: CoroutineExceptionHandlerSupervisorJob、および適切な try-catch 階層の実装。
  • キャンセル可能性: ensureActive() を使用して長時間実行される操作を協調的にする。
  • テスト: TestDispatcherrunTest のセットアップ。

適用可能性

ユーザーが以下を尋ねるときにこのスキルを有効にします:

  • 「API/データベースからデータをフェッチする」
  • 「バックグラウンド処理を実行する」
  • 「メモリリークを修正する」(スレッド/タスク関連)
  • 「リスナー/コールバックを Coroutines に変換する」
  • 「ViewModel を実装する」
  • 「UI 状態更新を処理する」

重要なルール & 制約

1. Dispatcher インジェクション(テスト可能性)

  • 決して クラス内で Dispatcher をハードコードしない(例:Dispatchers.IODispatchers.Default)。
  • 常に コンストラクタ経由で CoroutineDispatcher をインジェクトする。
  • 便宜上、コンストラクタ引数で Dispatchers.IO をデフォルトにするが、上書き可能にする。
// 正しい
class UserRepository(
    private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO
) { ... }

// 間違い
class UserRepository {
    fun getData() = withContext(Dispatchers.IO) { ... }
}

2. メインセーフティ

  • Data または Domain レイヤーで定義されたすべてのサスペンド関数は メインセーフ である必要があります。
  • ワンショット呼び出しsuspend 関数として公開すること。
  • データ変更Flow として公開すること。
  • 呼び出し元(ViewModel)は Dispatchers.Main から UI をブロックせずに呼び出せる必要があります。
  • リポジトリ実装内で withContext(dispatcher) を使用して、実行をバックグラウンドに移動します。

3. ライフサイクル対応の収集

  • 決して lifecycleScope.launch または launchWhenStarted(非推奨/危険)で flow を直接収集しない。
  • 常に Activity または Fragment で flow を収集するために repeatOnLifecycle(Lifecycle.State.STARTED) を使用すること。
// 正しい
viewLifecycleOwner.lifecycleScope.launch {
    viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
        viewModel.uiState.collect { ... }
    }
}

4. ViewModel スコープ使用法

  • ViewModel でコルーチンを開始するには viewModelScope を使用する。
  • ViewModel から View に対してサスペンド関数を公開しない。ViewModel は View が監視する StateFlow または SharedFlow を公開する必要があります。

5. 可変状態のカプセル化

  • 決して MutableStateFlow または MutableSharedFlow を公開しない。
  • .asStateFlow() またはアップキャストを使用して、読み取り専用 StateFlow または Flow として公開する。

6. GlobalScope 禁止

  • 決して GlobalScope を使用しない。構造化並行性を破壊し、リークにつながる。
  • タスクが現在のスコープを超えて存在する必要がある場合は、インジェクトされた applicationScope(Application ライフサイクルに結び付いたカスタムスコープ)を使用する。

7. エラーハンドリング

  • 決して 汎用の catch (e: Exception) ブロックで CancellationException をキャッチしない(再スローなし)。
  • runCatching は、明示的に CancellationException を再スローする場合のみ使用する。
  • CoroutineExceptionHandler は、トップレベルコルーチン(launch 内)でのみ使用する。async または子コルーチン内では効果がありません。

8. キャンセル可能性

  • コルーチンは 協調的キャンセル を特徴とします。キャンセルをチェックしない限り、すぐには停止しません。
  • タイトなループ(例:大量リストの処理、ファイル読み取り)でキャンセルをチェックするために、ensureActive() または yield() を呼び出すこと。
  • delay()withContext() などの標準関数は既にキャンセル可能です。

9. コールバック変換

  • callbackFlow を使用して、コールバックベースの API を Flow に変換する。
  • 常に callbackFlow ブロックの終わりで awaitClose を使用して、リスナーを登録解除する。

コードパターン

Flow を使用したリポジトリパターン

class NewsRepository(
    private val remoteDataSource: NewsRemoteDataSource,
    private val externalScope: CoroutineScope, // アプリ全体イベント用
    private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO
) {
    val newsUpdates: Flow<List<News>> = flow {
        val news = remoteDataSource.fetchLatestNews()
        emit(news)
    }.flowOn(ioDispatcher) // アップストリームは IO で実行
}

並列実行

suspend fun loadDashboardData() = coroutineScope {
    val userDeferred = async { userRepo.getUser() }
    val feedDeferred = async { feedRepo.getFeed() }
    
    // 両方を待つ
    DashboardData(
        user = userDeferred.await(),
        feed = feedDeferred.await()
    )
}

runTest を使用したテスト

@Test
fun testViewModel() = runTest {
    val testDispatcher = StandardTestDispatcher(testScheduler)
    val viewModel = MyViewModel(testDispatcher)
    
    viewModel.loadData()
    advanceUntilIdle() // コルーチンを処理
    
    assertEquals(expectedState, viewModel.uiState.value)
}

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
new-silvermoon
リポジトリ
new-silvermoon/awesome-android-agent-skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/new-silvermoon/awesome-android-agent-skills / ライセンス: Apache-2.0

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: new-silvermoon · new-silvermoon/awesome-android-agent-skills · ライセンス: Apache-2.0