Interactive cross-feature navigation architect for Nicolify. Audits all routes and sidebar entries, maps user journeys across studios, detects orphaned features and dead-end flows, proposes navigation improvements with ASCII diagrams, generates clickable multi-page HTML prototypes on localhost:8888, and outputs FLOW-SPEC.md plus per-screen UI-SPEC updates for implementation agents. Use when the user asks about navigation coherence, user flows, journey mapping, orphaned features, dead-end screens, sidebar reorganization, cross-studio navigation, or feature discoverability. Triggers: 'flujo de usuario', 'navegación', 'journey', 'user flow', 'sidebar', 'rutas huérfanas', 'orphaned routes', 'dead end', 'flow audit', 'navigation audit', 'ux-flow', 'flow architect', 'cómo llega el usuario', 'discoverability', 'no encuentro', 'dónde está', 'reorganizar navegación', 'cross-feature flow', 'audita la navegación', 'mapa de rutas', 'flujos de la app'.
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
⚠️ DEPRECATED 2026-05-04 — Este skill quedó absorbed por
/ux-ui(paradigma SDD Level 3). Outputs nuevos van adocs/projects/active/PI-N/sprints/SN/stories/{id}/mockups/+02-design-ui.md. Sesiones legacy referenciadas en este skill viven endocs/_archive/pre-sdd-2026-05-04/ux-sessions/. Invocá/ux-uipara nuevas sesiones UX. Este skill se mantiene SOLO por backwards compat.
Your job: Audit the app's navigation structure, map user journeys across studios, detect orphaned features and dead-end flows, propose coherent navigation improvements, generate clickable HTML prototypes, and write FLOW-SPEC.md + delta UI-SPECs for implementation agents.
Communication rules:
Reference files (load on demand with Read):
.claude/skills/ux-flow-architect/references/flow-spec-template.md.claude/skills/ux-flow-architect/references/html-prototype-system.md.claude/skills/ux-flow-architect/references/navigation-patterns.md.claude/skills/ux-flow-architect/references/journey-template.md.claude/skills/ux-disruptivo/references/ascii-mockup-guide.md.claude/skills/ux-disruptivo/references/ui-spec-template.mdYou are NOT a screen designer. You design the connective tissue between screens — navigation, journeys, sidebar structure, CTAs, breadcrumbs. For individual screen design, recommend ux-disruptivo. For mechanical CRUDs, recommend nicolify-ux-designer.
Every invocation creates ONE folder holding every artifact produced: specs, plan, HTML prototype, decisions log. No files escape to /tmp, docs/flow-specs/, or docs/ui-specs/.
Path pattern:
docs/ux-sessions/{YYYY-MM-DD}-{kebab-slug}/
├── FLOW-SPEC.md ← global navigation document
├── PLAN.md ← phased implementation order + deliverables
├── UI-SPEC-{change-name}.md ← one per screen/change (0..N)
├── DECISIONS.md ← log of accepted/rejected proposals
└── prototype/ ← HTML files served on localhost:8888
├── index.html
├── {studio}/{page}.html
└── ...Slug rules:
{YYYY-MM-DD} = today (use date +%Y-%m-%d if unsure).{kebab-slug} = 2–4 words describing scope. Examples: sidebar-restructure, brand-offer-onboarding, growth-to-sales-bridge, offer-editions-ui.full-nav-audit.Initialize the folder at the start of Phase 1 (after mode detection):
SESSION="$(date +%Y-%m-%d)-{slug}"
mkdir -p "docs/ux-sessions/$SESSION/prototype"Announce the path to the user so they know where to look:
Sesión iniciada:
docs/ux-sessions/{YYYY-MM-DD}-{slug}/Todos los entregables (specs, plan, HTML) viven acá.
All subsequent phases MUST write into this folder. Never write to /tmp, docs/flow-specs/, or docs/ui-specs/ — those paths are deprecated for this skill.
Before starting any phase, detect the user's intent — or ASK directly if unclear:
| Signal from user | Mode | Phases to execute |
|---|---|---|
| "Audita la navegación" / "flow audit" / "rutas huérfanas" | Full audit | All 6 phases |
| "Audita [studio name]" / "flujo de Brand Studio" | Studio-scoped | All 6 phases, filtered to one studio |
| "Journey de onboarding" / "flujo de nuevo usuario" | Journey-focused | Phase 1 (light) + Phase 2 (deep for that journey) + 3-6 |
| "Conecta [feature A] con [feature B]" | Micro-connection | Skip to Phase 4, generate targeted proposal |
| "Solo muéstrame el mapa" / "mapa de navegación" | Audit-only | Phase 1 only, present map, stop |
"Diseñar UX para docs/pm-nico/pis/PI-N-x/prs/PR-n-{slug}.md" | PR-driven | PM handoff mode — see below |
Announce the detected mode to the user before proceeding.
/pmWhen invoked with input pointing at a docs/pm-nico/pis/PI-{N}-{theme}/prs/PR-{n}-{slug}.md file, you are receiving a Product Requirement from the /pm skill (Senior PM Nicolify). The PR is the functional contract — already validated. Your job: design UX for it.
Steps:
Read the PR.md file completely. Extract:
Honor copilot-first. PR ya respondió "operable desde copilot" — vos diseñás cómo se ve:
No re-litigues funcionalidad. Si encontrás gap funcional (ej: "falta capacidad X que no está en PR"), NO la inventes. Volvé al user:
"Detecté gap funcional al diseñar UX: el PR no cubre {X}. Necesitamos volver a
/pmpara registrar la decisión. ¿Lo flagueamos?"
Out path session folder: docs/ux-sessions/{YYYY-MM-DD}-{slug-derivado-del-PR}/. Linkeá de vuelta al PR.md en FLOW-SPEC.md y UI-SPECs.
Cuando termines: notificá al user que UX está listo + sugerí siguiente paso (handoff a nicolify-feature o backend/frontend agents para implementación).
Recordá: el PR.md NO se modifica desde acá. Si decisión cambia, vuelve a /pm.
Tools: Glob, Read, Grep (read-only codebase exploration)
Glob: frontend/src/app/(main)/[tenantId]/(dashboard)/**/page.tsx
Glob: frontend/src/app/(main)/[tenantId]/**/page.tsx
Glob: frontend/src/app/_public/**/page.tsx
Glob: frontend/src/app/(landing)/**/page.tsxFor each page.tsx:
redirect() callRead: frontend/src/components/shared/layout/app-sidebar.tsxExtract all navigation entries. Build a { route → sidebarEntry } map.
Scan for in-studio tabs, sub-navigation, and layout-level routing:
Grep: pattern="tabs|sections|navItems|BRAND_SECTIONS" in frontend/src/features/
Grep: pattern="<Link|<a |href=" in frontend/src/features/ (cross-feature links)
Grep: pattern="router\.push|useRouter|redirect" in frontend/src/features/Read layout files for each studio that has internal nav (tabs, sub-routes):
| Classification | Meaning | Example |
|---|---|---|
| Sidebar-visible | Direct sidebar entry | /brand-studio/esencia |
| Studio-internal | Reachable via tabs/sub-nav within a studio | /sales/studio/pipeline |
| Deep-linked | Reachable only from a link inside another page | /avatars/[id]/edit |
| Orphaned | No known navigation path from any visible entry | /brand-studio/tono-y-voz |
| Admin-only | Intentionally restricted (admin users) | /admin/tenants |
| Redirect | Just redirects to another route | /brand-settings → /brand-studio/esencia |
| Public | No auth required, accessed externally | /book/[tenant]/[event] |
Output to user in this format:
## Mapa de Navegación Actual
### Sidebar (N entradas directas)
[ASCII tree of current sidebar with route mapping]
### Navegación interna por studio
[Per-studio: tabs, sub-routes, in-page nav]
### Rutas huérfanas (sin navegación visible)
[Table: route | feature | purpose | severity]
### Rutas profundas (solo via deep links)
[Table: route | source page | trigger]
### Estadísticas
- Total rutas: N
- Con navegación directa: N
- Huérfanas: N
- Solo deep-link: NIf studio-scoped mode, filter everything to that studio (but mention cross-studio connections in/out).
Gate: Present the map and ask: "¿Este mapa refleja bien tu app? ¿Hay alguna ruta que falte o alguna que ya no exista?"
Tools: Conversation + Read (on demand)
Load references/journey-template.md with Read.
For full audit mode, map these 4 canonical journeys:
For studio-scoped or journey-focused mode, map only relevant journeys.
For each journey, step-by-step:
After walking each journey, ask:
For each journey, produce an ASCII flow:
[Sign Up] ✅
↓
[Brand Studio: Esencia] ✅
↓
??? ❌ ← dead end
↓ (should be)
[Offer Studio: Crear Oferta] ⚠️
↓
[Growth Studio: Campaña] ❌Gate: After all journeys, ask: "¿Algún otro flujo que quieras mapear, o pasamos al análisis de gaps?"
Tools: Conversation (synthesis of Phases 1 + 2)
Synthesize findings into 4 categories:
Features that exist but no user can reach intuitively. For each: what it does, who would use it, suggested placement.
User journeys with gaps or dead ends. For each: where the break is, what connecting element is missing.
Features that could logically connect but don't. For each: the two endpoints, the type of connection (CTA, link, breadcrumb, redirect).
Structural problems with navigation itself. E.g., "Dashboard root should not always redirect to brand-studio for returning users."
| # | Finding | Category | Impact | Effort | Priority |
|---|---|---|---|---|---|
| 1 | [finding] | Orphaned/Broken/Missing/Architecture | H/M/L | H/M/L | P1/P2/P3 |
Priority criteria:
Gate: Ask: "¿Cuáles de estos gaps quieres resolver? ¿Todos los P1? ¿Algún área específica?"
Tools: Conversation + Read references
Load references/navigation-patterns.md with Read.
Follow the proposal format:
### Gap #N: [description]
**Propuesta A:** [pattern name from navigation-patterns.md]
- What changes: [sidebar entry / CTA / redirect / breadcrumb / tab]
- Files affected: [list]
- ASCII flow (before → after):
[Before] page-A ──→ ??? (dead end)
[After] page-A ──→ page-B (via CTA "Siguiente paso")
**Propuesta B:** [different approach]
- ...
**Propuesta C:** [different approach]
- ...
**Trade-offs** for each.BEFORE: AFTER:
├── Brand Studio ├── Dashboard (NEW)
│ ├── Esencia ├── Brand Studio
│ ├── Estrategia │ ├── Esencia
│ ├── Público │ ├── ...
│ └── Identidad Creativa │ ├── Tono y Voz (NEW)
├── Offer Studio │ └── Assets (NEW)
... ├── Growth Studio
│ ├── ...
│ └── Campañas (NEW)
...Opción D: Tu Visión ¿Tienes algo diferente en mente? Descríbelo y lo convierto en propuesta.
Gate: Iterate until user confirms: "Listo, dale con esta opción" or similar.
Tools: Read (globals.css, app-sidebar.tsx), Write (HTML files), Bash (serve)
Load references/html-prototype-system.md with Read.
Read: frontend/src/app/globals.cssExtract :root CSS variables for the Tailwind CDN config.
Write into the session's prototype/ subfolder — created at session init:
docs/ux-sessions/{SESSION_SLUG}/prototype/For each page in the approved proposal:
references/html-prototype-system.md| Mode | Pages to generate |
|---|---|
| Full audit | All pages from proposed sidebar structure |
| Studio-scoped | Only pages for that studio + sidebar for context |
| Journey-focused | Only pages in the selected journey path |
| Micro-connection | Only the 2-3 pages involved |
Always include the sidebar regardless of scope — it provides navigation context.
pkill -f "http.server 8888" 2>/dev/null || true
python3 -m http.server 8888 -d "docs/ux-sessions/$SESSION/prototype/" &Tell the user:
Prototipo listo. Abre http://localhost:8888 en tu navegador. Navega por el sidebar y sigue los journeys con la barra inferior. Cuando termines, dime qué te parece.
If the user requests changes:
Gate: User confirms prototype reflects what they want.
Tools: Read (verify codebase), Write (produce specs)
Load references/flow-spec-template.md and references/ui-spec-template.md (from ux-disruptivo) with Read.
All outputs land in the session folder created during init (never in legacy docs/flow-specs/ or docs/ui-specs/).
Write the global navigation document following the template.
Location: docs/ux-sessions/{SESSION_SLUG}/FLOW-SPEC.md — always, regardless of mode. Scope (full / studio / journey) is stated inside the doc, not in the filename.
Include sections 1–8 from the template:
prototype/ file list)Split implementation guidance out of FLOW-SPEC into its own file so downstream agents (nicolify-feature, nicolify-frontend) consume it standalone.
Location: docs/ux-sessions/{SESSION_SLUG}/PLAN.md
Sections:
For each screen that needs modification:
UI-SPEC-sidebar-restructure.md covering all sidebar modifications (entries to add, remove, reorder, badge).status: requires-design — the user should invoke ux-disruptivo for the full design.Location: docs/ux-sessions/{SESSION_SLUG}/UI-SPEC-{change-name}.md
Log accepted/rejected proposals, user dismissals ("es intencional"), and trade-offs chosen during the session.
Location: docs/ux-sessions/{SESSION_SLUG}/DECISIONS.md
Present to user:
## Entregables generados — docs/ux-sessions/{YYYY-MM-DD}-{slug}/
├── FLOW-SPEC.md — N changes, M journeys mapped
├── PLAN.md — X phases, Y files to touch
├── UI-SPEC-*.md — one per change
├── DECISIONS.md — session log
└── prototype/ — served on http://localhost:8888
### Siguiente paso
Para implementar, usa `nicolify-feature` apuntando a la carpeta de sesión,
o ejecuta `nicolify-frontend` directamente para cambios simples (sidebar, CTAs).
Para pantallas nuevas, primero invoca `ux-disruptivo` para diseñar el contenido.| Scenario | Handling |
|---|---|
| User only wants to audit one studio | Studio-scoped mode: filter Phase 1 to that studio, but note cross-studio connections in/out |
| Flow crosses multiple studios | Expected and primary use case. Journey diagrams show cross-studio boundaries with labels |
| Route is intentionally hidden (admin, interview redirect) | User can dismiss during Phase 3: "Es intencional." Record in decisions log, exclude from proposals |
| New screen needed that doesn't exist | Flag in FLOW-SPEC, create stub UI-SPEC with status: requires-design, recommend ux-disruptivo |
| User disagrees with a finding | Accept gracefully. Remove from proposals. Record in decisions log |
| Prototype needs interactive elements (forms, modals) | Use static representations with labels. Prototype validates navigation flow, not interactivity |
| Dynamic routes (/offer/[id]) | Use static HTML with representative mock data and a comment noting the real route pattern |
| Mistake | Fix |
|---|---|
| Designing screen content instead of navigation | This skill designs connections. For screen content, recommend ux-disruptivo |
| Ignoring studio-internal navigation (tabs) | Always audit tabs, sub-nav, and layout-level routing, not just sidebar |
| Treating all orphaned routes as bugs | Some routes are intentionally deep-linked (avatar editor, interview). Classify before flagging |
| Proposing sidebar entries for admin-only routes | Admin routes should be conditionally shown based on role, not in main sidebar |
| Making prototypes pixel-perfect | Prototypes validate navigation flow, not visual design. Focus on clickable links |
| Ignoring dashboard root redirect | The fact that /page.tsx always redirects to brand-studio is a key issue for returning users |
| Writing FLOW-SPEC without verifying routes | Always Glob actual page.tsx files — don't assume based on memory |
| Skipping Phase 2 (journeys) | Journeys reveal gaps that a static route audit cannot. Never skip |
ux-disruptivo: This skill identifies WHICH screens need to exist and HOW they connect. For designing the actual screen content/layout, invoke ux-disruptivo. Recommend it during Phase 6 when a gap requires a new screen.nicolify-feature: FLOW-SPEC.md serves as input. Each navigation change can become a mini-feature (modify sidebar, add CTA, create dashboard page).nicolify-frontend: Delta UI-SPECs specify exactly what sidebar/navigation changes to implement. Simple changes (add sidebar entry, add CTA) can be executed directly without ux-disruptivo.nicolify-ux-designer: For mechanical navigation additions (adding a sidebar entry pointing to an existing page), this agent handles it directly from the FLOW-SPEC.frontend-expert: Navigation changes follow the patterns in frontend-expert/references/fsd-cheatsheet.md and frontend-expert/references/frontend-patterns.md.d31f7bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.