Skip to content
Development
Skill

/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.

From plugin
agent-skills-standard
538200 skills1 MCP
Install
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill android-navigation-3 --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/android-navigation-3

Context preview

The summary Claude sees to decide when to auto-load this skill.

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.

SKILL.md

android-navigation-3.SKILL.md
name: android-navigation-3
description: 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.
metadata:
  triggers:
    files:
    - '**/*NavHost.kt'
    - '**/*Navigation*.kt'
    - '**/*Screen.kt'
    keywords:
    - Navigation 3
    - NavDisplay
    - NavKey
    - NavEntry
    - migrate navigation
    - multiple backstacks
    - nav3

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](references/migration-guide.md) for step-by-step conversion from `NavHost`/`NavController` to `NavDisplay`.

Key changes: 1. Replace string routes with data objects/classes. 2. Replace `NavHost` with `NavDisplay`. 3. Replace `NavController.navigate()` with direct list manipulation. 4. Replace `navArgument` with data class properties.

Common patterns

See [recipes](references/recipes.md) 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)](references/migration-guide.md)
  • [Recipes](references/recipes.md)
Read more
Ships withagent-skills-standard

The portable SDLC standards layer for AI coding agents. Sync once, then work in your own runtime.

Get the whole plugin

Other skills on agent-skills-standard.