mcpbeat

Android Navigation 3

hoangnguyen0403/android-navigation-3

Install and migrate to Jetpack Navigation 3. Use when implementing Navigation 3 patterns including NavDisplay, NavKey routes, deep links, multiple backstacks, scenes (dialogs, bottom sheets), or migrating from Navigation 2.

3k tokens
context cost
the whole folder, loaded on every use
4
files
instructions only
0
copies elsewhere
how many repositories repackaged it
536
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/HoangNguyen0403/agent-skills-standard --skill android-navigation-3

What comes with it

9 751 bytes besides the instruction
evals/evals.json
references/migration-guide.md
references/recipes.md

The instruction itself

9 sections, as written by the author

Jetpack Navigation 3

Priority: P1 (HIGH)

Guide for implementing and migrating to Navigation 3 in Jetpack Compose.

Core concepts

Navigation 3 replaces the previous NavHost/NavController pattern with a simpler, state-driven approach:

  • Routes are Kotlin data objects/classes (not strings).
  • Back stack is a plain mutableStateListOf<Any>.
  • NavDisplay renders the current route based on a lambda.

Basic usage

val backStack = remember { mutableStateListOf<Any>(RouteHome) }

NavDisplay(
    backStack = backStack,
    onBack = { backStack.removeLastOrNull() },
    entryProvider = { key ->
        when (key) {
            is RouteHome -> NavEntry(key) { HomeScreen(onNavigate = { backStack.add(it) }) }
            is RouteDetail -> NavEntry(key) { DetailScreen(key.id) }
            else -> error("Unknown route: $key")
        }
    }
)

Migration from Navigation 2

See migration guide for step-by-step conversion from NavHost/NavController to NavDisplay.

Key changes:

  • Replace string routes with data objects/classes.
  • Replace NavHost with NavDisplay.
  • Replace NavController.navigate() with direct list manipulation.
  • Replace navArgument with data class properties.

Common patterns

See recipes for code examples:

  • Basic navigation with arguments
  • Bottom navigation with multiple backstacks
  • Deep links (basic and with synthetic backstack)
  • Dialogs and bottom sheets
  • Conditional navigation (auth flows)
  • Returning results between screens
  • Modularized navigation with Hilt or Koin

Verification

  • [ ] Routes are data objects/classes, no string-based routing.
  • [ ] Back stack is a mutableStateListOf<Any>.
  • [ ] NavDisplay handles all routes in entryProvider.
  • [ ] ./gradlew build succeeds.

Anti-Patterns

  • No string-based routes: Use Kotlin data objects/classes for type safety.
  • No NavController for new projects: Use NavDisplay with a state list.
  • No remember { navController() }: Navigation 3 doesn't use NavController.

References

  • Migration Guide (Nav2 → Nav3)
  • Recipes

How to use it

Copy the folder

Take hoangnguyen0403/android-navigation-3 from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.