Flow Navigation logo

Flow Navigation

Community
jpoindexter
flow-navigation

Use when designing or reviewing an app's navigation architecture — choosing between tab bar, sidebar, top nav, or command palette; deciding menu depth vs breadth; or when users report getting lost, can't find features, or the back button behaves unexpectedly. Also applies when adding breadcrumbs, deep links, or restructuring an information hierarchy.

Overview

Publisherjpoindexter
Repositoryux-flow-skills
Skill nameflow-navigation
Stars
5
Forks
0
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by jpoindexter on GitHub. Read the source before you install it.

Installation

Install the Flow Navigation AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/jpoindexter/ux-flow-skills/tree/main/skills/flow-navigation
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/jpoindexter/ux-flow-skills.git /tmp/ux-flow-skills
mkdir -p .claude/skills
cp -r /tmp/ux-flow-skills/skills/flow-navigation .claude/skills/flow-navigation
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Flow Navigation in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Flow Navigation on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Flow Navigation is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Navigation Architecture

Overview

Navigation is a promise about where things live. Pick the pattern that matches platform + app type, keep top-level destinations few and stable, and optimize for scent of information (each step visibly closer to the goal) — not raw click count.

When to Use

  • Choosing the primary nav pattern for a new app or a major new section
  • Restructuring nav because features have outgrown the current menu
  • Users report "I couldn't find X," dead-end back behavior, or broken shared links
  • Adding secondary nav: breadcrumbs, in-page tabs, segmented views, command palette
  • Deciding whether a new feature gets a top-level destination or nests under one
  • Auditing an app where every team added its own entry point
  • NOT for page-internal layout and panel arrangement (see flow-app-shell)
  • NOT for marketing-page section anchors — that's page design, not navigation architecture

