Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/agents/docs-searcher.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Brief summary of what was found and any recommendations for the user.
- Only include results that are actually relevant to the search topic
- If no relevant documentation is found, clearly state that
- Keep excerpts concise but include enough context to be useful
- Prioritize user guides and examples over API reference when both exist
- Prioritize user guides, concepts, tutorials, and recipes according to the user's task
- If the docs/ folder doesn't exist or is empty, report that clearly

## Search Strategy
Expand Down
2 changes: 1 addition & 1 deletion .agents/recipes/code-quality/recipe.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ Examples of things to test (pick 2-3 per run, and invent new ones):
- Column names with special characters or very long strings
- Recently changed validators (check `git log --oneline -10 -- packages/*/src/data_designer/config/`)

**API reference:**
**Useful imports:**

```python
from data_designer.config.config_builder import DataDesignerConfigBuilder
Expand Down
3 changes: 0 additions & 3 deletions .agents/recipes/docs-and-references/recipe.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,6 @@ Review for accuracy against the current code:
the most recent 3-5 posts for references to functions, classes, or
architecture that have since been modified.

**Code reference** (`docs/code_reference/`):
- Check that autodoc module paths point to modules that still exist.

**Prioritize by risk of drift**: pages with the most code symbols referenced
are most likely to be stale. Don't read every page - sample 5-10 high-value
pages and flag patterns.
Expand Down
2 changes: 1 addition & 1 deletion .agents/recipes/test-health/recipe.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ without at least one provider configured. Stick to config-layer checks
(`DataDesignerConfigBuilder.build()`, column type resolution) which do
not require providers.

**API reference** for writing checks:
**Useful imports** for writing checks:

```python
from data_designer.config.config_builder import DataDesignerConfigBuilder
Expand Down
58 changes: 4 additions & 54 deletions .agents/skills/datadesigner-docs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ description: >
Maintain the NeMo Data Designer Fern docs site under fern/. Use for any
documentation change. Triggered by: "edit docs", "add doc page", "update
docs", "rename page", "fix broken link", "add redirect", "preview docs",
"publish docs", "regenerate notebooks", "update dev note", "add API
reference", any request that touches `fern/`.
"publish docs", "regenerate notebooks", "update dev note", any request
that touches `fern/`.
---

