claude-android-ninja について
claude-android-ninjaは、KotlinとComposeによるAndroid開発向けのリファレンススキルです。既存・新規プロジェクトを対象に、アーキテクチャ、UI、Gradle、テスト、プラットフォームの作業を専門ガイドへ案内します。
主な機能
- 01タスク別のリファレンス案内
- 02KotlinとComposeの開発ガイド
- 03プロジェクトと依存関係の設定
- 04アーキテクチャ・ナビゲーション・データ設計
- 05ビルド・品質・テストのガイド
活用シーン
- 01Androidプロジェクトの新規作成
- 02既存アプリへのCompose機能追加
- 03オフラインファーストのデータフロー設計
- 04SDKやビルドツールのバージョン移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ drjacky/ claude-android-ninja --skill claude-android-ninjaインストール後、Claude Code で/claude-android-ninjaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreLICENSE.mdREADME.md.github/FUNDING.yml.github/ISSUE_TEMPLATE/bug_report.mdfeature_request.md.github/scripts/check-skill-index-line-counts.shcheck-skill-links.shcheck-skill-ergonomics.shcheck_skill_ergonomics.pycheck-skill-voice.shcheck_skill_index_line_counts.pycheck-skill-typography.shvalidate-skill.shcheck_skill_typography.pycheck_skill_links.pycheck_skill_voice.pynormalize_reference_links.py.github/workflows/validate-skill.ymlassets/convention/AndroidApplicationBaselineProfileConventionPlugin.ktAndroidApplicationComposeConventionPlugin.ktAndroidApplicationJacocoConventionPlugin.ktAndroidFeatureConventionPlugin.ktAndroidLibraryConventionPlugin.ktAndroidApplicationConventionPlugin.ktAndroidLibraryComposeConventionPlugin.ktAndroidLibraryJacocoConventionPlugin.ktAndroidLintConventionPlugin.ktAndroidRoomConventionPlugin.ktAndroidTestConventionPlugin.kt詳細
Android Kotlin Compose 開発
コンテキストの読み込み順(少ないものから。完全版のリファレンスは省略せず参照します):
- このファイル(
SKILL.md)— ルーティング、停止ルール、例。 - 以下に記載されている場合は
references/*-quick.md— 必須事項/禁止事項とセクションへのリンク(約40行)。 - 完全版の
references/*.mdにある対象セクション1つ — コードサンプルとチェックリストのみ。 - INDEX-sections.md — クイックルーティングで不十分な場合に限り、アンカー一覧を参照します。
禁止事項:1つのセクションまたはクイックファイルで対応できる場合、INDEX-sections.md や数千行に及ぶリファレンス全体を読み込まないでください。
タスクはクイックリファレンスの表から振り分けます。一致する項目がない場合、または新規プロジェクトのブートストラップが必要な場合は、workflows.md を参照してください。ファイル一覧全体は INDEX.md にあります。
必須事項:
- 既存プロジェクト:
assets/からコピーする前に、settings.gradle.kts、gradle/libs.versions.toml、およびappモジュールのビルドファイルを確認してください — dependencies.md、modularization.md。スタックの移行については migration.md を参照してください。 - 新規プロジェクト: workflows.md → 「新しいプロジェクトの作成」
- モジュール、DI、ナビゲーション、Room スキーマ、または AGP/Kotlin/KSP の変更後は、
./gradlew help、続いて:app:assembleDebugを実行してください(実際のアプリモジュール名を使用します)— gradle-setup.md。
リポジトリ外の作業に関する停止ルール(リポジトリの編集で代替しないでください): Play へのアップロード、トラック、段階的公開、versionCode — android-ci-cd.md;Play Integrity の前提条件(Console/Cloud のセットアップ)— android-security-quick.md;本番環境での adb install/pm clear — testing.md。
クイックリファレンス
ここに記載されていない、まれなトピックやニッチなトピックは INDEX.md にあります(ファイル一覧全体)。
| タスク | 参照 |
|---|---|
| 表にないタスク、新規プロジェクトのブートストラップ、複数トピックのセットアップ | workflows.md |
| オプションの Android CLI によるプロジェクト検出、Studio の確認、プレビュー、テストデバイスの検査 | workflows.md(「エージェントのワークフローにオプションの Android CLI を使用する場合」) |
| すべての参照ファイルの完全な索引 | INDEX.md |
| バージョンカタログ、固定バージョン、アルファ版の方針、既存プロジェクトとの整合 | dependencies.md |
| 依存関係の追加または更新(カタログのエイリアス) | dependencies.md |
| マルチモジュールの依存関係 | dependencies.md |
| プロジェクト構造とモジュール | modularization.md |
| MVVM レイヤー、リポジトリ、DI | architecture.md |
| Retrofit/OkHttp、NetworkModule、null 許容 DTO、AuthInterceptor | architecture.md; dependencies.md |
| DataStore(設定、型指定)、Room と DataStore の使い分け | architecture.md |
コードフォーマット(Spotless、spotlessCheck/spotlessApply) | assets/convention/QUICK_REFERENCE.md; gradle-setup.md |
| Compose のパターン、モーション、アニメーション、修飾子、安定性 | compose-patterns-quick.md |
Paging 3 + Room + ネットワーク(RemoteMediator、リモートキー、initialize) | compose-patterns.md |
| アクセシビリティ、TalkBack、ラベルの文言、ライブリージョン、Espresso のアクセシビリティ | android-accessibility-quick.md |
| 通知、フォアグラウンドサービス、MediaStyle、PiP、共有シート | android-notifications.md |
| メディア:API 37 のバックグラウンド再生、Media3、ピッカー、FileProvider、共有シート | android-media.md |
| データ同期とオフラインファーストのパターン | android-data-sync-quick.md |
| Material 3 のテーマ設定、間隔トークン、ダイナミックカラー | android-theming-quick.md |
| Navigation3、ディープリンク、App Links、アダプティブレイアウト | android-navigation-quick.md |
| Kotlin のパターン、View ライフサイクルとの相互運用 | kotlin-patterns.md |
コルーチンのパターン(StateFlow、Channel、callbackFlow) | coroutines-patterns-quick.md |
| Gradle、プロダクトフレーバー、BuildConfig、ビルドパフォーマンス、R8 | gradle-setup.md |
| コード品質(Detekt 規約プラグイン、CI) | code-quality.md |
| テスト方針(ユニットテスト、インストルメンテーションテスト、Compose UI) | testing-quick.md |
| 国際化とローカライズ | android-i18n.md |
| 実行時権限、Photo Picker、API 37 の位置情報プライバシー | android-permissions.md |
| Kotlin の委譲パターン | kotlin-delegation.md |
| クラッシュレポート(Firebase/Sentry のインターフェース、PII のスクラブ) | crashlytics.md |
| デザインパターン(GoF スタイル、Room FTS) | design-patterns-quick.md |
| パフォーマンス、Play Vitals、起動、再コンポジション、ジャンク、APA、Perfetto | android-performance.md |
| 制約のあるデバイスでの Android 17 QPR2 のメモリ予算(オプション) | android-performance.md |
| デバッグ、Logcat、ANR、Gradle エラー、R8 マッピング、メモリリーク | android-debugging.md |
| 移行(XML、RxJava、Navigation、Compose、Room 2→3、API 37、16 KB ネイティブ、Compose と XML の相互運用) | migration.md; 16 KB ページサイズ; Compose と XML の相互運用 |
例
Convention Plugins を使った新規 Android アプリ
ユーザーの目標:スキルスタックに合った新しいリポジトリを作成します。
操作:assets/convention/QUICK_REFERENCE.md に従って、assets/settings.gradle.kts.template、assets/libs.versions.toml.template、assets/convention/ を build-logic/ にコピーします。includeBuild("build-logic") を設定し、modularization.md と gradle-setup.md を読みます。
結果:バージョンカタログを備え、Convention Plugins が適用されたルートモジュール、app モジュール、コアモジュールができます。
新機能画面(Compose + ViewModel)
ユーザーの目標:機能モジュールに新しいフローを1つ追加します。
操作:モジュールの命名と依存関係の方向については modularization.md を、Screen、状態、エフェクトについては compose-patterns-quick.md を参照します。StateFlow / イベントについては kotlin-patterns.md と coroutines-patterns-quick.md を参照します。ドメインとデータの境界については architecture.md を参照します。
結果:Screen コンポーザブル、ViewModel、UiState を備え、既存のグラフに沿った DI を使う機能モジュールができます。
Room 3 とリモート API を使ったオフラインファーストのリスト
ユーザーの目標:キャッシュされたリストを表示し、ネットワークから更新します。
操作:Paging 3 と RemoteMediator については compose-patterns.md を、リポジトリの配置については architecture.md を参照します。workflows.md(データベースの操作)に従って Room 3 と SQLiteDriver を使用し、アップグレードする場合は migration.md を参照します。
結果:Room を唯一の信頼できる情報源とし、ガイドにある PagingData または同等のパターンで UI を駆動します。
Target SDK / compile SDK の引き上げ(例:API 37)
ユーザーの目標:ツールチェーンとプラットフォーム要件を移行します。
操作:migration.md に沿って作業し、gradle-setup.md と dependencies.md を使って AGP/Kotlin/KSP のバージョンを固定します。workflows.md(Target SDK 37 への移行)に従って、エッジツーエッジ、メディア、セキュリティを照合します。
結果:移行ドキュメントに従ってマニフェスト、Gradle、機能コードを調整し、compileSdk / targetSdk を引き上げます。
トラブルシューティング
| 症状 | 考えられる原因 | 対処方法 |
|---|---|---|
| Gradle の同期に失敗する、プラグインが見つからない、またはバージョンカタログのエラーが発生する | google() / mavenCentral() の不足、プラグイン ID の誤り、またはカタログのエイリアスの不整合 | ブートストラップ時は gradle-setup.md を参照し、assets/libs.versions.toml.template に合わせてください |
| Room で KSP エラーが発生する、または Room 3 のビルダーでドライバーがないとエラーになる | Room 3(テンプレートでは 3.0.3)では setDriver(BundledSQLiteDriver())(またはプロジェクトに相当する設定)が必要です | migration.md; modularization.md; architecture.md |
@TypeConverter が解決されない、または DAO の戻り値の型が拒否される | Room 3 では @ColumnTypeConverter に名前が変更されています。Flow / suspend 以外の戻り値の型には @DaoReturnTypeConverters が必要です | migration.md |
seeds.txt にクラスが記載されているのに、リリース時のみクラッシュする | AGP 9 の strictFullModeForKeepRules:-keep class A ではコンストラクターが保持されなくなりました | android-debugging.md; gradle-setup.md |
| Compose、nav3、または androidx.hilt のバージョンを上げた直後に Gradle の同期に失敗する | これらのライブラリは compileSdk 37 に対してコンパイルされており、AGP >= 9.2.0 が必要です | migration.md; gradle-setup.md |
| target 37 で LAN デバイスの検出やローカル HTTP 呼び出しが何も表示せず失敗する | ACCESS_LOCAL_NETWORK が必要です。または、権限不要の NsdManager ピッカーを使用してください | android-permissions.md; migration.md |
| バックグラウンド音声が例外もなく無音になる | API 37 のオーディオ強化により、MediaSession または mediaPlayback FGS がありません | android-media.md |
| Compose ランタイムで不安定またはスキップ可能な再コンポジションに関する警告が表示される | パラメーターの型が不安定、または状態が不適切に保持されています | compose-patterns-quick.md; android-performance.md; kotlin-patterns.md |
リリースビルドがクラッシュする、ClassNotFoundException が発生する、または R8 ルールが不足している | 縮小処理によってリフレクションまたは JNI のエントリポイントが削除されました | android-debugging.md; gradle-setup.md |
| 根拠がないまま ANR やジャンクが主張される | メインスレッドまたは測定に関する前提に問題があります | アーキテクチャを変更する前に、android-performance.md または Perfetto を確認してください |