The Proven Flow

  1. Mobile app → bottom tab bar, 3–5 items.
    • Fixed and always visible; each tab is a top-level mode with independent state — switching tabs and returning preserves scroll position and navigation stack.
    • iOS HIG and Material Design both cap at 5. Exceeding 5 means the IA is wrong, not that you need a "More" tab — buried tabs are effectively deleted features.
    • Center tab may be a primary-action button (Instagram's create) only when creation is the app's core loop.
    • Tapping the active tab pops the stack to the tab root; tapping again (already at root) scrolls to top (UIKit default; Instagram/X convention).
    • Hide the tab bar only inside deep focused tasks (full-screen media, checkout); restore it on return.
    • Proven by Instagram, Spotify, iOS App Store, YouTube.
  2. Desktop productivity app → left sidebar.
    • Persistent vertical list of workspaces/projects/views, 240–280px, collapsible to an icon rail.
    • Sidebar holds nouns (places to go); the header holds verbs (actions to take). Mixing them destroys scanability.
    • Scales to arbitrary item counts (channels, projects, pages) — the reason chat and PM tools all converge here.
    • Unread/status badges live on sidebar items, right-aligned, count capped at "99+".
    • Proven by Slack (workspace rail + channel sidebar), Linear (teams → views), Notion (page tree), Discord.
  3. Marketing / content / docs site → horizontal top nav.
    • 4–7 items; logo left and links home; primary CTA rightmost, visually distinct.
    • Dropdowns one level deep only. Mega-menu earns its place only at ≥3 categories × ≥4 items each (Amazon, Stripe).
    • Sticky-on-scroll is fine; shrink the bar, don't hide it — disappearing nav forces a scroll-up tax.
    • Docs add a persistent left tree + right "On this page" rail (Stripe, MDN).
  4. Deep hierarchy → drill-down (hierarchical) with breadcrumbs.
    • Each screen shows one level; back goes up exactly one level. Used by Settings apps, file browsers, e-commerce categories.
    • Breadcrumbs on web from depth ≥3: Home / Category / Subcategory / Current — every ancestor clickable, current item plain text.
    • Never rely on the browser back button as the only way up — a deep-linked visitor has no history.
    • Proven by Amazon category tree, macOS Finder, GitHub file browser.
  5. Hub-and-spoke → task-based apps with independent flows.
    • A home screen fans out to self-contained tasks that return home on completion (banking apps, iOS Settings root, airline check-in).
    • Spokes never cross-link to each other — users return to the hub between tasks, keeping the mental map trivially simple.
  6. Flat structure → small apps (≤ ~8 screens).
    • Everything one tap from the tab bar or nav. Don't add hierarchy you don't need; hierarchy is a navigation cost, not a feature.
  7. Command palette (⌘K) → power-user accelerator, never primary nav.
    • Add when the app has >20 destinations/actions and a keyboard-heavy audience.
    • Fuzzy-matches destinations, actions, and recent items; shows keyboard-shortcut hints inline next to actions.
    • Everything reachable in the palette must also be reachable by pointer — the palette duplicates nav, never replaces it.
    • Proven by Linear, Slack, Superhuman, VS Code, GitHub, Raycast.

Secondary navigation (within a destination)

  • In-page tabs for peer views of one object (GitHub repo: Code / Issues / PRs); underline style, active tab marked.
  • Segmented control for 2–5 mutually exclusive renderings of the same data (list / board / timeline — Linear views).
  • Anchor "On this page" jump nav for long documents — right rail on desktop, collapsed dropdown on mobile, highlighting the section in view.
  • Contextual back ("← Back to results") only when the route can't express the parent; prefer real breadcrumbs.
  • Nesting limit: primary nav + one secondary layer + one tab layer. Needing a fourth visible layer means the object model should be split.

Depth vs breadth

  • The "3-click rule" is a myth. Users tolerate 5+ clicks when every click has strong scent (visible progress toward the goal); they abandon at the first low-scent click, not the third.
  • Prefer broad-and-shallow: 8 clear categories beats 3 vague ones nested 3 deep.
  • Vague labels ("Solutions," "Resources," "Tools") kill scent faster than depth ever does.
  • Max practical depth: 3 levels on mobile, 4 on web (with breadcrumbs as the safety rail).
  • Test with first-click: when a user's first click is wrong, overall task success collapses — fix the top level before anything deeper.

Back behavior (get this right or nothing else matters)

  • Web: browser Back must always work and land where the user expects. Every navigational state change updates the URL (pushState).
  • Overlays that feel like pages (photo lightbox, mobile filter sheet, full-screen modal) get a history entry so Back closes them instead of leaving the page.
  • Transient UI (dropdown, tooltip, small dialog) gets NO history entry — Back should never just close a menu.
  • Android: system back = up/close within the app; back from a non-start tab returns to the start tab, then exits (Material predictive-back).
  • iOS: each tab keeps its own navigation stack; edge-swipe back must work everywhere push navigation is used — don't block it with custom gestures.
  • Never trap users: after login or checkout, redirect (replaceState) so Back doesn't resubmit a form or bounce to a dead auth page.
  • A custom in-app back button must agree with system/browser back or explicitly name its different target ("Back to results").

Deep linking

  • Every screen a user can reach deserves a stable URL/route — including filtered views and selected detail panes (/issues?assignee=me, /inbox/1234).
  • A deep link into the middle of a hierarchy must render working up-navigation, synthesized from the route — never from session history the visitor doesn't have.
  • Mobile: register universal links (iOS) / app links (Android) so shared URLs open the app at the right screen, with a web fallback for non-installers.
  • Unauthenticated hit on a deep link: send to login, then return to the original destination — never dump the user at home.

Layout & Structure

  • Tab bar (mobile): 3–5 items; 49pt tall + safe area (iOS; iOS 26+: floating Liquid Glass bar, height adapts — 49pt is the docked-bar baseline), 80dp (Material 3); active state via color + filled icon variant.
  • Tab items are icon + short label, always — icon-only fails recognition beyond ~5 universal glyphs (home, search, settings).
  • Touch targets ≥44×44pt (iOS) / 48×48dp (Android) for every nav element.
  • Sidebar (desktop): 240–280px expanded, 56–72px collapsed to icons; active item gets a filled background pill, not just a text-color change.
  • Sidebar internal order: search/quick-switcher → pinned/favorites → primary destinations → scrollable spaces/projects → settings + help pinned at bottom.
  • Drawer (mobile/tablet): 280–320px (0–40px wider than the 240–280px docked sidebar it mirrors) over a scrim; hamburger + edge-swipe to open; scrim-tap, swipe, or Esc to close; contents mirror the desktop sidebar exactly.
  • Top nav: 56–64px tall; logo left → primary items → search → notifications → avatar far right. Max 7 top-level items before consolidating.
  • Mega-menu: full-width panel; one column per category with a heading that is itself a link + 4–8 child links; opens on click (never hover-only); closes on Esc and outside click.
  • Breadcrumbs: directly under the header, above the page title; / or › separators; truncate middle segments on narrow screens (Home / … / Current).
  • In-page tabs: never mix in-page tabs and a second sidebar level for the same choice — one mechanism per decision.
  • Command palette: centered overlay, 560–640px wide; opens on ⌘K/Ctrl+K; input on top; grouped results (Recent / Actions / Navigation); ↑↓ + Enter, Esc closes; shortcut hints right-aligned per row.
  • Quick switcher: productivity apps also bind ⌘P/⌘T for "jump to item" — same overlay, pre-scoped to documents/issues (VS Code, Slack).
  • Mobile headers: title centered (iOS) or left-aligned (Android); back chevron top-left; max 2 action icons top-right.
  • Nav labels: 1–2 words; nouns for places, verbs for actions; words users would say aloud. A label that needs a tooltip needs rewriting.
  • Active-state marking is mandatory at every nav level — users answer "where am I?" from the chrome, not from memory.
  • Badge counts only for actionable, user-specific items (unread, pending review); cap at "99+"; never marketing badges ("New!") on more than one item at a time.
  • Persist nav state per user: sidebar collapsed/expanded, last-active tab, expanded tree nodes.
  • Keyboard: web nav tabbable in visual order with visible focus rings; skip-to-content link as the first tab stop.
  • Sidebar section headers: small-caps labels, optionally collapsible; required past ~10 items — a wall of ungrouped items kills scanning.
  • Long nav lists (channels, projects): inline filter-as-you-type at the top of the list, never pagination inside nav.
  • Wayfinding redundancy: the page title must match the nav label that got the user there — mismatched wording reads as a wrong turn.

Quick Reference

SituationPattern
Mobile app, 3–5 core modesBottom tab bar
Mobile app, >5 destinationsFix the IA to ≤5; overflow lives inside a tab, not a "More" tab
Desktop productivity / SaaS toolLeft sidebar (collapsible to icon rail)
Marketing, docs, content siteTop nav, ≤7 items
E-commerce / large catalogTop nav + mega-menu + breadcrumbs
Task-based app (banking, kiosk)Hub-and-spoke
Small app, ≤8 screensFlat
Power users, >20 destinations⌘K command palette as accelerator
Jump-to-item for power users⌘P/⌘T quick switcher
User lands mid-hierarchy via linkBreadcrumbs synthesized from route
Peer views of one objectIn-page tabs
2–5 renderings of the same dataSegmented control (list/board/timeline)
Long document or settings page"On this page" anchor nav
Feature used by <5% of usersNest it; no top-level slot
Deep focused task (checkout, player)Hide nav chrome; restore on exit
"Where does this new feature go?"Under the existing noun it belongs to — new top-level slots are a last resort

Anti-Patterns

Anti-patternWhy it breaksFix
Hamburger menu as primary mobile navHides destinations; engagement on hidden items drops sharplyBottom tab bar for top 3–5; hamburger only for rare overflow
>5 tabs or a "More" tabBuried tabs are effectively deleted featuresMerge or re-rank destinations; overflow inside a tab
Icon-only nav without labelsUsers can't decode icons beyond home/search/settingsAlways pair icon + label in primary nav
Nav items that change per pageUsers lose the map; every page feels like a new appIdentical top-level nav everywhere; mark active state
SPA navigation without URL updatesBack breaks, links unshareable, refresh loses stateRoute every navigational state; pushState on view change
Modal-as-page without a history entryBack skips past it or closes the whole flowHistory entry for full-screen overlays only
Back closing a dropdownBack becomes unpredictable; users stop trusting itNo history entries for transient UI
Hover-only dropdown menusFail on touch; flicker on diagonal mouse pathsOpen on click/tap; close on Esc + outside click
Vague labels ("Solutions", "More", "Stuff")Zero information scent; users click randomlyConcrete nouns users would say aloud
Command palette as the only path to a featureExcludes pointer/touch users; undiscoverablePalette duplicates nav, never replaces it
Current page as a breadcrumb linkSelf-link confuses and wastes a clickCurrent crumb is plain text
Cross-linking between hub spokesUsers can't rebuild their location modelReturn to hub between tasks
Badge counts on 3+ nav items at onceAlarm fatigue; users ignore all badgesBadge only actionable, user-specific counts
Custom back button disagreeing with historyTwo back affordances point different waysMirror history, or name the target ("Back to results")
Login redirect dropping the deep linkUser re-navigates manually; shared links feel brokenPreserve destination through auth, return after login
Four visible layers of nav chromeChrome outweighs content; layers indistinguishableCap at primary + secondary + tabs; split the object model
Nav label ≠ page titleUsers think they mis-clicked and back outSame words in the nav item and the page heading
Ungrouped sidebar past ~10 itemsWall of items; scanning collapsesLabeled section headers + inline filter

Frequently asked questions

What does the Flow Navigation AI skill do?

Use when designing or reviewing an app's navigation architecture — choosing between tab bar, sidebar, top nav, or command palette; deciding menu depth vs breadth; or when users report getting lost, can't find features, or the back button behaves unexpectedly. Also applies when adding breadcrumbs, deep links, or restructuring an information hierarchy.

Why use Flow Navigation on TypingMind?

Because you install it once and use it with any model. Flow Navigation is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Flow Navigation in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/jpoindexter/ux-flow-skills/tree/main/skills/flow-navigation. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Flow Navigation?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Flow Navigation?

As many as you like. As long as a model supports skills, you can use Flow Navigation with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Flow Navigation AI skill free?

Yes. It is published on GitHub by jpoindexter under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