# Data Designer Docs Maintenance
Expand All @@ -16,7 +16,7 @@ Current URL: **`datadesigner.docs.buildwithfern.com/nemo/datadesigner`** (see `i

## Scope Rule

**ALL doc edits happen under `fern/`.** The legacy `docs/` directory is the original MkDocs source. `docs/notebook_source/*.py` remains canonical for notebook code, but **do not add new top-level prose pages under `docs/`**. Concept pages, recipes, plugins, code reference, and Dev Notes prose live under `fern/versions/latest/pages/`.
**ALL doc edits happen under `fern/`.** The legacy `docs/` directory is the original MkDocs source. `docs/notebook_source/*.py` remains canonical for notebook code, but **do not add new top-level prose pages under `docs/`**. Concept pages, recipes, plugins, and Dev Notes prose live under `fern/versions/latest/pages/`.

## Versioning Model

Expand All @@ -39,7 +39,7 @@ For future Fern-native releases, do not copy page trees by hand on `main`. The r
```
fern/
├── README.md ← maintainer cheat sheet
├── docs.yml ← title, theme, versions:, libraries:, redirects, custom-domain
├── docs.yml ← title, theme, versions:, redirects, custom-domain
├── fern.config.json ← organization + fern-api version pin
├── main.css ← bundled NVIDIA theme CSS
├── assets/ ← logos, favicon, recipe assets, devnote post images (shared)
Expand All @@ -56,7 +56,6 @@ fern/
│ └── devnotes/ ← .authors.yml, authors-data.ts, per-post trajectory data
├── scripts/
│ └── ipynb-to-fern-json.py ← .ipynb → fern/components/notebooks/*.{json,ts}
├── code-reference/ ← gitignored; populated by `fern docs md generate`
└── versions/
├── latest.yml ← authoring navigation tree
└── latest/pages/ ← authoring MDX content
Expand Down Expand Up @@ -401,47 +400,6 @@ import notebook from "@/components/notebooks/1-the-basics";

The converter (`fern/scripts/ipynb-to-fern-json.py`) **auto-strips the leading Colab badge cell** — `<NotebookViewer>` renders its own banner from the `colabUrl` prop. Don't manually re-add it.

## Python API Reference (`libraries:`)

`docs.yml` keeps a Fern-native `libraries:` block for the config package. Local generation uses `py2fern` through `make generate-fern-api-reference` and writes multiple gitignored trees under `fern/code-reference/`:

- `data-designer/` for `data_designer.config`
- `interface/` for `data_designer.interface`
- `engine/seed-readers/`
- `engine/processors/`
- `engine/mcp/`
- `engine/column-generators/`

To populate locally:

```bash
make generate-fern-api-reference
```

This does not require Fern auth. Re-run when the upstream Python source changes. If you need to compare with Fern's native generator, use `make generate-fern-api-reference-native` with Fern auth.

The generated trees are wired into `versions/latest.yml` under `Code Reference`:

- `Config` contains prose pages plus `Config API` from `../code-reference/data-designer/data_designer/config`
- `Interface` contains prose pages plus `Interface API` from `../code-reference/interface/data_designer/interface`
- `Engine Extension API` contains prose pages plus the seed reader, processor, MCP runtime, and column generator API folders

There is no `Topic Overviews` section. Prose reference pages live beside the generated folders under `fern/versions/latest/pages/code_reference/`.

To add another generated package, update the `generate-fern-api-reference` target and add the matching `folder:` entry under the right `Code Reference` section. Only add a `libraries:` entry when Fern's native generator should know about that source:

```yaml
libraries:
data-designer:
input:
git: https://github.com/NVIDIA-NeMo/DataDesigner
subpath: packages/data-designer-config/src/data_designer/config
output: { path: ./code-reference/data-designer }
lang: python
```

Pyright needs a regular Python package (with `__init__.py`). The `data_designer` namespace itself is PEP 420 (no `__init__.py`), so always point at a sub-package one level deeper.

## MDX Gotchas (the ones that bit during migration)

| Pattern | Problem | Fix |
Expand All @@ -467,14 +425,6 @@ fern docs dev # localhost:3000 hot-reload preview

`fern check` must pass before commit. The local broken-link checker has known false positives — it computes URLs from file paths instead of from slugified nav titles, so cross-section absolute links sometimes flag incorrectly. Spot-check by clicking through the dev server.

To generate the API reference for local preview:

```bash
make generate-fern-api-reference # py2fern; populates fern/code-reference/ (gitignored)
```

If the "Python API" sidebar folder is empty, you forgot this step.

## Commit & Preview

```bash
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/docs-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,7 @@ jobs:
cd "$FERN_PREVIEW_ROOT"
make check-fern-docs \
DOCS_PYTHON="$GITHUB_WORKSPACE/.venv/bin/python" \
DOCS_JUPYTEXT="$GITHUB_WORKSPACE/.venv/bin/jupytext" \
DOCS_PY2FERN="$GITHUB_WORKSPACE/.venv/bin/py2fern"
DOCS_JUPYTEXT="$GITHUB_WORKSPACE/.venv/bin/jupytext"

- name: Skip hosted previews for fork PRs
if: github.event.pull_request.head.repo.full_name != github.repository
Expand Down
4 changes: 0 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,6 @@ packages/data-designer/README.md
# Claude worktrees
.claude/worktrees/

# Fern libraries output — generated by `fern docs md generate` from `libraries:` in fern/docs.yml.
# Regenerate locally (no token needed) or in CI before publishing.
fern/code-reference/

# Fern notebook output - generated by `make generate-fern-notebooks`.
fern/components/notebooks/*.json
fern/components/notebooks/*.ts
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ Data Designer is migrating from MkDocs to Fern over several releases. Until the
- Use `make serve-docs-locally` to preview the legacy MkDocs site.
- Use `make check-fern-docs` to regenerate local Fern artifacts and validate the Fern site.
- Fern release publishing snapshots versioned docs into the CI-managed `docs-website` branch automatically.
- Do not commit generated Fern API reference or notebook artifacts.
- Do not commit generated notebook artifacts.

---

Expand Down
30 changes: 2 additions & 28 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,6 @@ help:
@echo " generate-colab-notebooks - Generate Colab-compatible notebooks"
@echo " generate-fern-notebooks - Convert docs/notebook_source/*.py → fern/components/notebooks/{json,ts}"
@echo " generate-fern-notebooks-with-outputs - Full pipeline: execute notebooks (needs API key), colabify, convert to Fern"
@echo " generate-fern-api-reference - Generate local Fern API reference with py2fern"
@echo " generate-fern-api-reference-native - Generate Fern API reference with Fern CLI (requires auth)"
@echo " install-docs-deps - Install docs and notebook dependencies"
@echo " prepare-fern-release VERSION=X.Y.Z - Add or refresh Fern version files for release preview"
@echo " check-fern-release-version VERSION=X.Y.Z - Verify Fern has a version entry for release publishing"
Expand Down Expand Up @@ -474,15 +472,6 @@ DOCS_PYTHON_VERSION ?= 3.13
DOCS_PYTHON ?= .venv/bin/python
DOCS_JUPYTEXT ?= .venv/bin/jupytext
DOCS_MKDOCS ?= .venv/bin/mkdocs
DOCS_PY2FERN ?= .venv/bin/py2fern
FERN_API_REFERENCE_OUTPUT ?= fern/code-reference
FERN_API_REFERENCE_CONFIG_OUTPUT ?= $(FERN_API_REFERENCE_OUTPUT)/data-designer
FERN_API_REFERENCE_CONFIG_SOURCE ?= packages/data-designer-config/src/data_designer/config
FERN_API_REFERENCE_INTERFACE_SOURCE ?= packages/data-designer/src/data_designer/interface
FERN_API_REFERENCE_ENGINE_COLUMN_GENERATORS_SOURCE ?= packages/data-designer-engine/src/data_designer/engine/column_generators/generators/base.py
FERN_API_REFERENCE_ENGINE_MCP_SOURCE ?= packages/data-designer-engine/src/data_designer/engine/mcp
FERN_API_REFERENCE_ENGINE_PROCESSORS_SOURCE ?= packages/data-designer-engine/src/data_designer/engine/processing/processors
FERN_API_REFERENCE_ENGINE_SEED_READERS_SOURCE ?= packages/data-designer-engine/src/data_designer/engine/resources/seed_reader.py
FERN_VERSION ?= $(shell jq -r .version fern/fern.config.json)
FERN ?= npx -y fern-api@$(FERN_VERSION)

Expand All @@ -501,21 +490,6 @@ serve-docs-locally:
@echo "📝 Building and serving docs (Python $(DOCS_PYTHON_VERSION))..."
$(DOCS_MKDOCS) serve --livereload

generate-fern-api-reference:
@echo "📚 Generating Fern API reference with py2fern ($(DOCS_PY2FERN))..."
@rm -rf $(FERN_API_REFERENCE_OUTPUT)
$(DOCS_PY2FERN) write $(FERN_API_REFERENCE_CONFIG_SOURCE) --module data_designer.config --output $(FERN_API_REFERENCE_CONFIG_OUTPUT) --clean
$(DOCS_PY2FERN) write $(FERN_API_REFERENCE_INTERFACE_SOURCE) --module data_designer.interface --output $(FERN_API_REFERENCE_OUTPUT)/interface --clean
$(DOCS_PY2FERN) write $(FERN_API_REFERENCE_ENGINE_COLUMN_GENERATORS_SOURCE) --module data_designer.engine.column_generators.generators.base --output $(FERN_API_REFERENCE_OUTPUT)/engine/column-generators --clean
$(DOCS_PY2FERN) write $(FERN_API_REFERENCE_ENGINE_MCP_SOURCE) --module data_designer.engine.mcp --output $(FERN_API_REFERENCE_OUTPUT)/engine/mcp --clean
$(DOCS_PY2FERN) write $(FERN_API_REFERENCE_ENGINE_PROCESSORS_SOURCE) --module data_designer.engine.processing.processors --output $(FERN_API_REFERENCE_OUTPUT)/engine/processors --clean
$(DOCS_PY2FERN) write $(FERN_API_REFERENCE_ENGINE_SEED_READERS_SOURCE) --module data_designer.engine.resources.seed_reader --output $(FERN_API_REFERENCE_OUTPUT)/engine/seed-readers --clean
$(DOCS_PYTHON) fern/scripts/normalize-py2fern-indexes.py $(FERN_API_REFERENCE_OUTPUT)

generate-fern-api-reference-native:
@echo "📚 Generating Fern API reference with Fern CLI..."
cd fern && $(FERN) docs md generate

prepare-fern-release:
ifndef VERSION
$(error VERSION is required, e.g. make prepare-fern-release VERSION=0.5.10)
Expand All @@ -528,7 +502,7 @@ ifndef VERSION
endif
$(DOCS_PYTHON) fern/scripts/fern-release-version.py check --version $(VERSION) $(if $(REQUIRE_LATEST),--require-latest-matches-release,)

prepare-fern-docs: generate-fern-api-reference generate-fern-notebooks
prepare-fern-docs: generate-fern-notebooks
@echo "✅ Fern local artifacts ready"

check-fern-docs: prepare-fern-docs
Expand Down Expand Up @@ -759,7 +733,7 @@ clean-test-coverage:
coverage coverage-config coverage-engine coverage-interface \
format format-check format-check-config format-check-engine format-check-interface \
format-config format-engine format-interface \
generate-colab-notebooks generate-fern-api-reference generate-fern-api-reference-native generate-fern-notebooks generate-fern-notebooks-with-outputs help \
generate-colab-notebooks generate-fern-notebooks generate-fern-notebooks-with-outputs help \
install install-dev install-dev-notebooks install-dev-recipes install-docs-deps \
lint lint-config lint-engine lint-fix lint-fix-config lint-fix-engine lint-fix-interface lint-interface \
perf-import perf-import-runtime prepare-fern-docs prepare-fern-release publish serve-docs-locally serve-fern-docs-locally show-versions \
Expand Down
31 changes: 0 additions & 31 deletions docs/code_reference/config/analysis.md

This file was deleted.

18 changes: 0 additions & 18 deletions docs/code_reference/config/column_configs.md

This file was deleted.

10 changes: 0 additions & 10 deletions docs/code_reference/config/config_builder.md

This file was deleted.

7 changes: 0 additions & 7 deletions docs/code_reference/config/data_designer_config.md

This file was deleted.

7 changes: 0 additions & 7 deletions docs/code_reference/config/index.md

This file was deleted.

Loading
Loading