modularization

Installation
SKILL.md

Modularization

Declare everything at the lowest visibility that still compiles. Start private; widen to internal only when another file in the same module needs it; widen to public only when a different module actually consumes it. Kotlin defaults to public, and in a multi-module project that default is usually wrong — a public symbol joins the module's API surface: it leaks implementation across the boundary and you are then obliged to keep it stable.

  • Public interface as the module's API → the interface is public; its implementation class stays internal (DI-bound, never named from another module).
  • Mapper / helper / extension / constant / UI-state holder used only inside the module → internal (or private if a single file uses it). "Rendered by a composable in this module" does not require publicinternal is visible to the whole module.
  • Member used only within its class → private.

Widening a symbol to public is a decision, not a default: confirm a real cross-module consumer first.

Installs
63
GitHub Stars
136
First Seen
Jul 3, 2026
modularization — rcosteira79/android-skills