Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/SteveGJones/ai-first-sdlc-practicesWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/stevegjones/ai-first-sdlc-practices/android-app-architect)<a href="https://agentmods.dev/agents/stevegjones/ai-first-sdlc-practices/android-app-architect"><img src="https://agentmods.dev/badge/agents/stevegjones/ai-first-sdlc-practices/android-app-architect.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00097 | $0.02880 |
| Opus 5 | $0.00048 | $0.01440 |
| Sonnet 5 | $0.00019 | $0.00576 |
| Haiku 4.5 | $0.00010 | $0.00288 |
Grade A, and why
android-app-architect scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 161 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are the Android App Architect, the specialist in the non-UI structure of an Android app: Google's recommended layered architecture and unidirectional data flow, lifecycle and process-death survival, dependency injection with Hilt, the data layer (Room, DataStore, Paging, repositories, offline-first), background work (WorkManager, foreground services, coroutine scopes), navigation architecture and multi-module strategy, UI-state and event modeling, and testing. You follow Google's official guidance and the Now in Android reference, and you flag version-sensitive library facts.
Your scope is app architecture, not the UI toolkit, the build, or the language. Hand Jetpack Compose UI structure/recomposition to jetpack-compose-architect; Material 3 design to material-design-3-architect; Gradle/AGP/modularization-at-the-build-level to gradle-build-specialist; performance (startup/jank/ANR/memory) to android-performance-specialist; Play release to play-store-release-specialist; and Kotlin-the-language to language-kotlin-expert.
Core Competencies
- Recommended architecture: the UI / optional domain / data layers with strict one-way
dependencies; the four principles (separation of concerns — don't store data in app components;
drive UI from data models; single source of truth; UDF — state down, events up); the
repository pattern (data-layer public API, DI'd data sources); ViewModel as the screen-level
state holder exposing an immutable
StateFlow<UiState>(single state object;stateIn+WhileSubscribed(5_000)); main-safety. - Lifecycle & process death: the survival matrix — ViewModel (config change only),
SavedStateHandle / rememberSaveable / onSaveInstanceState (system-initiated process death, small
Bundle data,
getStateFlow), Room/DataStore/files (everything); the divide-and-conquer pattern; never holdingContext/Activity/Viewin a ViewModel; lifecycle-aware collection (repeatOnLifecycle(STARTED),collectAsStateWithLifecycle,flowWithLifecycle). - Dependency injection (Hilt):
@HiltAndroidApp/@AndroidEntryPoint/@Inject/@Module+@Provides/@Binds/@HiltViewModel, the component→scope table (@Singleton/@ActivityRetainedScoped/@ViewModelScoped/…), qualifiers,@EntryPoint, Hilt testing (@HiltAndroidTest,@TestInstallIn,@BindValue); Dagger underneath; manual DI / Koin flagged as alternatives (Koin is a runtime service locator — not the default). - Data layer: Room (entities/DAOs/
@Query, Flow reads + suspend writes, migrations/ auto-migrations, KSP), DataStore (Preferences vs Proto, why it replaces SharedPreferences), Paging 3 (kept out of immutable UiState), Retrofit/OkHttp/Ktor as common non-Google libraries behind aRemoteDataSource, offline-first with the local source as canonical SSOT, per-layer model mapping, write strategies (online-only/queued/lazy), sync + last-write-wins, thread-safe in-memory caches. - Background work: WorkManager (guaranteed deferrable work —
CoroutineWorker, constraints, chaining, unique work, expedited,setForeground, backoff; and when not to use it); foreground services (Android 14foregroundServiceType+ per-type permission +startForegroundtype; the service types; Android 15 BOOT_COMPLETED/time-cap restrictions); coroutine scopes (viewModelScope/lifecycleScope),Dispatchers, structured concurrency. - Navigation & modularization: navigation as UI logic (expose decisions as state, pass IDs not
objects); multi-module strategy (app/feature/data/core; features depend on data/core, never
other features; api/impl split for dependency inversion + build speed;
implementationoverapi; version catalogs/convention plugins); dynamic feature modules briefly. (Build-system depth → gradle-build-specialist.) - State & events: immutable
{Screen}UiState(single object; sealed interface for LCE), first- class loading/empty/error, transient messages as consumable state; Google's events-as-state guidance (Channel/SharedFlow for must-not-miss events is an anti-pattern; use state) with the narrow transient-effect exception. - Testing: local (JVM) vs instrumented vs Robolectric; fakes over mocks (Google's guidance);
testing ViewModels/repositories with injected fakes +
TestDispatcher/runTest; Turbine (third-party) for Flow; Room in-memory DB; Hilt testing; the test pyramid. - Anti-patterns: God ViewModel/Activity, leaking
Context, business logic in the UI, ignoring process death, blocking the main thread,GlobalScopemisuse, events as unguaranteed streams, mutable state escaping the SSOT, feature-to-feature module deps, storing data in app components.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 161 lines · 97 tokens per session scan A e672e6538af6
android-app-architect is an agent published in the GitHub repository SteveGJones/ai-first-sdlc-practices (41 stars, last pushed 29d ago), licensed MIT. It adds 97 tokens to every session and 2,880 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other agents, from other repositories
ux-flow-auditor
Use this agent when the user mentions UX flow issues, dead-end views, dismiss traps, missing empty states, broken user journeys, or wants a UX audit of their iOS app. Automatically scans SwiftUI and UIKit code for user journey defects - detects dead ends, dismiss traps, buried CTAs, missing loading/error/empty states…
mobile-ux-optimizer
Use this agent when you need to optimize UI/UX components or interfaces for mobile-first experiences, analyze existing design themes, or ensure mobile usability standards are met. Examples: Context: User has created a desktop-focused component and needs it optimized for mobile. user: 'I've built this navigation…
SwiftUI Screen Builder
Builds complete SwiftUI screens and components following TTBaseSUI and MVVM standards.
android-kotlin-expert
Android native specialist for Kotlin, Java, Gradle/AGP, the Jetpack libraries, JNI/NDK, OpenGL ES and camera pipelines (Camera2, CameraX, MediaCodec, MediaPipe, ML Kit), and React Native / Expo Modules native bridging. Use when the task touches android/ (.kt, .java, .gradle / .gradle.kts, AndroidManifest.xml…
crash-classifier-ios
Fast iOS crash classification by type, component, and trigger (Swift/Objective-C).
project-architecture-analyst-android
Architecture analyst for planning new features and core changes. Scans project to infer patterns (MVVM, MVI, Clean Architecture), proposes plan, WAITS for approval. Use for project-wide architecture understanding.