Android architecture
Skill adrigm06/Android-Engineering-Skill/skills/android-architecture
A modular, composable, production-grade Android skill system for agentic engineering workflows, designed to behave like a senior Android Staff Engineer under real-world constraints.
npx -y skills add adrigm06/Android-Engineering-Skill --skill android-architectureAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 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
Architecture strategy for Android apps at real production scale. Use this whenever the user asks about app structure, modularization, MVVM/MVI/UDF choices, migration from legacy code, dependency boundaries, or architecture review decisions.
SKILL.md
6.3 KB, as published. Nobody here has run it
Purpose
Design and evolve Android architecture with enforceable boundaries, explicit ownership, and migration-safe sequencing under real delivery constraints.
Scope and authority
This skill is the lead authority for:
- module boundaries and dependency direction
- layering and ownership topology
- architecture style selection (MVVM/MVI/UDF/Clean depth)
- migration design from legacy structures
This skill is not the final authority for:
- critical security exposure (
android-securityoverride) - release go/no-go (
android-release-engineeringoverride) - runtime SLA constraints (
android-performanceruntime override)
When to use
Use this skill when the user is:
- starting architecture for a new Android app or major feature set
- refactoring package/module structure
- deciding architecture style fit for current team and product complexity
- resolving dependency boundary violations
- requesting migration paths from legacy codebases
- asking for ADR-ready architecture decisions
Required inputs
Collect the minimum set that changes the decision:
- team topology and ownership model
- app/domain complexity and release cadence
- current architecture pain points and dependency graph symptoms
- build/CI constraints and delivery deadlines
- regulatory/security constraints
- migration risk tolerance and rollback requirements
If key inputs are missing, proceed with explicit assumptions and lower confidence.
Decision engine workflow
- Frame constraints and decision domain.
- Classify architecture maturity (seed, scaling, multi-team, legacy-heavy).
- Select architecture style branch and module topology branch.
- Validate against global dependency constraints.
- Run cross-skill checks (security/performance/build/testing/release).
- Resolve conflicts using authority model from
../../AGENTS.md. - Return target-state design + phased migration plan + rollback points.
Branching decision tree
Branch A: architecture maturity
Seed team(1-4 engineers, fast iteration):- Prefer modular monolith + package-by-feature.
- Delay deep multi-module split unless ownership/build pain is concrete.
Scaling team(5-12 engineers, multiple ownership zones):- Introduce selective feature/core modules by ownership and change rate.
- Add API boundaries where coordination overhead is rising.
Multi-team(12+ engineers, parallel delivery):- Use explicit feature modules + strong domain/core contracts.
- Enforce strict dependency visibility and review gates.
Legacy-heavy(high coupling, fragile releases):- Use strangler migration slices.
- Prioritize boundary stabilization before style purity.
Branch B: state/architecture style fit
MVVM: default for mostly CRUD/form/list flows with moderate complexity.MVI/UDF: choose for event-heavy flows and high state-transition complexity.Deeper Clean boundaries: choose only when cross-feature domain policy and long-term ownership justify added indirection.
Branch C: migration strategy
Low tolerance for risk: incremental adapters + compatibility seams.Moderate tolerance: parallel module extraction with feature-by-feature cutover.High tolerance with strong tests: accelerated boundary rewrite with staged guardrails.
Conflict handling and composition
When activated with other skills:
- With
android-performance:- Keep architectural boundaries unless measured runtime/regression evidence requires exception.
- If exception is needed, time-box it and define path back to target architecture.
- With
android-compose:- Compose state patterns must fit architecture ownership boundaries.
- Reject UI-local shortcuts that leak domain/data responsibilities.
- With
android-gradle-build:- Module proposals must be build-graph-feasible; avoid theoretical splits that harm CI throughput.
- With
android-security:- Security-critical controls override structural preference.
- With
android-testing:- If migration confidence is weak, increase verification scope before high-risk structural changes.
Real-world tradeoff guidance
Allow context-justified non-ideal decisions when clearly labeled:
- "Temporary shared module" may be acceptable under deadline if ownership exit criteria is defined.
- "Hybrid architecture" may be acceptable during migration if dependency direction remains enforceable.
- "Deferred module split" may be acceptable when build pain is low and team size is stable.
Do not present temporary compromises as final architecture.
Anti-pattern detection
Flag and explain:
- god modules with mixed UI/domain/data responsibilities
- fake clean layers with pass-through use cases
- feature-to-feature dependency shortcuts
- domain contaminated by framework or transport concerns
- over-modularization with no ownership or build ROI
Uncertainty protocol
Always report confidence for non-trivial decisions:
High(>= 0.80): constraints and evidence are strong.Medium(0.60-0.79): assumptions or tradeoff ambiguity exists.Low(< 0.60): key data missing or conflicts unresolved.
If confidence is medium/low:
- list assumptions that could flip the decision
- provide at least one viable alternative path
- identify minimum missing data needed to finalize
- escalate to supporting skills where uncertainty is cross-domain
Cross-skill handoff payload
Use the standard payload defined in ../../AGENTS.md (section: Cross-skill handoff contract).
Set requesting_skill to android-architecture.
Output contract
Use the global section order from ../../AGENTS.md and adapt content for architecture tasks:
Context and constraintsDecision and rationaleAlternatives consideredTradeoffsRisks and mitigationsConfidence and unknownsCross-skill impactsNext implementation steps
Also include:
Proposed module treeDependency rules (allowed/forbidden)Migration path with rollback-safe phasesADR draft
Related resources
references/architecture-selection.mdreferences/module-boundaries.mdtemplates/architecture-proposal.mdtemplates/adr.mdexamples/anti-patterns.md