Android modularization
Skill krutikJain/android-agent-skills/skills/android-modularization
Android skills repository for Kotlin, Compose, XML, testing, CI, release work, and legacy upgrades
npx -y skills add krutikJain/android-agent-skills --skill android-modularizationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Design Android repositories with feature, core, and build-logic modules that scale without cyclic dependencies.
SKILL.md
4.4 KB, as published. Nobody here has run it
Android Modularization
When To Use
- Use this skill when the request is about: android module split, feature modularization in android, break cyclic module dependency.
- Primary outcome: Design Android repositories with feature, core, and build-logic modules that scale without cyclic dependencies.
- Reach for this skill when the problem is dependency direction, API ownership, or feature/data/core boundaries, not task-level build speed tuning.
- Handoff skills when the scope expands:
android-gradle-build-logicandroid-architecture-clean
Workflow
- Map the current module graph first: app, feature, data, core, build-logic, and any dynamic-feature or test-only modules.
- Identify which direction is wrong: feature-to-feature coupling, framework leakage into domain/data, API surface too wide, or duplicated shared code with unclear ownership.
- Split by ownership and change rate, not by abstract theory; create the smallest module boundary that removes the current coupling problem.
- Keep
apivsimplementation, public surface area, and test fixture ownership explicit so the new boundary stays stable. - Hand off build-speed or plugin-architecture issues only after the module graph itself is coherent.
Guardrails
- Prefer official Android and Kotlin guidance over custom local conventions when they conflict.
- Keep public APIs boring and explicit; avoid clever abstractions that hide Android lifecycle costs.
- Do not mix architectural cleanup with product behavior changes unless the request explicitly needs both.
- Document any compatibility constraints that will affect old modules or generated code.
- Avoid over-modularizing a small codebase when the real need is a single clearer ownership boundary.
Anti-Patterns
- Sprinkling helpers across modules without a clear ownership boundary.
- Introducing framework-specific code into pure domain or data layers.
- Refactoring every adjacent file when only one contract needed to change.
- Leaving migration notes implied instead of writing them down.
- Treating module count as the goal instead of build isolation and dependency clarity.
Examples
Happy path
- Scenario: Review the fixture apps as app modules and map the next split into feature/core layers.
- Command:
cd examples/orbittasks-compose && ./gradlew :app:projects
Edge case
- Scenario: Keep shared XML resources and manifest placeholders from leaking across modules.
- Command:
cd examples/orbittasks-xml && ./gradlew :app:dependencies
Failure recovery
- Scenario: Differentiate modularization requests from architecture-clean and build-logic prompts.
- Command:
python3 scripts/eval_triggers.py --skill android-modularization
Done Checklist
- The implementation path is explicit, minimal, and tied to the right Android surface.
- Relevant example commands and benchmark prompts have been exercised or updated.
- Handoffs to adjacent skills are documented when the request crosses boundaries.
- Official references cover the chosen pattern and the main migration or troubleshooting path.