One command to scaffold a production-ready Android project with AI agent harness.
Project setup, UI-ready structure, and .claude harness — all in one step.
Based on NowInAndroid by Google.
Works with: Claude Code · Gemini CLI · Cursor · Copilot
git clone https://github.com/warrenth/nowinandroid-agent-kit.git
cd nowinandroid-agent-kit
./generate.shProject name: MyApp
Package name: com.example.myapp
Output directory: ~/Projects/MyApp
==> Copying project scaffold... ✓
==> Replacing placeholders... ✓
==> Organizing source files... ✓
==> Setting up AI agent harness... ✓ (8 rules, 8 skills, 4 agents)
==> Initializing git repository... ✓
✓ Project generated successfully!
14 modules ready:
├── app Entry point + Bottom Navigation
├── core/model Domain data classes
├── core/domain UseCases
├── core/data Repository (offline-first)
├── core/database Room DAOs + Entities
├── core/network Retrofit + OkHttp
├── core/datastore DataStore preferences
├── core/designsystem Material 3 Theme + Components
├── core/ui Shared Composables
├── core/navigation Routes
├── core/common Dispatcher DI
├── core/testing Test utilities + Fakes
├── feature/home ★ Sample feature (copy this!)
├── feature/settings Settings placeholder
└── sync/work WorkManager sync
Open in Android Studio → Replace
BASE_URL→ Add your features.
Don't need the full project? Grab individual files:
# One skill
cp -r skills/compose-animation/ your-project/.claude/skills/
# All rules
cp -r rules/ your-project/.claude/rules/
# Everything
cp -r rules/ skills/ agents/ your-project/.claude/| Rule | Enforces |
|---|---|
| architecture | Clean Architecture layers, ViewModel / UseCase / Repository |
| module-boundary | Feature API/Impl split, dependency direction |
| compose-rules | State hoisting, recomposition, side effects |
| coroutines | Scope, Flow collection, CancellationException |
| kotlin-style | Formatting, naming, null safety |
| naming-convention | NIA class/function/resource naming |
| testing | Fakes over Mocks, Turbine, AAA pattern |
| performance | Recomposition, image loading, startup |
| Skill | Teaches |
|---|---|
| compose-animation | 7 animation patterns (visibility, rotation, keyframes, stagger, state machine, canvas, gesture) |
| compose-performance | Stability, graphicsLayer, derivedStateOf |
| compose-navigation | Type-safe routes, adaptive nav |
| compose-testing | ViewModel / UI / screenshot tests |
| compose-migration | XML → Compose strategy |
| hilt-di | @Binds / @Provides, convention plugins |
| coroutines-flow | StateFlow, parallel sync, change-list |
| room-offline | Offline-first, Entity / DTO / Domain mapping |
| Agent | Role |
|---|---|
| architect | Module design, dependency graph |
| coder | Feature implementation |
| code-reviewer | Architecture compliance review |
| tester | Unit / UI / screenshot tests |
READ: Room → Repository → UseCase → ViewModel (StateFlow) → Compose UI
WRITE: UI event → ViewModel → Repository → DataStore / Room
SYNC: WorkManager → SyncWorker → Network → Room
Full project structure
MyApp/
├── app/
│ └── src/main/kotlin/com/example/myapp/
│ ├── MainApplication.kt @HiltAndroidApp
│ ├── MainActivity.kt @AndroidEntryPoint
│ └── AppNavHost.kt Bottom Nav + routing
│
├── core/
│ ├── model/ SampleItem.kt, UserData.kt
│ ├── domain/ GetSampleItemsUseCase.kt
│ ├── data/ OfflineFirstSampleRepository.kt, DataModule.kt
│ ├── database/ AppDatabase.kt, SampleItemDao.kt, SampleItemEntity.kt
│ ├── network/ NetworkModule.kt, SampleApi.kt, NetworkSampleItem.kt
│ ├── designsystem/ Theme.kt, LoadingWheel.kt, DynamicAsyncImage.kt
│ ├── datastore/ (DataStore preferences)
│ ├── navigation/ (Routes)
│ ├── ui/ (Shared composables)
│ ├── common/ Dispatchers.kt
│ └── testing/ (Test utilities)
│
├── feature/
│ ├── home/
│ │ ├── api/ HomeNavKey.kt
│ │ └── impl/ HomeViewModel.kt, HomeScreen.kt
│ └── settings/
│ └── impl/ SettingsScreen.kt
│
├── sync/work/ (WorkManager sync)
│
├── .claude/ 8 rules + 8 skills + 4 agents
├── CLAUDE.md
├── gradle/libs.versions.toml
└── gradle.properties
Derived from NowInAndroid (March 2026): AGP 9.0, Kotlin 2.3, Compose BOM 2025.09, Hilt 2.59, Room 2.8.3, Navigation3.
Fork → branch → add/improve rules or skills → PR. All code examples must come from real NowInAndroid source analysis.
MIT