Guide for implementing Shell-based navigation in .NET MAUI apps. Covers AppShell setup, visual hierarchy (FlyoutItem, TabBar, Tab, ShellContent), URI-based navigation with GoToAsync, route registration, query parameters, back navigation, flyout and tab configuration, navigation events, and navigation guards.
SkillScore100Maintained
Automatic
◆Frontend / UI pack
Last verified 8/19/2026
What it changes
Passed 22 of 22 test cases with the skill, and 19 of 22 without it.
Without skill86%
With skill100%
Checks it passed that the model alone missed
Calls GetDeferral on ShellNavigatingEventArgs.
Calls Cancel on ShellNavigatingEventArgs if the user cancels.
Applies QueryProperty attribute directly to ContentPage class.
and 2 more in the full report
3 fixed19 passed either way0 still failing0 broke
Pass-rate lift
+14 pp
Tokens
+137%
Agent turns
0%
Response time
-32%
Model gemini-3.6-flashMeasured 8/19/2026v122 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 3 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 3
Prompt
I want to receive a simple string parameter 'userId' on my UserProfilePage using attribute routing instead of implementing interfaces. I am debating whether to put the attribute on the ViewModel class or the ContentPage class. Where should QueryProperty be applied and how is it structured in code?
What was checked, without and with the skill
Checked
Without skill
With skill
Applies QueryProperty attribute directly to ContentPage class.
Missed
Passed
Specifies property name and query parameter key inside QueryProperty attribute.
Passed
Passed
case-09 · gemini-3.6-flash · 8/19/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md332 lines2 files
.NET MAUI Shell Navigation
Implement page navigation in .NET MAUI apps using Shell. Shell provides URI-based navigation, a flyout menu, tab bars, and a four-level visual hierarchy — all configured declaratively in XAML.
When to Use
Setting up top-level app navigation with tabs or a flyout menu
Navigating between pages programmatically with GoToAsync
Passing data between pages via query parameters or object parameters
Registering detail-page routes for push navigation
Guarding navigation with confirmation dialogs (e.g., unsaved changes)