Agent skill

Fern Navigation

by ai-dynamo in ai-dynamo/dynamo

Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants…

Apache-2.0Auto-check passedDevelopment

Install Fern Navigation

skills CLI
$ npx skills add ai-dynamo/dynamo --skill fern-navigation -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ai-dynamo/dynamo fern-navigation --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/fern-navigation .claude/skills/fern-navigation && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fern-navigation
GitHub stars
8.3k
Token cost
~2.2k tokens
SKILL.md length
918 words
Files
4 (incl. scripts, references)
Skills in repo
27
Repo updated
First seen
Licence
Apache-2.0

At a glance

Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants…

  • Works in 8 steps: Overview — the two config levels; index… → Sections, pages, folders — the… → Tabs & tab variants — tabs: +… → …
  • Changing the shape of a Fern docs site (adding a tab
  • SKILL.md covers "tabs" and "tabs" are two…, The mental model: how a URL is…, Choosing the right structural… and Hard constraints that bite…, plus 3 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Fern Navigation is an agent skill from ai-dynamo/dynamo. Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants, versions, products, changelogs, and site-level settings, plus per-page frontmatter. Use when designing or changing the shape of a Fern docs site (adding a tab, splitting into products, cutting a version, restructuring the sidebar, moving the changelog, tuning the navbar/layout/theme) or when a user asks "what options…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and reference files (for example `manifest.json`, `references/navigation-reference.md` and `scripts/refresh_navigation.py`).

It sits in Development, covering Changelog and release notes, Markdown and Static sites and blogs. The repository describes itself as: A Datacenter Scale Distributed Inference Serving Framework. The licence is Apache-2.0.

When your agent uses it

  • Changing the shape of a Fern docs site (adding a tab
  • Splitting into products
  • Cutting a version
  • Restructuring the sidebar

Example prompts

  • “what options does Fern give me for navigation”
  • “how do I configure X in docs.yml”
  • “/fern-navigation”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Overview — the two config levels; index of the structural cards.
  2. Sections, pages, folders — the navigation: tree, nesting, folder auto-discovery, slugs,
  3. Tabs & tab variants — tabs: + navigation:, all tab props, variants, placement/style.
  4. Versions — versions/*.yml, the switcher, availability, slugs, audiences, hiding, styling.
  5. Products — products/*.yml, internal vs external, the switcher, versioned products, landing
  6. Changelogs — changelog/ folder, tab vs section placement, entry files, tags, layouts, RSS.
  7. Frontmatter (page-level settings) — every per-page field: titles, slug, description, layout,
  8. Site-level settings — the full docs.yml surface: colors, logo, typography, layout, theme,

What it can do on your machine

Read from SKILL.md and the folder at commit f54f2a4. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • schema.buildwithfern.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Fern Navigation loads about 2.2k tokens when it runs, and up to ~8.1k if it reads all its reference files. Until then it costs about 185 tokens; SKILL.md has 918 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~185
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from ai-dynamo/dynamo at commit f54f2a4, republished under its Apache-2.0 licence (© ai-dynamo). 918 words, ~2,183 tokens.

Download SKILL.mdSave it as .claude/skills/fern-navigation/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
fern-navigation
description
Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in `docs.yml` (and product/version `.yml` files) using sections, pages, folders, tabs, tab variants, versions, products, changelogs, and site-level settings, plus per-page frontmatter. Use when designing or changing the shape of a Fern docs site (adding a tab, splitting into products, cutting a version, restructuring the sidebar, moving the changelog, tuning the navbar/layout/theme) or when a user asks "what options does Fern give me for navigation" or "how do I configure X in docs.yml". Complements fern-components (in-page MDX components) and dynamo-docs (this repo's page placement, style guide, and .md/.mdx rules).
license
Apache-2.0
metadata.author
NVIDIA
metadata.tags
fern, docs, navigation

Fern Navigation & Site Structure

<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: CC-BY-4.0
-->

Fern documentation is configured at two levels: site-level in docs.yml (and, for multi-product or multi-version sites, in per-product / per-version .yml files), and page-level in each .md / .mdx file's frontmatter. This skill catalogs the whole site-structure surface — what each building block does, when to reach for it, and the exact YAML — and points to references/navigation-reference.md for every field, default, and copy-paste example.

This skill is structure & configuration knowledge. In-page MDX components (<Card>, <Steps>, <Tabs> content tabs, <Accordion>, callouts…) belong to the fern-components skill. Page placement conventions, the style guide, SPDX headers, terminology, and this repo's .md-vs-.mdx rule belong to the dynamo-docs skill. Use all three together when authoring.

"tabs" and "tabs" are two different things (read this first)

Fern overloads several words. Keep the layers straight before touching config:

TermLayerWhere it livesOwned by
<Tabs> / <Tab>in-page content tabsinside a .mdx bodyfern-components
tabs: navigationsite-level nav tabsdocs.yml top-level + navigation:this skill
<Versions> componentin-page version-conditional contentinside a .mdx bodyfern-components
versions: configsite-wide version switcherdocs.yml + versions/*.ymlthis skill

The mental model: how a URL is built

Fern composes each page's URL by concatenating a slug from every level of the hierarchy it passes through, outermost first:

/<product>/<version>/<tab>/<section>/<folder>/<page>

Each level auto-generates a slug from its display name (or filename, for folders). Any level can slug: rename itself, skip-slug: true drop itself from the path, or a page's frontmatter slug: override the whole section/folder portion (product/version prefix is preserved). Understanding this composition is the key to predicting and controlling URLs — see the reference's Slugs section.

Choosing the right structural tool

Decide by how different two bodies of content are, from lightest to heaviest:

You want to…Reach forNotes
Order pages in the sidebarsections / pages / foldersThe default. Folders auto-discover files.
Auto-build nav from a directory treefolder:index.md(x) becomes the section overview; subdirs nest.
Group whole content areas (Guides vs API Ref)tabsTop-level tabs:, referenced in navigation:.
Same area, different audience/perspective (REST vs GraphQL, dev vs PM)tab variantsvariants: instead of layout:; supports RBAC.
Multiple releases of the same docsversionsDropdown switcher; versions/*.yml. Team plan.
Multiple distinct products under one siteproductsProduct switcher; products/*.yml. Team plan. Can nest versions.
A dated log of changeschangelogA changelog/ folder, surfaced as a tab or a section.
A root page before any productlanding-page:Independent of products/versions.
Link out (GitHub, dashboard) from navhref tab / external product / navbar linkNo internal content.

Rules of thumb:

  • Don't reach for products when a tab will do. Products are a heavyweight, Team/Enterprise feature that removes top-level navigation/tabs and splits config into files. Use them only for genuinely separate products, not for two sections of one product.
  • Variants vs tabs: variants = different lenses on the same area; tabs = different areas.
  • Versions and products compose — a product can be versioned, and versioned/unversioned products coexist. Standalone versioning (no products) is simpler; prefer it if you have one product.
Show full SKILL.md (425 more words)Show less

Hard constraints that bite (verify against these)

  • Products/versions eject top-level nav. When you add products: (or versions:), you MUST remove the top-level navigation: and tabs: from docs.yml — they move into the per-product / per-version files. fern check rejects a navigation block coexisting with products: and would otherwise render an empty site.
  • External products / href tabs cannot have navigation, tabs, layout, or variants.
  • A tab needs exactly one of layout, variants, or href — never href + content.
  • The default version (first in the list) can't be hidden.
  • changelog/ must be named exactly that, files live flat in its root (no subdirs), and file names must be dated (YYYY-MM-DD, MM-DD-YYYY, or MM-DD-YY). Section-level changelogs can't nest under an api entry.
  • Team plan gate: versions and products are Team/Enterprise features.

The eight source pages (what's in the reference)

references/navigation-reference.md mirrors the eight pages of Fern's navigation/ docs section, with full YAML and every field:

  1. Overview — the two config levels; index of the structural cards.
  2. Sections, pages, folders — the navigation: tree, nesting, folder auto-discovery, slugs, hiding, availability badges, collapsed state, sidebar icons, external links.
  3. Tabs & tab variants — tabs: + navigation:, all tab props, variants, placement/style.
  4. Versions — versions/*.yml, the switcher, availability, slugs, audiences, hiding, styling.
  5. Products — products/*.yml, internal vs external, the switcher, versioned products, landing page, audiences, conditional content, search scoping, selector CSS.
  6. Changelogs — changelog/ folder, tab vs section placement, entry files, tags, layouts, RSS.
  7. Frontmatter (page-level settings) — every per-page field: titles, slug, description, layout, TOC/nav/feedback toggles, availability, SEO/OpenGraph, changelog tags.
  8. Site-level settings — the full docs.yml surface: colors, logo, typography, layout, theme, navbar/footer links, instances, settings (search etc.), page actions, redirects, metadata, analytics, edit-this-page, Ask Fern, agents/llms.txt, check rules.

Workflow for a structure change in this repo

  1. Locate the config. Find this repo's docs.yml (and any products/ or versions/ files) — dynamo-docs owns where pages live; this skill owns their arrangement.
  2. Pick the lightest tool from the table above that expresses the change.
  3. Write the YAML from the reference, honoring the hard constraints.
  4. Mind the URL impact. Any slug/section/tab/version/product change alters URLs — add redirects: for moved pages, and remember check.rules.missing-redirects.
  5. Validate: run fern check (broken links, missing redirects, config coherence) before publish.

Keeping this skill current

Fern's config schema drifts. The source of truth is fern-api/docs (branch main), fern/products/docs/pages/navigation/*.mdx. manifest.json records each tracked page's git blob SHA as of the last sync. To check for drift and refresh:

bash
python3 scripts/refresh_navigation.py --check                 # what changed upstream?
python3 scripts/refresh_navigation.py --fetch --out /tmp/fern # download changed pages
# ...update references/navigation-reference.md + this SKILL.md from those...
python3 scripts/refresh_navigation.py --sync                  # record new SHAs as current

For anything load-bearing, verify field names against the live docs-yml schema or the current docs rather than trusting a summary — this surface changes.

© ai-dynamo, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (scripts, references) in .agents/skills/fern-navigation of ai-dynamo/dynamo.

  • SKILL.md
  • manifest.json
  • references/navigation-reference.md
  • scripts/refresh_navigation.py

Open the folder on GitHubat commit f54f2a4

Compare with similar skills

Fern Navigation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Fern Navigation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fern Navigation this skillai-dynamo/dynamo8.3k—~2.2kAutomated safety check: PassApache-2.0
Using Docs Kitlobehub/lobe-ui2.2k—~2.8kAutomated safety check: PassMIT
Changesetwithastro/astro63k—~1.1kAutomated safety check: PassCustom licence
Create Manifestmindfold-ai/Trellis15k—~2.5kAutomated safety check: PassAGPL-3.0
Releasehyhmrright/brooks-lint1.5k—~1.2kAutomated safety check: PassMIT
Changelog Writerjihe520/mindpocket350—~1.1kAutomated safety check: PassNone

Similar skills

  • Using Docs Kit

    lobehub/lobe-ui

    Set up and author a documentation site with @lobehub/docs-kit (the lobedocs CLI, React Router + Vite static docs used by ui.lobehub.com).

    2.2k GitHub stars~2.8k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Changeset

    withastro/astro

    Official

    Create a changeset for the Astro monorepo. An agent skill from withastro/astro.

    63k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Create Manifest

    mindfold-ai/Trellis

    Create a Trellis migration manifest and matching docs-site changelogs for a target release by analyzing commits since the previous release.

    15k GitHub stars~2.5k tokensUpdated 10 days ago
    DevelopmentAuto-check passed
  • Release

    hyhmrright/brooks-lint

    Cut a brooks-lint release: set the version in package.json, propagate it across all four plugin manifests and every version-bearing text file (README badges, docs site metadata), write the CHANGELOG…

    1.5k GitHub stars~1.2k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • Changelog Writer

    jihe520/mindpocket

    A skill your agent uses when the user wants to create or update a changelog, release notes, product updates, or an MDX changelog page from git history or local code changes.

    350 GitHub stars~1.1k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • MCP Apps Sync Docs

    apollographql/apollo-mcp-server

    Syncs MCP Apps documentation with the @apollo/client-ai-apps changelog.

    313 GitHub stars~1.2k tokensUpdated 2 days ago
    DevelopmentAuto-check passed

More from ai-dynamo/dynamo

All 27 skills in this repo
  • Visual Review

    ai-dynamo/dynamo

    Create self-contained interactive HTML code-review dashboards from GitHub or GitLab pull requests, checked-out branch diffs, or supplied unified diffs, with correctness and safe-to-merge scores…

    8.3k GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Fern Components

    ai-dynamo/dynamo

    Knowledge of Fern's built-in MDX component library (accordions, callouts, cards, steps, tabs, code blocks, API-reference snippets, and more) for authoring docs pages.

    8.3k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Dynamo Agent Harness

    ai-dynamo/dynamo

    Drives persistent Claude Code, Codex, or OpenCode agent sessions through a Dynamo OpenAI/Anthropic-compatible endpoint over Agent Client Protocol (ACP).

    8.3k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker).

    8.3k GitHub stars~3.5k tokensUpdated today
    Auto-check: notes
  • Selects and freezes a question-driven AIPerf workload, objective, load policy, and Kubernetes execution manifest for a successfully deployed Dynamo candidate.

    8.3k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Debug Session

    ai-dynamo/dynamo

    Sets up a structured debugging session for a Dynamo bug — pull the report from a Linear ticket, GitHub issue, or pasted text, capture the environment, create a persistent worklog markdown file, and…

    8.3k GitHub stars~1.2k tokensUpdated today
    Auto-check passed

Categories

Questions about Fern Navigation

What does Fern Navigation do?

Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants…. Fern Navigation is an agent skill from ai-dynamo/dynamo.yml files) using sections, pages, folders, tabs, tab variants, versions, products, changelogs, and site-level settings, plus per-page frontmatter.

When should I use Fern Navigation?

Fern Navigation fits situations like: changing the shape of a Fern docs site (adding a tab; splitting into products; cutting a version; restructuring the sidebar.

How do I install Fern Navigation in Claude Code?

Run `npx skills add ai-dynamo/dynamo --skill fern-navigation -a claude-code`. Or copy the skill folder (.agents/skills/fern-navigation in ai-dynamo/dynamo) into .claude/skills/fern-navigation in your project. Claude Code loads it when a task matches its description.

How do I install Fern Navigation in Codex?

Run `npx skills add ai-dynamo/dynamo --skill fern-navigation -a codex`. Or copy the skill folder (.agents/skills/fern-navigation in ai-dynamo/dynamo) into .agents/skills/fern-navigation in your project. Codex loads it when a task matches its description.

Can I use Fern Navigation in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ai-dynamo/dynamo --skill fern-navigation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fern-navigation, .gemini/skills/fern-navigation, .github/skills/fern-navigation and .opencode/skills/fern-navigation in your project.

What does Fern Navigation need to run?

Going by SKILL.md and its folder, Fern Navigation needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Fern Navigation access the network?

SKILL.md names 1 domain. As links in the text: schema.buildwithfern.dev. This is read from the text; nothing was executed.

Is Fern Navigation safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Fern Navigation use?

Fern Navigation is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fern Navigation use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.9k tokens, read only when the agent opens those files.

What are the alternatives to Fern Navigation?

Skills that share tags, products or a category with Fern Navigation: Using Docs Kit (lobehub/lobe-ui, 2.2k stars), Changeset (withastro/astro, 63k stars), Create Manifest (mindfold-ai/Trellis, 15k stars) and Release (hyhmrright/brooks-lint, 1.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fern Navigation?

ai-dynamo (a GitHub organization) maintains it in ai-dynamo/dynamo, which has 8,250 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 9, 2026.

Source: ai-dynamo/dynamo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.