File-based Expo Router navigation: routes, stacks, tabs, links, modals, and headers.

How it works

Foe: Blank Mimic, an empty screen or canvas that needs a design.

Foes

  • Blank Mimic

Party · Context

  • RangerYour agent100/100
  1. Blank Mimic

    The Blank Mimic blocks the way.

    What really happensIt stands for an empty screen or canvas that needs a design.

    Ranger: Context 100/100.

  2. Blank stare

    The blank page stares back and drains the hero.

    What really happensStarting a screen from nothing costs time and context.

    Ranger takes 9. Ranger: Context 91/100.

  3. Expo Router

    The Router scroll opens when screens need doors.

    What really happensThe skill covers Expo Router navigation: file routes, links, native stacks, modals, sheets, native tabs, and headers.

    Blank Mimic takes 21.

  4. Expo Router

    The app/ halls are checked for a door at the root.

    What really happensRoutes live in app/. Components stay out of that folder. The app must have a route for /. Styling and motion are other skills.

    Blank Mimic takes 18.

  5. Blank stare

    The Blank Mimic uses Blank stare.

    Ranger takes 9. Ranger: Context 82/100.

  6. Expo Router

    Stacks, tabs, and links are cut into the file tree.

    What really happensUse Link from expo-router, Stack from expo-router/stack, and NativeTabs. On SDK 56+, import navigation helpers from expo-router/react-navigation.

    Blank Mimic takes 26.

  7. Expo Router

    Screens gain paths, titles, sheets, and long-press menus.

    What really happensYou get file-based routes with stacks, tabs, modals, form sheets, headers, and Link previews. Screen styling stays in expo-native-ui.

    Blank Mimic takes 35. Blank Mimic falls.

  8. Victory

    The Blank Mimic falls.

Learn this spell

Claude Code

claude plugin install expo@claude-plugins-official

Codex

codex plugin add expo@openai-curated

Notes

Covers file routes, Link, native stacks, modals, form sheets, NativeTabs, and headers. Styling belongs to expo-native-ui. Motion belongs to expo-animation. On SDK 56+, import navigation helpers from expo-router/react-navigation, not @react-navigation packages. The plugin install brings every Expo skill.

Proving Grounds record

Controlled quest results, separate from recorded usage. Each setup pools runs across its quests. The per-quest table below has casts, cast time, mana, incantation and runes; medians are not pooled.

Hero: Claude Code 2.1.305; weapon (model): claude-haiku-5-5; charge (effort): low; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.

Clear rate100%3 of 3 runs passed every check; Unarmed: 3 of 3 (matched quests)
Steadiness44%reliability: Wilson 95% lower bound
Buff+0 ppvs Unarmed, only matched quests (3 equipped runs; 3 control runs)
Instant casts2 of 3runs cleared on the first prompt; Unarmed: 1 of 3 (matched quests)
Attunement100%3 of 3 runs opened an equipped skill
Upkeep-9% manaextra mana per run vs Unarmed, median of 1 quest
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+4%lines added per run vs Unarmed, median of 1 quest

Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.

Clear rate100%2 of 2 runs passed every check; Unarmed: 2 of 2 (matched quests)
Steadiness34%reliability: Wilson 95% lower bound
Buff+0 ppvs Unarmed, only matched quests (2 equipped runs; 2 control runs)
Instant casts2 of 2runs cleared on the first prompt; Unarmed: 2 of 2 (matched quests)
Attunement100%2 of 2 runs opened an equipped skill
Upkeep+24% manaextra mana per run vs Unarmed, median of 1 quest
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+27%lines added per run vs Unarmed, median of 1 quest

Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.

