You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/datadesigner-docs/SKILL.md
+52-49Lines changed: 52 additions & 49 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,27 +16,23 @@ Current URL: **`datadesigner.docs.buildwithfern.com/nemo/datadesigner`** (see `i
16
16
17
17
## Scope Rule
18
18
19
-
**ALL doc edits happen under `fern/`.** The legacy `docs/` directory is the original MkDocs source — `docs/notebook_source/*.py`(jupytext) and `docs/devnotes/*.md` are still canonical for notebooks and dev notes (they feed Fern), but **do not add new top-level prose pages under `docs/`**. Concept pages, recipes, plugins, code reference — all of these live under `fern/versions/v0.5.8/pages/`.
19
+
**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/`.
20
20
21
-
## Versioning Model: Floating Latest
21
+
## Versioning Model
22
22
23
-
DataDesigner currently has Fern-native version entries backed by one shared migrated MDX tree. `latest` is a real rolling nav file; `v0.5.9`and `v0.5.8` are release nav files. All currently reuse `v0.5.8/pages/`.
23
+
`main` contains only the latest Fern authoring docs. Historical release snapshots live on the CI-managed `docs-website` branch and must not be edited on `main`.
24
24
25
25
```
26
26
fern/versions/
27
-
├── latest.yml ← rolling nav file (reuses ./v0.5.8/pages/...)
28
-
├── v0.5.9.yml ← release nav file (reuses ./v0.5.8/pages/...)
29
-
├── v0.5.8.yml ← release nav file (reuses ./v0.5.8/pages/...)
30
-
└── v0.5.8/pages/ ← shared migrated MDX tree
27
+
├── latest.yml ← authoring nav file
28
+
└── latest/pages/ ← authoring MDX tree
31
29
```
32
30
33
-
`docs.yml`registers `slug: latest`, `slug: v0.5.9`, and `slug: v0.5.8`. When you edit shared docs, edit `v0.5.8/pages/`. Add version-specific page copies only when content diverges.
31
+
`docs.yml`on `main` registers only `slug: latest`. When you edit docs, edit `latest/pages/` and `latest.yml`.
34
32
35
-
Dev Notes are rolling release: `latest.yml` can include posts from `main` that are not in the release nav yet. Frozen release navs (`v0.5.9.yml`, `v0.5.8.yml`) should include only posts available at that release point.
33
+
Dev Notes are patched into the published latest docs by CI. Add new posts to `latest/pages/devnotes/posts/` and `latest.yml` on `main`.
36
34
37
-
Released versions older than `v0.5.8` remain on the legacy MkDocs archive at `https://nvidia-nemo.github.io/DataDesigner/<version>/`. `docs.yml` redirects `/nemo/datadesigner/v<version>/...` to those archives for versions without a real Fern tree.
38
-
39
-
For future Fern-native releases, add a version YAML that reuses shared pages by default. Copy only pages that need version-specific content.
35
+
For future Fern-native releases, do not copy page trees by hand on `main`. The release workflow snapshots `latest` into a frozen version on `docs-website`.
4. `grep -rn "/concepts/seed-datasets" fern/versions/v0.5.8/pages/` and rewrite hits.
185
+
4. `grep -rn "/concepts/seed-datasets" fern/versions/latest/pages/` and rewrite hits.
192
186
193
187
---
194
188
@@ -263,9 +257,9 @@ Do **not** add `position:` (we use explicit nav order in the version YAML), `dat
263
257
264
258
## Dev Notes (Blog Posts)
265
259
266
-
Dev notes live under `fern/versions/v0.5.8/pages/devnotes/posts/`. They use the dev-notes kit components: **`<Authors>`, `<MetricsTable>`, `<TrajectoryViewer>`, `<ExpandableCode>`, `<CustomCard>`** (sources in `fern/components/`, CSS in `fern/styles/`).
260
+
Dev notes live under `fern/versions/latest/pages/devnotes/posts/`. They use the dev-notes kit components: **`<Authors>`, `<MetricsTable>`, `<TrajectoryViewer>`, `<ExpandableCode>`, `<CustomCard>`** (sources in `fern/components/`, CSS in `fern/styles/`).
267
261
268
-
For rolling posts on `main`, add the page and card to `latest.yml` first. Add the same nav entry to a release YAML only when that post is part of that release.
262
+
Add the page and card to `latest.yml`. Release snapshots are handled by CI on `docs-website`.
269
263
270
264
### Authors Byline
271
265
@@ -409,17 +403,32 @@ The converter (`fern/scripts/ipynb-to-fern-json.py`) **auto-strips the leading C
409
403
410
404
## Python API Reference (`libraries:`)
411
405
412
-
`docs.yml` declares a `libraries:` block pointing at `packages/data-designer-config/src/data_designer/config`. Local generation uses `py2fern` against that same source. Generated output lands at `fern/code-reference/data-designer/` - **gitignored**. To populate locally:
406
+
`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/`:
407
+
408
+
- `data-designer/`for `data_designer.config`
409
+
- `interface/`for `data_designer.interface`
410
+
- `engine/seed-readers/`
411
+
- `engine/processors/`
412
+
- `engine/mcp/`
413
+
- `engine/column-generators/`
414
+
415
+
To populate locally:
413
416
414
417
```bash
415
418
make generate-fern-api-reference
416
419
```
417
420
418
421
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.
419
422
420
-
The generated tree is wired into the nav via `versions/v0.5.8.yml`'s "Code Reference > Python API" folder entry (`folder: ../code-reference/data-designer`). The nav also includes prose pages under "Topic Overviews" — those are conceptual landings that link to the auto-generated reference.
423
+
The generated trees are wired into `versions/latest.yml` under `Code Reference`:
424
+
425
+
- `Config`contains prose pages plus `Config API` from `../code-reference/data-designer/data_designer/config`
426
+
- `Interface`contains prose pages plus `Interface API` from `../code-reference/interface/data_designer/interface`
427
+
- `Engine Extension API`contains prose pages plus the seed reader, processor, MCP runtime, and column generator API folders
421
428
422
-
To add another package as a library entry (e.g. engine or interface namespace):
429
+
There is no `Topic Overviews` section. Prose reference pages live beside the generated folders under `fern/versions/latest/pages/code_reference/`.
430
+
431
+
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:
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.
@@ -485,14 +488,14 @@ When the team adds a Fern preview workflow (modeled after Gym's `fern-docs-previ
485
488
486
489
## Cutting a New Version Train
487
490
488
-
Do not copy page trees by hand. Add a new version YAML that reuses shared pages by default; copy only pages that need version-specific content. If that becomes tedious, add a build-time materialization script before `fern generate --docs`.
491
+
Do not copy page trees by hand on `main`. The release workflow copies `latest/pages/` to a frozen `vX.Y.Z/pages/` tree on `docs-website`, updates the published versions list, checks the generated Fern docs, and publishes from `docs-website`.
489
492
490
493
## Debugging
491
494
492
495
| Symptom | Fix |
493
496
|---|---|
494
497
| `fern check` YAML error | 2-space indent; `- page:` inside `contents:`; `path:` is relative to the version YAML |
495
-
| Page 404 in preview | Section/page title mismatch — recompute slug from `v0.5.8.yml`, not from filename |
498
+
| Page 404 in preview | Section/page title mismatch — recompute slug from `latest.yml`, not from filename |
496
499
| `Could not parse expression with acorn` | Bare `{...}` JSON or pymdown attr_list; see MDX Gotchas |
497
500
| `Could not parse import/exports with acorn` | Missing blank line between top-level `import` statement and `# H1` body |
498
501
| `Unexpected character 'X' before name` | Likely `--8<--` snippet include or bare `<digit`; see MDX Gotchas |
@@ -508,4 +511,4 @@ Do not copy page trees by hand. Add a new version YAML that reuses shared pages
508
511
509
512
- Editing Python source under `packages/` — that's a code change, not a docs change.
510
513
- Adding a notebook tutorial's *code*: edit `docs/notebook_source/<name>.py`, not the converted `.ipynb` or the wrapper MDX.
511
-
- Editing dev note *prose*: edit the migrated MDX under `fern/versions/v0.5.8/pages/devnotes/posts/<name>.mdx`. (The original `docs/devnotes/posts/<name>.md` is no longer the source of truth — Fern is.)
514
+
- Editing dev note *prose*: edit the migrated MDX under `fern/versions/latest/pages/devnotes/posts/<name>.mdx`. (The original `docs/devnotes/posts/<name>.md` is no longer the source of truth — Fern is.)
0 commit comments