Skip to content
Development
Skill

/route-docs

Change where project documentation is stored — local files, Obsidian vault, Notion workspace, or a per-type split — and regenerate the doc scaffold to match. TRIGGER when the user says "change doc routing", "switch docs to Obsidian", "move docs to Notion", "route docs locally",

From plugin
nyann
741 skills41 commands3 hooks

Claude Code

$ npx -y skills add thettwe/nyann --skill route-docs --agent claude-code

SKILL.md

route-docs.SKILL.md
name: route-docs
description: >
  Change where project documentation is stored — local files, Obsidian
  vault, Notion workspace, or a per-type split — and regenerate the doc
  scaffold to match. TRIGGER when the user says "change doc routing",
  "switch docs to Obsidian", "move docs to Notion", "route docs locally",
  "change documentation storage", "reroute docs", "switch from local to
  Obsidian", "set up doc routing", "change where docs are stored",
  "/nyann:route-docs".
  Do NOT trigger on "bootstrap this project" — bootstrap runs doc routing
  as one step of the full pipeline. Do NOT trigger on "generate CLAUDE.md"
  — that's `gen-claudemd`. Do NOT trigger on "optimize CLAUDE.md" —
  that's `optimize-claudemd`.

route-docs

Standalone doc-routing and scaffold regeneration. Composes `bin/route-docs.sh` (produces a DocumentationPlan) and `bin/scaffold-docs.sh` (materializes the local-target portion) so the user can change doc storage after initial bootstrap without re-running the full pipeline.

1. Resolve profile and current state

1. Load the active profile via `bin/load-profile.sh <name>`. 2. Run `bin/detect-stack.sh --path .` for a StackDescriptor (optional; used by scaffold-docs for stack-aware architecture templates). 3. Check which doc targets already exist (`docs/`, `memory/`, `docs/decisions/`, etc.) so the user sees what will change.

2. Determine the routing spec

The user's intent maps to a `--routing` value:

| User says | Routing spec | |---|---| | "everything local" | `all:local` (default) | | "docs in Obsidian" | `all:obsidian` | | "docs in Notion" | `all:notion` | | "PRDs in Notion, ADRs in Obsidian, rest local" | `prd:notion,adrs:obsidian,research:local,architecture:local` |

If the user's intent is ambiguous, **you MUST call the `AskUserQuestion` tool** (not plain text):

{
  "questions": [
    {
      "question": "Where should documentation be stored?",
      "header": "Routing",
      "multiSelect": false,
      "options": [
        { "label": "Local (Recommended)", "description": "docs/ directory in the repo" },
        { "label": "Obsidian", "description": "Route to an Obsidian vault via MCP" },
        { "label": "Notion", "description": "Route to a Notion workspace via MCP" },
        { "label": "Custom split", "description": "Different backend per doc type" }
      ]
    }
  ]
}

`memory` is always local regardless of routing.

For any non-local routing, first run `bin/detect-mcp-docs.sh` to discover available MCP connectors. The result is an MCP doc-targets JSON; pass it to route-docs via `--mcp-targets <path>`. Without this, route-docs will reject non-local backends because it validates each chosen backend against `--mcp-targets.available[]`.

For MCP-routed targets, also collect the required parameters:

  • **Obsidian**: `--obsidian-vault <name>` and optionally

`--obsidian-folder <path>`.

  • **Notion**: `--notion-parent <id-or-url>`.

3. Preview the plan

Run route-docs in preview mode:

bin/route-docs.sh \
  --profile <profile-path> \
  [--routing <spec>] \
  [--mcp-targets <mcp-doc-targets.json>] \
  [--obsidian-vault <name>] [--obsidian-folder <path>] \
  [--notion-parent <id>] \
  [--project-name <name>]

Output is a DocumentationPlan JSON (`schemas/documentation-plan.schema.json`). Show the user:

  • Each doc type (architecture, prd, adrs, research, memory, plus

any v1.6.0+ archetype-aware types — api_reference, runbook, deployment, glossary — when `use_archetype_scaffolds` is enabled on the profile) and its target (local path, obsidian, notion).

  • The computed `storage_strategy` (local / obsidian / notion / split).
  • Which local files will be created by the scaffolder.
  • Which MCP targets require skill-layer creation (Obsidian pages,

Notion databases).

3b. Doc conformance check (v1.9.0+)

Before scaffolding, check for existing docs at non-canonical paths:

bin/detect-doc-conformance.sh --target <cwd> --archetype <archetype>

If the output is non-empty, offer to reorganize before scaffolding (same flow as bootstrap step 4c — "reorganize all" / "let me pick" / "leave as-is"). Reorganization ensures content is preserved at the canonical paths rather than creating blank templates alongside existing docs at wrong paths.

4. Scaffold local targets

On confirmation:

bin/scaffold-docs.sh \
  --plan <plan-path> \
  [--stack <stack-path>] \
  [--project-name <name>] \
  --target <cwd>

The scaffolder is idempotent — existing files are never overwritten. Only gaps get filled.

For MCP-routed targets (type != local), scaffold-docs skips them with a note. The skill layer handles MCP page creation via the configured MCP server (Obsidian / Notion) as documented in `skills/bootstrap-project/references/mcp-routing.md`.

5. Regenerate CLAUDE.md

After the scaffold, the CLAUDE.md doc-map table may be stale. Suggest running `/nyann:gen-claudemd` to refresh the managed block with the new routing.

6. Report

  • Doc types and their new targets.
  • Files created by scaffold-docs.
  • MCP targets that need manual page creation (if any).
  • Storage strategy summary.

When to hand off

  • "Regenerate CLAUDE.md with the new routing" → `gen-claudemd` skill.
  • "Check repo health after rerouting" → `doctor` skill.
  • "Set up the full project from scratch" → `bootstrap-project` skill.
  • "Create Obsidian/Notion pages" → the MCP creation flow is documented

in `skills/bootstrap-project/references/mcp-routing.md`; follow those instructions for the non-local targets.

Read more
@thettwe
Ships withnyann

ငြမ်း is Burmese for scaffolding. Nyann is the Claude Code plugin that picks expert git defaults for your stack — branching, working hooks (Husky / pre-commit.com / lefthook), commits, releases, CI, docs — then keeps the repo on those rails through every PR

Stars on GitHub

Momentum

stars in total
7
Star history of thettwe/nyann on GitHub, a chart by star-history.com

Other skills on nyann.

add-team-source

add-team-source

Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER…

@thettwe@thettweInstall Skill
bootstrap-project

bootstrap-project

Bootstrap a fresh or existing repo with nyann. TRIGGER when the user says "set up this project", "initialize git workflow",…

@thettwe@thettweInstall Skill
check-prereqs

check-prereqs

Survey the machine and report which nyann features are usable right now. TRIGGER when the user says "is my machine ready for…

@thettwe@thettweInstall Skill
cleanup-branches

cleanup-branches

Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged…

@thettwe@thettweInstall Skill
commit

commit

Generate a Conventional Commits message from the staged diff and create the commit after user confirmation. TRIGGER when the user…

@thettwe@thettweInstall Skill
diagnose

diagnose

Bundle a redacted, support-grade snapshot of the current nyann state for inclusion in a bug report or support request. Combines…

@thettwe@thettweInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about route-docs.

Which coding agents can use route-docs?
route-docs installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.