Clear rate100%6 of 6 runs passed every check; Unarmed: 24 of 24 (matched quests)
Steadiness61%reliability: Wilson 95% lower bound
Buff+0 ppvs Unarmed, only matched quests (6 equipped runs; 24 control runs)
Instant casts6 of 6runs cleared on the first prompt; Unarmed: 24 of 24 (matched quests)
Attunement100%6 of 6 runs opened an equipped skill
Upkeep+11% manaextra mana per run vs Unarmed, median of 2 quests
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+1%lines added per run vs Unarmed, median of 2 quests

Hero: OMP 18.8.3; weapon (model): anthropic/claude-sonnet-5-5; charge (effort): medium; arena: warded; invoked cast (the prompt named the skill). macOS 27.0.1, arm64. Curator.

Clear rate100%3 of 3 runs passed every check; Unarmed: 3 of 3 (matched quests)
Steadiness44%reliability: Wilson 95% lower bound
Buff+0 ppvs Unarmed, only matched quests (3 equipped runs; 3 control runs)
Instant casts3 of 3runs cleared on the first prompt; Unarmed: 3 of 3 (matched quests)
Attunement100%3 of 3 runs opened an equipped skill
Upkeep+20% manaextra mana per run vs Unarmed, median of 1 quest
IncantationNot measuredoutput tokens per run vs Unarmed
Runes-36%lines added per run vs Unarmed, median of 1 quest

Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose). macOS 27.0.1, arm64. Curator.

Clear rate100%2 of 2 runs passed every check; Unarmed: 12 of 12 (matched quests)
Steadiness34%reliability: Wilson 95% lower bound
Buff+0 ppvs Unarmed, only matched quests (2 equipped runs; 12 control runs)
Instant casts2 of 2runs cleared on the first prompt; Unarmed: 12 of 12 (matched quests)
Attunement0%0 of 2 runs opened an equipped skill
Upkeep+3% manaextra mana per run vs Unarmed, median of 1 quest
IncantationNot measuredoutput tokens per run vs Unarmed
Runes+2%lines added per run vs Unarmed, median of 1 quest
Per-quest Proving Grounds record
QuestFixed taskClear ratePassed runsSteadinessReliability lower boundBuffClear-rate points vs UnarmedInstant castsFirst-prompt clearsCastsPrompts to clearCast timeAgent runtimeManaCost at API list pricesIncantationOutput tokensRunesLines added / removedAttunementSkills openedSetupApp, model, effort and sandbox
Ranger: orders screen performance passQuest v4100%3 of 3Unarmed: 100% (12 of 12)44%+0 ppvs Unarmed3 of 3100%Unarmed: 12 of 12130sUnarmed: 31s1,124 Unarmed: 978Not reportedUnarmed: 3.3k+75 / -38Unarmed: +74 / -39100%Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill).
macOS 27.0.1, arm64. Curator.
0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot)
Try this loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell expo-router --quest ranger-orders-list --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v4 and spell commits expo-router@55ec65cd16499f20f14fb10fe99a2e62901b00a1. How to run it

Ranger: Pantry navigation migrationQuest v5100%3 of 3Unarmed: 100% (3 of 3)44%+0 ppvs Unarmed2 of 367%Unarmed: 1 of 311m 32sUnarmed: 1m 56s208 Unarmed: 229Not reportedUnarmed: Not reported+153 / -130Unarmed: +147 / -120100%Hero: Claude Code 2.1.305; weapon (model): claude-haiku-5-5; charge (effort): low; arena: sealed; invoked cast (the prompt named the skill).
macOS 27.0.1, arm64. Curator.
0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot)
Try this loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell expo-router --quest ranger-recipe-router --hero claude-code --weapon 'claude-haiku-5-5' --charge low --cast invoked --control

Recorded with quest v5 and spell commits expo-router@55ec65cd16499f20f14fb10fe99a2e62901b00a1. How to run it

