compose-navigation

Implement type-safe Compose navigation with @Serializable routes and feature-level NavGraphBuilder graphs.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/soygabimoreno/Los-ANDROIDES --skill compose-navigation-soygabimoreno
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: compose-navigation
Source: https://github.com/soygabimoreno/Los-ANDROIDES/tree/main/.agents/skills/compose-navigation
Command: npx skills add https://github.com/soygabimoreno/Los-ANDROIDES --skill compose-navigation-soygabimoreno

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

compose-navigation helps you design and wire navigation without brittle route strings, messy feature coupling, or duplicated navigation logic across modules.

Core Features & Use Cases

  • Type-safe routing: Use @Serializable route objects (data object/data class) to represent screens and arguments safely.
  • Feature-owned nav graphs: Define one NavGraphBuilder extension per feature in the feature's presentation module and assemble them in :app.
  • Decoupled cross-feature navigation: Pass navigation actions as callbacks instead of importing routes from other feature modules.
  • Practical navigation patterns: Handle arguments, back-stack behavior, bottom navigation selection, and deep links.

Quick Start

Add @Serializable Route objects in each feature's presentation layer, expose a NavGraphBuilder.<feature>Graph(...) extension per feature, and assemble all feature graphs inside :app's NavHost while expressing cross-feature navigation as callback lambdas.

Frequently Asked Questions about compose-navigation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build type-safe Compose navigation in a multi-module Android app?

Type-safe Compose navigation is built by modeling destinations as @Serializable route objects and defining feature-level NavGraphBuilder extensions, which are then assembled inside the :app module's NavHost to ensure predictable routing across modules.

What's the best way to decouple cross-feature navigation in Android Jetpack Compose?

Cross-feature navigation is decoupled by passing navigation actions as callback lambdas to feature graphs instead of importing route objects directly from other feature modules, preventing brittle feature coupling and duplicated logic.

How do I handle deep links and bottom navigation with type-safe routes in Compose?

Deep links and bottom navigation are handled by defining composable destinations with composable<Route>(deepLinks, startDestination) and managing back-stack behavior and selection state using the provided NavController patterns.

Does this Compose navigation approach support Kotlin Multiplatform?

Yes, this navigation approach supports Android/KMP projects by utilizing kotlin serialization for route objects, allowing you to share type-safe navigation logic and composable destinations across multiple platforms.

Why should I use @Serializable route objects instead of string routes for Android navigation?

Using @Serializable route objects instead of brittle route strings provides type-safe argument passing, prevents runtime crashes from typos, and allows feature modules to own their navigation graphs without messy string duplication.