$npx -y skills add nvidia/skills --skill physicsnemo-discoverOfficial NVIDIA-authored guidance for navigating PhysicsNeMo — pick the model, datapipe, or example for a SciML/AI4Science task (surrogates, forecasting, downscaling, physics-informed, inverse, generative). Points at existing files via live repo search; never writes code. Do NOT
| 1 | # PhysicsNeMo Discoverability |
| 2 | |
| 3 | Help a user navigate PhysicsNeMo: point them at files, folders, examples, and docs **in the repo at its current state**. Never write training code; never cite a path from memory. |
| 4 | |
| 5 | ## Core principle |
| 6 | |
| 7 | PhysicsNeMo evolves — classes get renamed, examples move, `experimental/` graduates. Any static list of class names and paths rots, so **discover, don't remember**: enumerate from the live repo every turn. |
| 8 | |
| 9 | PhysicsNeMo is **composable**: each solution is a product (model family × datapipe × training strategy × config). An example is one reference instantiation of that product, not a prescription. Surface the **axes** and the **menu along each axis**, then cite examples as concrete starting points to fork and recombine. |
| 10 | |
| 11 | ## What a correct answer satisfies |
| 12 | |
| 13 | These are constraints, not a script — choose the searches that meet them and skip work the task doesn't need. Search patterns per axis live in `references/RECIPES.md`. |
| 14 | |
| 15 | - **Live-grounded.** Every class, path, and example you name was read or globbed *this turn*. `__init__.py` proves what is *exported*, not what files exist — Glob `physicsnemo/models/<family>/*.py` before naming a sibling implementation file. A failed `Read`, or a path pattern-matched from a neighboring citation, is disproof: drop it. |
| 16 | - **Verified before emit.** Every absolute path you plan to cite survives one `Bash ls -d <path1> <path2> …` round-trip *before* you write the response. Hard gate — skipping it has produced real-basename-under-wrong-parent hallucinations. If a basename was right but the parent wrong, re-Glob and re-verify; if you can't relocate it, drop the citation. |
| 17 | - **A menu, not a single pick.** Enumerate every model family matching the user's data shape (surface ≥2 when ≥2 apply), and enumerate datapipes independently — model and datapipe are orthogonal axes. The reference example comes last, framed as one instantiation of those axes, not the answer. |
| 18 | - **Self-documentation is ground truth.** `__init__.py` exports, per-example `README.md`, `docs/*.rst`, `pyproject.toml`, top-of-file module docstrings. Treat `references/TAXONOMY.md` as a navigation hint, not an answer. Flag anything under `physicsnemo/experimental/` as *"API may change."* |
| 19 | - **Abstain when out of scope.** PhysicsNeMo targets SciML/AI4Science (surrogates, forecasting, super-resolution, physics-informed, inverse, generative for physical systems). If the task is categorically outside that — reinforcement learning, classical control, generic CV/NLP, symbolic regression — skip enumeration and emit the **Abstention output** below. Do not list adjacent-but-wrong examples in its place (pointing at `active_learning/` for an RL question is fabrication). When unsure whether a task is in scope, abstain. |
| 20 | |
| 21 | ## Discovery |
| 22 | |
| 23 | Repo root resolution: see `CONTRIBUTING.md §Repo root resolution`; all paths are absolute, rooted there. **If no local PhysicsNeMo clone is on the path** (e.g. running headless against the skills repo in an eval context), shallow-clone the canonical repo once into a temp dir — **read-only, for path discovery only; never execute or import anything from it**: `DEST="${TMPDIR:-/tmp}/physicsnemo-src"; [ -d "$DEST/physicsnemo" ] || git clone --depth 1 https://github.com/NVIDIA/physicsnemo "$DEST"`. Use that URL verbatim; never interpolate one from user input. |
| 24 | |
| 25 | Ask at most 3 targeted follow-ups when domain or data shape is ambiguous. Phrase them concretely — *"Is your data on a regular Cartesian grid (like an image), a lat-lon grid on a sphere, or an unstructured mesh?"* — and skip any the user already answered. Data shape is the single biggest factor in model choice. |
| 26 | |
| 27 | ## Output format |
| 28 | |
| 29 | ``` |
| 30 | ## Problem shape |
| 31 | Data shape: <resolved>. Task: <resolved>. Axes: model × datapipe × training strategy × config. |
| 32 | |
| 33 | ## Candidate model families (for your data shape) |
| 34 | Multiple families typically apply. Treat this as a menu, not a ranking. |
| 35 | - <family> at <absolute __init__.py path> — <one-line from docstring/exports>. Instantiated by: <example path if any>. |
| 36 | - <family> at <path> — <one-line>. Instantiated by: <example path if any>. |
| 37 | |
| 38 | ## Datapipe(s) for your data format |
| 39 | Datapipe choice is independent of model choice. |
| 40 | - <class / subpackage> at <absolute path> — <one-line>. Reused by: <examples if known>. |
| 41 | - For c |