Ranger: Pantry navigation migrationQuest v5100%2 of 2Unarmed: 100% (2 of 2)34%+0 ppvs Unarmed2 of 2100%Unarmed: 2 of 212m 14sUnarmed: 2m 7s6,831 Unarmed: 5,496Not reportedUnarmed: Not reported+197 / -133Unarmed: +155 / -124100%Hero: Claude Code 2.1.305; weapon (model): claude-opus-5-5; charge (effort): high; arena: sealed; invoked cast (the prompt named the skill).
macOS 27.0.1, arm64. Curator.
0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot)
Try this loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell expo-router --quest ranger-recipe-router --hero claude-code --weapon 'claude-opus-5-5' --charge high --cast invoked --control

Recorded with quest v5 and spell commits expo-router@55ec65cd16499f20f14fb10fe99a2e62901b00a1. How to run it

Ranger: Pantry navigation migrationQuest v5100%3 of 3Unarmed: 100% (12 of 12)44%+0 ppvs Unarmed3 of 3100%Unarmed: 12 of 1211m 1sUnarmed: 1m 2s2,286 Unarmed: 2,116Not reportedUnarmed: 8.4k+203 / -198Unarmed: +202 / -198100%Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; invoked cast (the prompt named the skill).
macOS 27.0.1, arm64. Curator.
0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot)
Try this loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell expo-router --quest ranger-recipe-router --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v5 and spell commits expo-router@55ec65cd16499f20f14fb10fe99a2e62901b00a1. How to run it

Ranger: Pantry navigation migrationQuest v5100%2 of 2Unarmed: 100% (12 of 12)34%+0 ppvs Unarmed2 of 2100%Unarmed: 12 of 1211m 9sUnarmed: 1m 2s2,186 Unarmed: 2,116Not reportedUnarmed: 8.4k+206 / -198Unarmed: +202 / -1980%Hero: Claude Code 2.1.305; weapon (model): claude-sonnet-5-5; charge (effort): medium; arena: sealed; ambient cast (the agent chose).
macOS 27.0.1, arm64. Curator.
0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot)
Try this loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell expo-router --quest ranger-recipe-router --hero claude-code --weapon 'claude-sonnet-5-5' --charge medium --cast ambient --control

Recorded with quest v5 and spell commits expo-router@55ec65cd16499f20f14fb10fe99a2e62901b00a1. How to run it

Ranger: Pantry navigation migrationQuest v5100%3 of 3Unarmed: 100% (3 of 3)44%+0 ppvs Unarmed3 of 3100%Unarmed: 3 of 3138sUnarmed: 35s1,236 Unarmed: 1,034Not reportedUnarmed: Not reported+127 / -118Unarmed: +200 / -198100%Hero: OMP 18.8.3; weapon (model): anthropic/claude-sonnet-5-5; charge (effort): medium; arena: warded; invoked cast (the prompt named the skill).
macOS 27.0.1, arm64. Curator.
0 mishaps excluded. 2026-10-21 to 2026-10-21.Scrying (screenshot)
Try this loadout
node "<spell-report-skill-directory>/scripts/spell-report.mjs" trial --spell expo-router --quest ranger-recipe-router --hero omp --weapon 'anthropic/claude-sonnet-5-5' --charge medium --cast invoked --control

Recorded with quest v5 and spell commits expo-router@55ec65cd16499f20f14fb10fe99a2e62901b00a1. How to run it

Scrying (screenshots of runs)

The latest run of each setup. Local paths, names and ids are blurred; credentials are removed.

Scrying (screenshot) of a cleared run of Ranger: orders screen performance pass with Expo Router, Claude CodeScrying (screenshot) of a cleared run of Ranger: Pantry navigation migration with Expo Router, Claude CodeScrying (screenshot) of a cleared run of Ranger: Pantry navigation migration with Expo Router, Claude CodeScrying (screenshot) of a cleared run of Ranger: Pantry navigation migration with Expo Router, Claude Code

Also equipped in trial loadouts: Combo: Expo Overview + Expo Router.

Explore the quests, full results and trial method

This spell has no recorded sessions in the curator's logs. Tried it? Send a spell report.