[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BXHYGV7VCDAMVQXPJ1CMDE":3,"skill-same:01M6BXHYGV7VCDAMVQXPJ1CMDE":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":36,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6BXHYGV7VCDAMVQXPJ1CMDE","nemo-curator-docs",null,"Maintain the NeMo Curator Fern docs site — add, update, move, or remove pages under fern\u002F. Use for any documentation changes.","NVIDIA-NeMo\u002FCurator","NVIDIA-NeMo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F213689629?v=4","01M6BXH6HS4CXMTZ8GCBQTKPAP","01M6BXH6PD7DSNJ54NXBQ577TR",1859,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fnemo-curator-docs\u002FSKILL.md",[],[18,19,20,21,22,23,24],"docs","NeMo","nemo curator docs","documentation","update","site","docs site","2026-11-10 10:12:30",false,"---\nname: nemo-curator-docs\ndescription: Maintain the NeMo Curator Fern docs site — add, update, move, or remove pages under fern\u002F. Use for any documentation changes.\n---\n\n# NeMo Curator Docs Maintenance\n\nUnified skill for adding, updating, moving, and removing pages on the NeMo Curator Fern documentation site.\n\n## Scope Rule\n\n**ALL docs edits happen under `fern\u002F`.** The legacy `docs\u002F` directory is deprecated — do not add or move content into it. Release notes, migration guides, and every new page belong under `fern\u002F`.\n\n## Layout at a Glance\n\n```\nfern\u002F\n├── fern.config.json          # Minimal Fern config (org + CLI version)\n├── docs.yml                  # Site config: versions, tabs, redirects, libraries\n├── versions\u002F\n│   ├── latest.yml            # Symlink → v26.04.yml (do not edit directly)\n│   ├── v26.04.yml            # Nav tree for current train\n│   ├── v26.04\u002Fpages\u002F         # MDX content for current train\n│   ├── v25.09.yml\n│   └── v25.09\u002Fpages\u002F\n├── components\u002F               # Custom TSX components (footer, etc.)\n├── assets\u002F                   # Images, SVGs, favicon\n├── substitute_variables.py   # CI: resolves {{ variables }} in MDX\n└── AUTODOCS_GUIDE.md         # Library reference generation guide\n```\n\n**Current train:** `v26.04`. Default all new pages there unless the user specifies a version.\n\n```\nFile system                              Published URL\n───────────────────────────────────────  ────────────────────────────────────────\nfern\u002Fversions\u002Fv26.04\u002Fpages\u002F              docs.nvidia.com\u002Fnemo\u002Fcurator\u002Flatest\u002F\n  └─ get-started\u002Ftext.mdx                  └─ get-started\u002Ftext\nfern\u002Fversions\u002Fv26.04.yml ── nav for ──┐  docs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv26.04\u002F\nfern\u002Fversions\u002Flatest.yml ─ symlink ───┘    └─ get-started\u002Ftext\nfern\u002Fversions\u002Fv25.09\u002Fpages\u002F              docs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv25.09\u002F\n  └─ get-started\u002Ftext.mdx                  └─ get-started\u002Ftext\n```\n\n## Operations\n\n### Add a Page\n\n1. Gather: page title, target section, filename (kebab-case `.mdx`), subdirectory under `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F`.\n2. Create `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F\u003Csubdirectory>\u002F\u003Cfilename>.mdx`:\n\n```mdx\n---\ndescription: \"One-line SEO description\"\ncategories: [\"\u003Ccategory>\"]\ntags: [\"\u003Ctag-1>\", \"\u003Ctag-2>\"]\npersonas: [\"\u003Cpersona>\"]\ndifficulty: \"beginner\"      # beginner | intermediate | advanced\ncontent_type: \"tutorial\"     # tutorial | how-to | reference | concept | index\nmodality: \"text-only\"        # text-only | image-only | video-only | audio-only | universal\n---\n\n# \u003CPage Title>\n\n\u003Ccontent>\n```\n\n3. Add a nav entry in `fern\u002Fversions\u002Fv26.04.yml` under the correct section:\n\n```yaml\n- page: \u003CPage Title>\n  path: .\u002Fv26.04\u002Fpages\u002F\u003Csubdirectory>\u002F\u003Cfilename>.mdx\n  slug: \u003Cfilename>\n```\n\n4. If this also applies to `latest`, no action needed — `latest.yml` is a symlink to `v26.04.yml`.\n\n### Update a Page\n\n1. Locate by path, title, or keyword (`grep -rn` in `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F`).\n2. **Content only** — edit the MDX directly.\n3. **Title change** — update the frontmatter and the `- page:` name in `fern\u002Fversions\u002Fv26.04.yml`.\n4. **Section move** — `git mv` the file, update its `path:` in the nav, and fix all incoming links.\n5. **Slug change** — update `slug:` in the nav and add a redirect in `fern\u002Fdocs.yml` so old URLs keep working.\n\n### Remove a Page\n\n1. Find incoming links: `grep -r \"\u003Cfilename>\" fern\u002Fversions\u002Fv26.04\u002Fpages\u002F --include=\"*.mdx\"`.\n2. `git rm fern\u002Fversions\u002Fv26.04\u002Fpages\u002F\u003Csubdirectory>\u002F\u003Cfilename>.mdx`.\n3. Remove the `- page:` block from `fern\u002Fversions\u002Fv26.04.yml`. If it was the last page in a section, remove the `- section:` block.\n4. Fix or remove all incoming links found in step 1.\n5. Add a redirect in `fern\u002Fdocs.yml` if the URL was public.\n\n### Back-port to an Older Version\n\nOnly when explicitly asked. Repeat the operation in the corresponding `fern\u002Fversions\u002FvXX.YY\u002F` tree and `vXX.YY.yml` nav. MDX content often diverges between trains — do not blindly copy.\n\n### Worked Example: Adding a Page\n\nRequest: *\"Add a how-to for benchmarking text pipelines under Curate Text.\"*\n\n1. Create `fern\u002Fversions\u002Fv26.04\u002Fpages\u002Fcurate-text\u002Fbenchmarking.mdx`:\n\n   ```mdx\n   ---\n   description: \"Benchmark text curation pipelines and interpret throughput and memory metrics\"\n   categories: [\"how-to\"]\n   tags: [\"text-curation\", \"benchmarking\", \"performance\"]\n   personas: [\"mle-focused\"]\n   difficulty: \"intermediate\"\n   content_type: \"how-to\"\n   modality: \"text-only\"\n   ---\n\n   # Benchmark Text Pipelines\n\n   \u003Ccontent>\n   ```\n\n2. Add nav entry in `fern\u002Fversions\u002Fv26.04.yml` under the existing `Curate Text` section:\n\n   ```yaml\n   - page: Benchmark Text Pipelines\n     path: .\u002Fv26.04\u002Fpages\u002Fcurate-text\u002Fbenchmarking.mdx\n     slug: benchmarking\n   ```\n\n3. `cd fern && fern check` then `fern docs dev` and verify the page renders at `\u002Fcurate-text\u002Fbenchmarking`.\n\n### Worked Example: Renaming a Slug (with Redirect)\n\nRequest: *\"Rename `\u002Fcurate-text\u002Fbenchmarking` to `\u002Fcurate-text\u002Fperformance`.\"*\n\n1. Update `slug:` in `fern\u002Fversions\u002Fv26.04.yml`: `slug: performance`.\n2. (Optional) `git mv` the MDX file if you want the filename to match the slug.\n3. Add a redirect to `fern\u002Fdocs.yml` so old links keep working:\n\n   ```yaml\n   redirects:\n     - source: \"\u002Fnemo\u002Fcurator\u002Flatest\u002Fcurate-text\u002Fbenchmarking\"\n       destination: \"\u002Fnemo\u002Fcurator\u002Flatest\u002Fcurate-text\u002Fperformance\"\n     - source: \"\u002Fnemo\u002Fcurator\u002Fv26.04\u002Fcurate-text\u002Fbenchmarking\"\n       destination: \"\u002Fnemo\u002Fcurator\u002Fv26.04\u002Fcurate-text\u002Fperformance\"\n   ```\n\n4. `grep -rn \"\u002Fcurate-text\u002Fbenchmarking\" fern\u002Fversions\u002Fv26.04\u002Fpages\u002F` and update any incoming links.\n\n---\n\n## Content Guidelines\n\nNeMo Curator uses **Fern-native MDX components directly** (unlike Dynamo, which converts GitHub callouts in CI). Do not use `> [!NOTE]` syntax — it will not render.\n\n| Purpose | Component |\n|---|---|\n| Neutral aside | `\u003CNote>...\u003C\u002FNote>` |\n| Helpful tip | `\u003CTip>...\u003C\u002FTip>` |\n| Informational callout | `\u003CInfo>...\u003C\u002FInfo>` |\n| Warning | `\u003CWarning>...\u003C\u002FWarning>` |\n| Error \u002F danger | `\u003CError>...\u003C\u002FError>` |\n| Card grid on index pages | `\u003CCards>` with `\u003CCard title=\"...\" href=\"...\">` children |\n\nImages live in `fern\u002Fassets\u002F` (shared) or `fern\u002Fversions\u002FvXX.YY\u002Fpages\u002F_images\u002F` (version-scoped). Reference with root-relative paths.\n\nComponent examples:\n\n```mdx\n\u003CTip>\nIf `uv` is not installed, see the [Installation Guide](\u002Fadmin\u002Finstallation).\n\u003C\u002FTip>\n\n\u003CWarning>\nGPU-accelerated dedup requires CUDA {{ recommended_cuda }} or later.\n\u003C\u002FWarning>\n\n\u003CCards>\n  \u003CCard title=\"Text Curation\" href=\"\u002Fget-started\u002Ftext\">\n    Set up and run text curation workflows.\n  \u003C\u002FCard>\n  \u003CCard title=\"Image Curation\" href=\"\u002Fget-started\u002Fimage\">\n    Set up and run image curation workflows.\n  \u003C\u002FCard>\n\u003C\u002FCards>\n```\n\n## Frontmatter Fields\n\nRequired: `description`.\nOptional but strongly preferred: `categories`, `tags`, `personas`, `difficulty`, `content_type`, `modality`. Existing pages in the same section are the best reference for valid values.\n\n`title` is taken from the `- page:` entry in the nav file; the MDX file itself uses an `# H1` heading matching the page name.\n\n## Variable Substitution\n\nTokens like `{{ product_name }}`, `{{ container_version }}`, `{{ current_release }}`, `{{ github_repo }}`, `{{ min_python_version }}` are resolved by `fern\u002Fsubstitute_variables.py` at CI time. Use them instead of hard-coding versions or URLs. Canonical list in `DEFAULT_VARIABLES` at the top of that file.\n\nExample in MDX:\n\n```mdx\nInstall {{ product_name }} {{ current_release }} from {{ github_repo }}.\nRequires Python {{ min_python_version }}+ and CUDA {{ recommended_cuda }}.\n```\n\nAfter substitution at CI time:\n\n```\nInstall NeMo Curator 25.09 from https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator.\nRequires Python 3.10+ and CUDA 12.0+.\n```\n\nTo preview substitution locally:\n\n```bash\npython fern\u002Fsubstitute_variables.py versions\u002Fv26.04 --version 26.04 --dry-run\n```\n\n## Validate\n\n```bash\ncd fern\nfern check                   # YAML + frontmatter validation\nfern docs broken-links       # link check\nfern docs dev                # localhost:3000 hot-reload preview\n```\n\n`fern check` must pass before commit. Broken-link check can be deferred but must pass in CI.\n\n## Commit & Preview\n\n```bash\ngit add fern\u002F\ngit commit -s -m \"docs: \u003Cadd|update|remove> \u003Cpage-title>\"\n```\n\n**DCO sign-off (`-s`) is required** on every commit. CI enforces it. If you forget, amend with `git commit --amend --no-edit -s` and force-push the branch.\n\nPRs that touch `fern\u002F**` get an automatic Fern preview URL posted as a comment by `.github\u002Fworkflows\u002Ffern-docs-preview-comment.yml`. No manual step needed.\n\n```\n                    ┌─ fern-docs-ci.yml         → fern check + autodocs\nPR (touches fern\u002F) ─┼─ fern-docs-preview.yml    → preview build\n                    └─ fern-docs-preview-*.yml  → ? preview URL comment\n\nMerge to main      → NO publish. Site is unchanged.\n\nTag push (docs\u002Fv*) → publish-fern-docs.yml      → docs.nvidia.com\u002Fnemo\u002Fcurator\n```\n\n## Publishing to Production\n\n**Merging to `main` does NOT publish.** Production only updates when a tag matching `docs\u002Fv*` is pushed (or the workflow is manually dispatched from the **Actions** tab). Do not push tags unless the user asks.\n\nTag must be `docs\u002Fv\u003CMAJOR>.\u003CMINOR>.\u003CPATCH>` — the `docs\u002Fv` prefix is required by the workflow trigger and the semver suffix should match the docs release in `CHANGELOG.md`.\n\n```bash\n# Correct — triggers publish\ngit tag docs\u002Fv1.1.0\ngit push origin docs\u002Fv1.1.0\n\ngit tag docs\u002Fv1.2.0-rc1     # pre-release suffix is fine, still matches docs\u002Fv*\ngit push origin docs\u002Fv1.2.0-rc1\n\n# Wrong — these will NOT trigger publish\ngit tag v1.1.0              # missing docs\u002F prefix\ngit tag docs\u002F1.1.0          # missing v\ngit tag docs-v1.1.0         # wrong separator\n```\n\nURL → version mapping after publish:\n\n```\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Flatest\u002F...   → symlink to current train (v26.04 today)\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv26.04\u002F...   → 26.04 train\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv26.02\u002F...   → 26.02 train\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv25.09\u002F...   → 25.09 train\n```\n\n## Version Ship Checklist (when cutting a new train)\n\nWhen the user ships a new version (e.g. cutting `v26.06` while `v26.04` is current):\n\n1. Copy `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F` → `fern\u002Fversions\u002Fv26.06\u002Fpages\u002F` and edit content.\n2. Copy `fern\u002Fversions\u002Fv26.04.yml` → `fern\u002Fversions\u002Fv26.06.yml` and update all `.\u002Fv26.04\u002F` path prefixes to `.\u002Fv26.06\u002F`.\n3. Repoint the symlink: `ln -sf v26.06.yml fern\u002Fversions\u002Flatest.yml`.\n4. Update `fern\u002Fdocs.yml` `versions:` list — add the new display-name, mark older trains stable.\n5. Add redirect rules in `fern\u002Fdocs.yml` for `\u002Fnemo\u002Fcurator\u002F26.06\u002F:path*` → `\u002Fnemo\u002Fcurator\u002Fv26.06\u002F:path*` (see existing patterns).\n6. Add `*\u002Findex.html` redirect for the new version (e.g. `\u002Fnemo\u002Fcurator\u002Fv26.06\u002Findex.html` → `\u002Fnemo\u002Fcurator\u002Fv26.06`). The `:path*` rule does **not** match the empty-path case, so each version-root index.html needs its own explicit rule.\n7. Align `display-name` strings with `CHANGELOG.md` and `nemo_curator\u002Fpackage_info.py`.\n\n## Holding a Version Back from Publish\n\nA version is included in the published site only when it appears in the `versions:` block of `fern\u002Fdocs.yml`. The MDX tree (`fern\u002Fversions\u002FvXX.YY\u002F`) and nav file (`fern\u002Fversions\u002FvXX.YY.yml`) can sit in the repo unpublished — Fern doesn't auto-publish every YAML it finds.\n\n**To stage a version without publishing it** (e.g. work-in-progress on `v26.06` while `v26.04` is current):\n\n```yaml\n# fern\u002Fdocs.yml\nversions:\n  - display-name: \"Latest · v1.1.2 (26.04)\"\n    path: versions\u002Flatest.yml\n    slug: latest\n  - display-name: \"26.04 · v1.1.2\"\n    path: versions\u002Fv26.04.yml\n    slug: v26.04\n  # v26.06 staged in repo but not listed here → not published\n```\n\n**To pull an already-shipping version back** (e.g. hold `v26.04` while pushing fixes to older trains):\n\n1. Remove the `v26.04` entry from `versions:` in `fern\u002Fdocs.yml`.\n2. If `latest` should also stop serving 26.04 content, repoint the symlink: `ln -sf v26.02.yml fern\u002Fversions\u002Flatest.yml`. Otherwise leave `latest` alone — it will keep serving v26.04 content under `\u002Flatest\u002F` even with `v26.04` removed (since `latest.yml` references the v26.04 pages directly).\n3. Tag and push `docs\u002Fv*` to publish.\n4. Restore the entry (and symlink) when ready.\n\nThis is a temporary maneuver — track the change so it gets reverted.\n\n**Audiences (alternative):** Fern supports `audiences:` on versions plus separate `instances:` (e.g. staging vs production). This is heavier setup — only adopt if multi-instance publishing is genuinely needed. NeMo Curator does not currently configure instances. References: [Fern versioning](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fdocs\u002Fconfiguration\u002Fversioning), [Fern publishing](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fdocs\u002Fconfiguration\u002Fpublishing).\n\n**Do not use `hidden: true` to hide a version from publish.** Hidden versions are removed from navigation\u002Fsearch\u002Findexing but remain accessible by direct URL — still effectively published.\n\n## Library Reference (Autodocs) and the Fern Cross-Ref Bug\n\n`fern\u002Fdocs.yml` declares one `libraries:` entry, and a script provides a second, temporary one (both write to `fern\u002Fproduct-docs\u002Fnemo-curator\u002FFull-Library-Reference\u002F`, gitignored):\n\n- **`nemo-curator`** (`input.git`, committed in `docs.yml`) — used by CI\u002Fpublish\u002Fpreview; requires `fern login` or `FERN_TOKEN`. Workflows run `fern docs md generate --library nemo-curator`.\n- **`nemo-curator-local`** (`input.path: ..\u002Fnemo_curator`, injected temporarily by `fern\u002Fscripts\u002Fgenerate-library-local.sh`) — local dev without Fern auth; requires Docker. Run `npm run generate:library:local` from `fern\u002F`. The entry must NOT be committed to `docs.yml`: `fern docs dev` rejects path-input libraries (\"'path' input which is not yet supported\") and renders a blank page, while `--local` generation only accepts `path` inputs.\n\nFor a full API reference locally (424 pages), use `npm run generate:library`. The local Docker parser is beta and currently produces fewer pages — fine for testing the no-auth flow, not a substitute for CI generation.\n\n**Known bug in the Fern Python library generator** (filed upstream): the generator emits cross-references that miss the `\u002Fnemo\u002Fcurator` site basepath (links use `\u002Fnemo-curator\u002F...` instead of `\u002Fnemo\u002Fcurator\u002Fnemo-curator\u002F...`) and tacks on Sphinx-style `#nemo_curator-…` fragments that don't match any rendered anchor. Result: ~540 broken links across the generated API reference.\n\n**No in-repo workaround currently.** A post-generation rewrite (walking the generated MDX, fixing the basepath, dropping stale fragments) is feasible but not yet wired up. Track the upstream Fern fix; revisit if it doesn't land soon.\n\n`fern\u002F_fix_broken_links.py` separately rewrites a long list of legacy URL patterns (`\u002Fapi\u002Freference\u002Fapi-reference\u002F`, old Sphinx slugs, etc.) on the **committed** MDX under `fern\u002Fversions\u002Fv25.09\u002Fpages\u002F` and `fern\u002Fversions\u002Fv26.02\u002Fpages\u002F`. CI does not run it, so committed pages can drift. Re-run locally and commit the diff if you see drift:\n\n```bash\npython3 fern\u002F_fix_broken_links.py\n```\n\n## Redirect Quirks\n\n- **`:path*` does not match the empty-path case.** `\u002Fnemo\u002Fcurator\u002F:path*\u002Findex.html` will not catch `\u002Fnemo\u002Fcurator\u002Findex.html` — that needs its own explicit rule. Same for every version-root: `\u002Fnemo\u002Fcurator\u002F{latest,vXX.YY}\u002Findex.html` each need a dedicated entry. Pattern: define the explicit empty-path rules **before** the `:path*` rule.\n- **Order matters.** Fern processes redirects top-down, first match wins. Put more specific rules above catch-alls.\n- **Version slugs** in `fern\u002Fdocs.yml` use the `vXX.YY` form (e.g. `v26.04`). Calendar-train forms (`26.04`) need redirects to the `v`-prefixed slug.\n\n## Debugging\n\n| Symptom | Fix |\n|---|---|\n| `fern check` YAML error | 2-space indent; `- page:` inside `contents:`; `path:` is relative to the version YAML file |\n| Page 404 in preview | `slug:` missing or duplicated in the same section; confirm in `vXX.YY.yml` |\n| `{{ variable }}` shows literally on site | Not in `DEFAULT_VARIABLES` in `substitute_variables.py` — add it there |\n| MDX parse error | Replace bare `\u003Chttps:\u002F\u002F...>` with `[text](https:\u002F\u002F...)`; escape `\u003C` in prose with `&lt;` or backticks |\n| Old Sphinx URL breaks | Add a `redirects:` entry in `fern\u002Fdocs.yml` |\n| Library reference missing | Run `npm run generate:library` in `fern\u002F` (full reference; needs Fern auth). Or `npm run generate:library:local` without auth (Docker; beta, fewer pages). See `fern\u002FAUTODOCS_GUIDE.md`. |\n| Broken image | Path is relative to the MDX file; check `fern\u002Fassets\u002F` or `pages\u002F_images\u002F` exists |\n\n## Key References\n\n| File | Purpose |\n|---|---|\n| `fern\u002Fdocs.yml` | Site config, versions, redirects, libraries |\n| `fern\u002Fversions\u002FvXX.YY.yml` | Navigation tree for a version |\n| `fern\u002Fversions\u002FvXX.YY\u002Fpages\u002F` | MDX content for a version |\n| `fern\u002Fversions\u002Flatest.yml` | Symlink → current train's nav (do not edit) |\n| `fern\u002Fcomponents\u002F` | Custom TSX (footer, release banner) |\n| `fern\u002Fassets\u002F` | Shared images, SVGs, favicon |\n| `fern\u002Fsubstitute_variables.py` | Variable definitions + CI replacement |\n| `fern\u002FAUTODOCS_GUIDE.md` | Generating library reference MDX from source |\n| `fern\u002FREADME.md` | Full docs architecture guide |\n| `.github\u002Fworkflows\u002Ffern-docs-*.yml` | CI: validation, preview, publish |\n\n---\n","# NeMo Curator Docs Maintenance\n\nUnified skill for adding, updating, moving, and removing pages on the NeMo Curator Fern documentation site.\n\n## Scope Rule\n\n**ALL docs edits happen under `fern\u002F`.** The legacy `docs\u002F` directory is deprecated — do not add or move content into it. Release notes, migration guides, and every new page belong under `fern\u002F`.\n\n## Layout at a Glance\n\n```\nfern\u002F\n├── fern.config.json          # Minimal Fern config (org + CLI version)\n├── docs.yml                  # Site config: versions, tabs, redirects, libraries\n├── versions\u002F\n│   ├── latest.yml            # Symlink → v26.04.yml (do not edit directly)\n│   ├── v26.04.yml            # Nav tree for current train\n│   ├── v26.04\u002Fpages\u002F         # MDX content for current train\n│   ├── v25.09.yml\n│   └── v25.09\u002Fpages\u002F\n├── components\u002F               # Custom TSX components (footer, etc.)\n├── assets\u002F                   # Images, SVGs, favicon\n├── substitute_variables.py   # CI: resolves {{ variables }} in MDX\n└── AUTODOCS_GUIDE.md         # Library reference generation guide\n```\n\n**Current train:** `v26.04`. Default all new pages there unless the user specifies a version.\n\n```\nFile system                              Published URL\n───────────────────────────────────────  ────────────────────────────────────────\nfern\u002Fversions\u002Fv26.04\u002Fpages\u002F              docs.nvidia.com\u002Fnemo\u002Fcurator\u002Flatest\u002F\n  └─ get-started\u002Ftext.mdx                  └─ get-started\u002Ftext\nfern\u002Fversions\u002Fv26.04.yml ── nav for ──┐  docs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv26.04\u002F\nfern\u002Fversions\u002Flatest.yml ─ symlink ───┘    └─ get-started\u002Ftext\nfern\u002Fversions\u002Fv25.09\u002Fpages\u002F              docs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv25.09\u002F\n  └─ get-started\u002Ftext.mdx                  └─ get-started\u002Ftext\n```\n\n## Operations\n\n### Add a Page\n\n1. Gather: page title, target section, filename (kebab-case `.mdx`), subdirectory under `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F`.\n2. Create `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F\u003Csubdirectory>\u002F\u003Cfilename>.mdx`:\n\n```mdx\n---\ndescription: \"One-line SEO description\"\ncategories: [\"\u003Ccategory>\"]\ntags: [\"\u003Ctag-1>\", \"\u003Ctag-2>\"]\npersonas: [\"\u003Cpersona>\"]\ndifficulty: \"beginner\"      # beginner | intermediate | advanced\ncontent_type: \"tutorial\"     # tutorial | how-to | reference | concept | index\nmodality: \"text-only\"        # text-only | image-only | video-only | audio-only | universal\n---\n\n# \u003CPage Title>\n\n\u003Ccontent>\n```\n\n3. Add a nav entry in `fern\u002Fversions\u002Fv26.04.yml` under the correct section:\n\n```yaml\n- page: \u003CPage Title>\n  path: .\u002Fv26.04\u002Fpages\u002F\u003Csubdirectory>\u002F\u003Cfilename>.mdx\n  slug: \u003Cfilename>\n```\n\n4. If this also applies to `latest`, no action needed — `latest.yml` is a symlink to `v26.04.yml`.\n\n### Update a Page\n\n1. Locate by path, title, or keyword (`grep -rn` in `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F`).\n2. **Content only** — edit the MDX directly.\n3. **Title change** — update the frontmatter and the `- page:` name in `fern\u002Fversions\u002Fv26.04.yml`.\n4. **Section move** — `git mv` the file, update its `path:` in the nav, and fix all incoming links.\n5. **Slug change** — update `slug:` in the nav and add a redirect in `fern\u002Fdocs.yml` so old URLs keep working.\n\n### Remove a Page\n\n1. Find incoming links: `grep -r \"\u003Cfilename>\" fern\u002Fversions\u002Fv26.04\u002Fpages\u002F --include=\"*.mdx\"`.\n2. `git rm fern\u002Fversions\u002Fv26.04\u002Fpages\u002F\u003Csubdirectory>\u002F\u003Cfilename>.mdx`.\n3. Remove the `- page:` block from `fern\u002Fversions\u002Fv26.04.yml`. If it was the last page in a section, remove the `- section:` block.\n4. Fix or remove all incoming links found in step 1.\n5. Add a redirect in `fern\u002Fdocs.yml` if the URL was public.\n\n### Back-port to an Older Version\n\nOnly when explicitly asked. Repeat the operation in the corresponding `fern\u002Fversions\u002FvXX.YY\u002F` tree and `vXX.YY.yml` nav. MDX content often diverges between trains — do not blindly copy.\n\n### Worked Example: Adding a Page\n\nRequest: *\"Add a how-to for benchmarking text pipelines under Curate Text.\"*\n\n1. Create `fern\u002Fversions\u002Fv26.04\u002Fpages\u002Fcurate-text\u002Fbenchmarking.mdx`:\n\n   ```mdx\n   ---\n   description: \"Benchmark text curation pipelines and interpret throughput and memory metrics\"\n   categories: [\"how-to\"]\n   tags: [\"text-curation\", \"benchmarking\", \"performance\"]\n   personas: [\"mle-focused\"]\n   difficulty: \"intermediate\"\n   content_type: \"how-to\"\n   modality: \"text-only\"\n   ---\n\n   # Benchmark Text Pipelines\n\n   \u003Ccontent>\n   ```\n\n2. Add nav entry in `fern\u002Fversions\u002Fv26.04.yml` under the existing `Curate Text` section:\n\n   ```yaml\n   - page: Benchmark Text Pipelines\n     path: .\u002Fv26.04\u002Fpages\u002Fcurate-text\u002Fbenchmarking.mdx\n     slug: benchmarking\n   ```\n\n3. `cd fern && fern check` then `fern docs dev` and verify the page renders at `\u002Fcurate-text\u002Fbenchmarking`.\n\n### Worked Example: Renaming a Slug (with Redirect)\n\nRequest: *\"Rename `\u002Fcurate-text\u002Fbenchmarking` to `\u002Fcurate-text\u002Fperformance`.\"*\n\n1. Update `slug:` in `fern\u002Fversions\u002Fv26.04.yml`: `slug: performance`.\n2. (Optional) `git mv` the MDX file if you want the filename to match the slug.\n3. Add a redirect to `fern\u002Fdocs.yml` so old links keep working:\n\n   ```yaml\n   redirects:\n     - source: \"\u002Fnemo\u002Fcurator\u002Flatest\u002Fcurate-text\u002Fbenchmarking\"\n       destination: \"\u002Fnemo\u002Fcurator\u002Flatest\u002Fcurate-text\u002Fperformance\"\n     - source: \"\u002Fnemo\u002Fcurator\u002Fv26.04\u002Fcurate-text\u002Fbenchmarking\"\n       destination: \"\u002Fnemo\u002Fcurator\u002Fv26.04\u002Fcurate-text\u002Fperformance\"\n   ```\n\n4. `grep -rn \"\u002Fcurate-text\u002Fbenchmarking\" fern\u002Fversions\u002Fv26.04\u002Fpages\u002F` and update any incoming links.\n\n---\n\n## Content Guidelines\n\nNeMo Curator uses **Fern-native MDX components directly** (unlike Dynamo, which converts GitHub callouts in CI). Do not use `> [!NOTE]` syntax — it will not render.\n\n| Purpose | Component |\n|---|---|\n| Neutral aside | `\u003CNote>...\u003C\u002FNote>` |\n| Helpful tip | `\u003CTip>...\u003C\u002FTip>` |\n| Informational callout | `\u003CInfo>...\u003C\u002FInfo>` |\n| Warning | `\u003CWarning>...\u003C\u002FWarning>` |\n| Error \u002F danger | `\u003CError>...\u003C\u002FError>` |\n| Card grid on index pages | `\u003CCards>` with `\u003CCard title=\"...\" href=\"...\">` children |\n\nImages live in `fern\u002Fassets\u002F` (shared) or `fern\u002Fversions\u002FvXX.YY\u002Fpages\u002F_images\u002F` (version-scoped). Reference with root-relative paths.\n\nComponent examples:\n\n```mdx\n\u003CTip>\nIf `uv` is not installed, see the [Installation Guide](\u002Fadmin\u002Finstallation).\n\u003C\u002FTip>\n\n\u003CWarning>\nGPU-accelerated dedup requires CUDA {{ recommended_cuda }} or later.\n\u003C\u002FWarning>\n\n\u003CCards>\n  \u003CCard title=\"Text Curation\" href=\"\u002Fget-started\u002Ftext\">\n    Set up and run text curation workflows.\n  \u003C\u002FCard>\n  \u003CCard title=\"Image Curation\" href=\"\u002Fget-started\u002Fimage\">\n    Set up and run image curation workflows.\n  \u003C\u002FCard>\n\u003C\u002FCards>\n```\n\n## Frontmatter Fields\n\nRequired: `description`.\nOptional but strongly preferred: `categories`, `tags`, `personas`, `difficulty`, `content_type`, `modality`. Existing pages in the same section are the best reference for valid values.\n\n`title` is taken from the `- page:` entry in the nav file; the MDX file itself uses an `# H1` heading matching the page name.\n\n## Variable Substitution\n\nTokens like `{{ product_name }}`, `{{ container_version }}`, `{{ current_release }}`, `{{ github_repo }}`, `{{ min_python_version }}` are resolved by `fern\u002Fsubstitute_variables.py` at CI time. Use them instead of hard-coding versions or URLs. Canonical list in `DEFAULT_VARIABLES` at the top of that file.\n\nExample in MDX:\n\n```mdx\nInstall {{ product_name }} {{ current_release }} from {{ github_repo }}.\nRequires Python {{ min_python_version }}+ and CUDA {{ recommended_cuda }}.\n```\n\nAfter substitution at CI time:\n\n```\nInstall NeMo Curator 25.09 from https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator.\nRequires Python 3.10+ and CUDA 12.0+.\n```\n\nTo preview substitution locally:\n\n```bash\npython fern\u002Fsubstitute_variables.py versions\u002Fv26.04 --version 26.04 --dry-run\n```\n\n## Validate\n\n```bash\ncd fern\nfern check                   # YAML + frontmatter validation\nfern docs broken-links       # link check\nfern docs dev                # localhost:3000 hot-reload preview\n```\n\n`fern check` must pass before commit. Broken-link check can be deferred but must pass in CI.\n\n## Commit & Preview\n\n```bash\ngit add fern\u002F\ngit commit -s -m \"docs: \u003Cadd|update|remove> \u003Cpage-title>\"\n```\n\n**DCO sign-off (`-s`) is required** on every commit. CI enforces it. If you forget, amend with `git commit --amend --no-edit -s` and force-push the branch.\n\nPRs that touch `fern\u002F**` get an automatic Fern preview URL posted as a comment by `.github\u002Fworkflows\u002Ffern-docs-preview-comment.yml`. No manual step needed.\n\n```\n                    ┌─ fern-docs-ci.yml         → fern check + autodocs\nPR (touches fern\u002F) ─┼─ fern-docs-preview.yml    → preview build\n                    └─ fern-docs-preview-*.yml  → ? preview URL comment\n\nMerge to main      → NO publish. Site is unchanged.\n\nTag push (docs\u002Fv*) → publish-fern-docs.yml      → docs.nvidia.com\u002Fnemo\u002Fcurator\n```\n\n## Publishing to Production\n\n**Merging to `main` does NOT publish.** Production only updates when a tag matching `docs\u002Fv*` is pushed (or the workflow is manually dispatched from the **Actions** tab). Do not push tags unless the user asks.\n\nTag must be `docs\u002Fv\u003CMAJOR>.\u003CMINOR>.\u003CPATCH>` — the `docs\u002Fv` prefix is required by the workflow trigger and the semver suffix should match the docs release in `CHANGELOG.md`.\n\n```bash\n# Correct — triggers publish\ngit tag docs\u002Fv1.1.0\ngit push origin docs\u002Fv1.1.0\n\ngit tag docs\u002Fv1.2.0-rc1     # pre-release suffix is fine, still matches docs\u002Fv*\ngit push origin docs\u002Fv1.2.0-rc1\n\n# Wrong — these will NOT trigger publish\ngit tag v1.1.0              # missing docs\u002F prefix\ngit tag docs\u002F1.1.0          # missing v\ngit tag docs-v1.1.0         # wrong separator\n```\n\nURL → version mapping after publish:\n\n```\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Flatest\u002F...   → symlink to current train (v26.04 today)\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv26.04\u002F...   → 26.04 train\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv26.02\u002F...   → 26.02 train\ndocs.nvidia.com\u002Fnemo\u002Fcurator\u002Fv25.09\u002F...   → 25.09 train\n```\n\n## Version Ship Checklist (when cutting a new train)\n\nWhen the user ships a new version (e.g. cutting `v26.06` while `v26.04` is current):\n\n1. Copy `fern\u002Fversions\u002Fv26.04\u002Fpages\u002F` → `fern\u002Fversions\u002Fv26.06\u002Fpages\u002F` and edit content.\n2. Copy `fern\u002Fversions\u002Fv26.04.yml` → `fern\u002Fversions\u002Fv26.06.yml` and update all `.\u002Fv26.04\u002F` path prefixes to `.\u002Fv26.06\u002F`.\n3. Repoint the symlink: `ln -sf v26.06.yml fern\u002Fversions\u002Flatest.yml`.\n4. Update `fern\u002Fdocs.yml` `versions:` list — add the new display-name, mark older trains stable.\n5. Add redirect rules in `fern\u002Fdocs.yml` for `\u002Fnemo\u002Fcurator\u002F26.06\u002F:path*` → `\u002Fnemo\u002Fcurator\u002Fv26.06\u002F:path*` (see existing patterns).\n6. Add `*\u002Findex.html` redirect for the new version (e.g. `\u002Fnemo\u002Fcurator\u002Fv26.06\u002Findex.html` → `\u002Fnemo\u002Fcurator\u002Fv26.06`). The `:path*` rule does **not** match the empty-path case, so each version-root index.html needs its own explicit rule.\n7. Align `display-name` strings with `CHANGELOG.md` and `nemo_curator\u002Fpackage_info.py`.\n\n## Holding a Version Back from Publish\n\nA version is included in the published site only when it appears in the `versions:` block of `fern\u002Fdocs.yml`. The MDX tree (`fern\u002Fversions\u002FvXX.YY\u002F`) and nav file (`fern\u002Fversions\u002FvXX.YY.yml`) can sit in the repo unpublished — Fern doesn't auto-publish every YAML it finds.\n\n**To stage a version without publishing it** (e.g. work-in-progress on `v26.06` while `v26.04` is current):\n\n```yaml\n# fern\u002Fdocs.yml\nversions:\n  - display-name: \"Latest · v1.1.2 (26.04)\"\n    path: versions\u002Flatest.yml\n    slug: latest\n  - display-name: \"26.04 · v1.1.2\"\n    path: versions\u002Fv26.04.yml\n    slug: v26.04\n  # v26.06 staged in repo but not listed here → not published\n```\n\n**To pull an already-shipping version back** (e.g. hold `v26.04` while pushing fixes to older trains):\n\n1. Remove the `v26.04` entry from `versions:` in `fern\u002Fdocs.yml`.\n2. If `latest` should also stop serving 26.04 content, repoint the symlink: `ln -sf v26.02.yml fern\u002Fversions\u002Flatest.yml`. Otherwise leave `latest` alone — it will keep serving v26.04 content under `\u002Flatest\u002F` even with `v26.04` removed (since `latest.yml` references the v26.04 pages directly).\n3. Tag and push `docs\u002Fv*` to publish.\n4. Restore the entry (and symlink) when ready.\n\nThis is a temporary maneuver — track the change so it gets reverted.\n\n**Audiences (alternative):** Fern supports `audiences:` on versions plus separate `instances:` (e.g. staging vs production). This is heavier setup — only adopt if multi-instance publishing is genuinely needed. NeMo Curator does not currently configure instances. References: [Fern versioning](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fdocs\u002Fconfiguration\u002Fversioning), [Fern publishing](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fdocs\u002Fconfiguration\u002Fpublishing).\n\n**Do not use `hidden: true` to hide a version from publish.** Hidden versions are removed from navigation\u002Fsearch\u002Findexing but remain accessible by direct URL — still effectively published.\n\n## Library Reference (Autodocs) and the Fern Cross-Ref Bug\n\n`fern\u002Fdocs.yml` declares one `libraries:` entry, and a script provides a second, temporary one (both write to `fern\u002Fproduct-docs\u002Fnemo-curator\u002FFull-Library-Reference\u002F`, gitignored):\n\n- **`nemo-curator`** (`input.git`, committed in `docs.yml`) — used by CI\u002Fpublish\u002Fpreview; requires `fern login` or `FERN_TOKEN`. Workflows run `fern docs md generate --library nemo-curator`.\n- **`nemo-curator-local`** (`input.path: ..\u002Fnemo_curator`, injected temporarily by `fern\u002Fscripts\u002Fgenerate-library-local.sh`) — local dev without Fern auth; requires Docker. Run `npm run generate:library:local` from `fern\u002F`. The entry must NOT be committed to `docs.yml`: `fern docs dev` rejects path-input libraries (\"'path' input which is not yet supported\") and renders a blank page, while `--local` generation only accepts `path` inputs.\n\nFor a full API reference locally (424 pages), use `npm run generate:library`. The local Docker parser is beta and currently produces fewer pages — fine for testing the no-auth flow, not a substitute for CI generation.\n\n**Known bug in the Fern Python library generator** (filed upstream): the generator emits cross-references that miss the `\u002Fnemo\u002Fcurator` site basepath (links use `\u002Fnemo-curator\u002F...` instead of `\u002Fnemo\u002Fcurator\u002Fnemo-curator\u002F...`) and tacks on Sphinx-style `#nemo_curator-…` fragments that don't match any rendered anchor. Result: ~540 broken links across the generated API reference.\n\n**No in-repo workaround currently.** A post-generation rewrite (walking the generated MDX, fixing the basepath, dropping stale fragments) is feasible but not yet wired up. Track the upstream Fern fix; revisit if it doesn't land soon.\n\n`fern\u002F_fix_broken_links.py` separately rewrites a long list of legacy URL patterns (`\u002Fapi\u002Freference\u002Fapi-reference\u002F`, old Sphinx slugs, etc.) on the **committed** MDX under `fern\u002Fversions\u002Fv25.09\u002Fpages\u002F` and `fern\u002Fversions\u002Fv26.02\u002Fpages\u002F`. CI does not run it, so committed pages can drift. Re-run locally and commit the diff if you see drift:\n\n```bash\npython3 fern\u002F_fix_broken_links.py\n```\n\n## Redirect Quirks\n\n- **`:path*` does not match the empty-path case.** `\u002Fnemo\u002Fcurator\u002F:path*\u002Findex.html` will not catch `\u002Fnemo\u002Fcurator\u002Findex.html` — that needs its own explicit rule. Same for every version-root: `\u002Fnemo\u002Fcurator\u002F{latest,vXX.YY}\u002Findex.html` each need a dedicated entry. Pattern: define the explicit empty-path rules **before** the `:path*` rule.\n- **Order matters.** Fern processes redirects top-down, first match wins. Put more specific rules above catch-alls.\n- **Version slugs** in `fern\u002Fdocs.yml` use the `vXX.YY` form (e.g. `v26.04`). Calendar-train forms (`26.04`) need redirects to the `v`-prefixed slug.\n\n## Debugging\n\n| Symptom | Fix |\n|---|---|\n| `fern check` YAML error | 2-space indent; `- page:` inside `contents:`; `path:` is relative to the version YAML file |\n| Page 404 in preview | `slug:` missing or duplicated in the same section; confirm in `vXX.YY.yml` |\n| `{{ variable }}` shows literally on site | Not in `DEFAULT_VARIABLES` in `substitute_variables.py` — add it there |\n| MDX parse error | Replace bare `\u003Chttps:\u002F\u002F...>` with `[text](https:\u002F\u002F...)`; escape `\u003C` in prose with `&lt;` or backticks |\n| Old Sphinx URL breaks | Add a `redirects:` entry in `fern\u002Fdocs.yml` |\n| Library reference missing | Run `npm run generate:library` in `fern\u002F` (full reference; needs Fern auth). Or `npm run generate:library:local` without auth (Docker; beta, fewer pages). See `fern\u002FAUTODOCS_GUIDE.md`. |\n| Broken image | Path is relative to the MDX file; check `fern\u002Fassets\u002F` or `pages\u002F_images\u002F` exists |\n\n## Key References\n\n| File | Purpose |\n|---|---|\n| `fern\u002Fdocs.yml` | Site config, versions, redirects, libraries |\n| `fern\u002Fversions\u002FvXX.YY.yml` | Navigation tree for a version |\n| `fern\u002Fversions\u002FvXX.YY\u002Fpages\u002F` | MDX content for a version |\n| `fern\u002Fversions\u002Flatest.yml` | Symlink → current train's nav (do not edit) |\n| `fern\u002Fcomponents\u002F` | Custom TSX (footer, release banner) |\n| `fern\u002Fassets\u002F` | Shared images, SVGs, favicon |\n| `fern\u002Fsubstitute_variables.py` | Variable definitions + CI replacement |\n| `fern\u002FAUTODOCS_GUIDE.md` | Generating library reference MDX from source |\n| `fern\u002FREADME.md` | Full docs architecture guide |\n| `.github\u002Fworkflows\u002Ffern-docs-*.yml` | CI: validation, preview, publish |\n\n---\n",{"name":5,"description":7},"main","8a9a217c90127d424a8f503cb948698d7203002a",".claude\u002Fskills\u002Fnemo-curator-docs",374,"https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo","https:\u002F\u002Fnvidia.com\u002F","2026-11-12 02:39:28",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add NVIDIA-NeMo\u002FCurator --skill nemo-curator-docs",{"tool":44,"command":45},"bunx","bunx skills add NVIDIA-NeMo\u002FCurator --skill nemo-curator-docs",{"tool":47,"command":48},"pnpm","pnpm dlx skills add NVIDIA-NeMo\u002FCurator --skill nemo-curator-docs","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fnemo-curator-docs\u002FSKILL.md",true,[52,58],{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"references\u002Freal-teammate-pattern-2026-07-10.md","REFERENCE","参考文档",8236,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fhermes\u002Fskills\u002Fworkflow\u002Freal-claude-teammate-tmux\u002Freferences\u002Freal-teammate-pattern-2026-07-10.md",{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"templates\u002Fregression_contract_test.py","SCRIPT","脚本",4093,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fhermes\u002Fskills\u002Fworkflow\u002Freal-claude-teammate-tmux\u002Ftemplates\u002Fregression_contract_test.py",[65,79,107,121,136,142],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":25},"01M6BXJ86EP64TND1NAHC9MHSS","checkpoint-placement","Select a core-proven metadata checkpoint for same-dataset parameter feedback. Use after recipe validation and semantic critique, before authoritative smoke, when the user expects to tune a declared downstream decision after seeing results.","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002Fnemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Fcheckpoint-placement\u002FSKILL.md",[],[72,73,74,75,76,77,78],"checkpoint placement","checkpoint","feedback","critique","metadata","validation","core",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":101,"publishedAt":25},"01M6BXJ4WRPMMBPADDY22KS3RG","audio-stage-authoring","Make a new or existing NeMo Curator audio stage agent-ready so the audio agent can discover, configure and chain it. Use when adding an audio stage, writing or fixing its describe() contract or StageContract, adding *_key fields or semantic roles, writing a capability card, or when card conformance or assert_agent_ready fails. This is for authoring stage code in a Curator checkout, not for curating a dataset - use the audio-curation skill for that.","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002Fnemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Faudio-stage-authoring\u002FSKILL.md",[85,90,93,96],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":94,"categoryName":95,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[102,103,104,19,105,106],"audio stage authoring","Audio","configure","code","writing",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":115,"publishedAt":25},"01M6BXJ1FTZZ76B6E79ZCJP2Q6","audio-curation","Build and run a NeMo Curator audio curation pipeline from a natural-language goal (host-driven planner over the audio_agent tool core). Use for any audio, speech or audio-dataset task - quality filtering, transcription, WER filtering, VAD, diarization, ALM windowing, resampling, channel conversion, or inspecting an audio corpus. Route such work through this skill rather than writing ad-hoc ffprobe, librosa or soundfile scripts.","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002Fnemo_curator\u002Fstages\u002Faudio\u002Faudio_agent\u002Fskills\u002Faudio-curation\u002FSKILL.md",[113,114],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":94,"categoryName":95,"taxonomyType":88,"taxonomyTypeDesc":89},[116,103,117,118,19,119,120,78,106],"audio curation","tool","pipeline","speech","run",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":25},"01M6BXHT5YPZDFEMBJD7HRW5TB","getting-started","Set up NeMo Curator for data curation (text, image, video, audio)","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgetting-started\u002FSKILL.md",[127],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[129,19,130,131,132,133,134,135,103],"getting started","image","Video","data","SET","data curation","text",{"skillNo":137,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":141,"publishedAt":25},"01M6BXHQ573S6BCYDZ224MEX9K","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Faudio-curation\u002FSKILL.md",[140],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[103,116],{"skillNo":143,"name":67,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":25},"01M6BXHM5EPNGD9S4ED7P7KEYS","https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002FCurator\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcheckpoint-placement\u002FSKILL.md",[],[72,73]]