skills/android/android-navigation-3/SKILL.md
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.
npx skillsauth add hoangnguyen0403/agent-skills-standard android-navigation-3Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Guide for implementing and migrating to Navigation 3 in Jetpack Compose.
Navigation 3 replaces the previous NavHost/NavController pattern with a simpler, state-driven approach:
mutableStateListOf<Any>.NavDisplay renders the current route based on a lambda.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")
}
}
)
See migration guide for step-by-step conversion from NavHost/NavController to NavDisplay.
Key changes:
NavHost with NavDisplay.NavController.navigate() with direct list manipulation.navArgument with data class properties.See recipes for code examples:
mutableStateListOf<Any>.NavDisplay handles all routes in entryProvider../gradlew build succeeds.NavDisplay with a state list.remember { navController() }: Navigation 3 doesn't use NavController.development
Summarizes GitHub PR, GitLab MR, or Azure DevOps PR metadata, review threads, changed files, and template completeness. Use during review-ticket or code-review workflows when PR/MR context exists.
tools
Development tools, linting, and build config for TypeScript. Use when configuring ESLint, Prettier, Jest, Vitest, tsconfig, or any TS build tooling.
development
Validate input, secure auth tokens, and prevent injection attacks in TypeScript. Use when validating input, handling auth tokens, sanitizing data, or managing secrets and sensitive configuration.
development
Apply modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings.