nemotron-customize
IMPORTANT: Read this file before answering any nemotron-customize,
Nemotron customization, Curator curation, translation, SFT, PEFT, RL,
conversion, optimization, checkpoint or existing/hosted-endpoint evaluation, or
multi-step pipeline request. This applies whether the user names one step or
asks you to compose several steps into a pipeline.
Evaluation requests count even when no training is involved: "evaluate",
"benchmark", "smoke test", or "score" an existing/hosted endpoint, an API/model
ID, or a deployed model all route to eval/model_eval. Read this skill for
those too.
Purpose
Turn a model-customization request into a repo-native Nemotron step pipeline.
Plan the DAG, validate artifact wiring, and create only the YAML/config files
needed to run existing steps.
Use this skill only for inspecting, configuring, validating, running, or
submitting existing Nemotron steps or multi-step training/customization
pipelines. For frontend, dashboard, visualization, generic ML advice,
billing/access, or unrelated coding tasks, stop with a short scope note and do
not inspect the step catalog or edit files in that turn.
Prerequisites
- A checkout of the Nemotron repo with
src/nemotron/steps/ present; run from
the repo root.
uv available to invoke uv run nemotron steps ....
- For remote execution: an env profile TOML (
NEMOTRON_ENV_FILE or
env*.toml) with a section matching the selected step.
- For hosted services (translation, hosted eval): the auth environment variable
expected by the step (for example
NVIDIA_API_KEY), exported in the
environment — never inlined or committed.
- User-provided concrete values (model/checkpoint, data paths, output dir,
hardware/GPU count) before any command is presented as runnable.
Limitations
- Does not invent new catalog steps. When no existing step, runner, recipe, CLI,
or config can satisfy the request, it names the gap (Explorer mode) instead of
fabricating a step.
- Produces YAML/config for existing steps; new Python/shell is out of scope
except in Explorer mode after the gap is approved.
- Not for deployment-only/serving, frontend, dashboards, generic ML advice, or
non-Nemotron tasks.
- Does not guess concrete values (paths, model IDs, GPU counts, profiles); it
asks or returns
Blocked when they are missing.
Core Rule
Use bundled references first. The references/ folder is the first decision
surface for routing, artifacts, patterns, hardware heuristics, and command
shape. Use src/nemotron/steps/... only as a live verification/fallback source
when you need exact current config fields, manifests, runner imports, or details
missing from bundled references.
If sources disagree:
- Checked live repo files win for exact execution.
- Bundled references win for initial routing and planning.
- Upstream docs/context packs are used only for exceptional code generation
or library API details.
Before You Begin
- Read this
SKILL.md workflow and the relevant bundled reference before
opening repo source files.
- Route from
references/CATALOG.md and references/ARTIFACTS.md before any
broad repo exploration. Once a route is determined, verify only the selected
live step/config/env files needed for the answer.
- Do not emit commands with fake paths, placeholder model IDs, guessed task IDs,
guessed batch profiles, or default auth variable names presented as facts.
Ask for missing concrete values or return a
Blocked handoff.
- Use
references/COMMANDS.md as the authoritative checklist before
finalizing configs or execution commands.
- For pipeline requests, plan before editing. Do not create or modify files
until the DAG, artifact edges, required inputs, and validation checks are
stated and approved.
- For one-shot command requests, prefer a complete parameterized command in one
response over exploratory prose, but only after required inputs are known.
If the user already provides the needed values and asks for only a command,
answer with the command first and keep explanation minimal.
- Output discipline (keeps responses tight): emit one command block per step,
include only flags the step actually defines, and add no speculative or
invented flags. Keep narrative to a few lines — the command plus the required
safety/profile callouts, not a tutorial. Do not restate reference content the
user did not ask for.
- Do not spawn subagents for one-shot command lookup. Use the bundled command
reference directly; verify only the selected step if needed.
Safety
Keep Bash scoped to repo-safe commands such as uv run nemotron steps ...,
targeted tests, git status/diff, and config validation. Never run environment
dumps (env, printenv, broad export) or commands that expose secret values.
For remote submissions, destructive changes, or expensive launches, confirm
before execution.
When inspecting env/config files, avoid printing whole files that may contain
secrets. Use targeted reads, report only section names and env-var names, and
redact values for fields containing token, key, secret, password,
credential, or auth.
Reference Map
| Question |
Read first |
Live fallback / verification |
| Which step or category fits? |
references/CATALOG.md |
uv run nemotron steps list/show, then selected step.toml |
| Do artifacts chain? |
references/ARTIFACTS.md |
src/nemotron/steps/types.toml |
| What run shape should I emit? |
references/COMMANDS.md |
checked-in config YAML plus active profile TOML |
| Remote profile generation or selection |
references/COMMANDS.md |
active NEMOTRON_ENV_FILE, env.toml, or env.*.toml |
| What hardware/backend should I recommend? |
references/HARDWARE.md |
selected step [[models]] and [[strategies]] |
| Which cross-step guardrails apply? |
references/PATTERNS.md |
src/nemotron/steps/patterns/<id>.md |
| How do I run the full workflow? |
references/WORKFLOW.md |
selected step configs, step.py, and runners |
| Which upstream library API should generated code use? |
references/context/index.toml -> matching pack |
selected step.py, _runners/, upstream docs |
| New project scaffold, only when existing repo code cannot support the request |
references/act/PROJECT.md |
existing repo project/recipe shape |
| Per-stage code rules, only when existing repo code cannot support the request |
references/act/STAGE.md |
selected step.py and shared runner |
Do not start by reading category READMEs or step.toml for ordinary decisions.
Select candidates from bundled references, then verify exact live details before
writing configs or final commands.
Routing
Use references/CATALOG.md as the authoritative home for step selection and
route-specific fast paths. Use ARTIFACTS.md, PATTERNS.md, and HARDWARE.md
only to resolve artifact, cross-step, or hardware constraints after the catalog
narrows the route.
Each step is independent and stitching steps together is your job. Compose any
pipeline by artifact matching from the user's end goal: chain a step only when
the next step consumes an artifact type nothing upstream already produces. Do
not rely on fixed, named step combinations.
Instructions
Follow the flow that matches the request: a recommendation/plan, a single-step
command, or a multi-step pipeline. In all cases, route from the bundled
references first, gather required inputs, and verify the selected live step
before presenting anything as runnable.
Recommendation Response
Use this shape for planning answers:
Decision, Why, Required inputs, Config/command, Avoid, and Next step.
Call out the stack to avoid when the user's constraints make it a poor fit.
Whenever the answer includes a command that touches a hosted service or remote
execution, also state, in the answer:
- The auth env-var name and that its value must be exported in the environment,
never inlined or committed (never print the value).
- For
--batch/--run, the env TOML profile prerequisite; if no profile
exists, mark the command Blocked or give the local --dry-run shape.
Single-Step Command Flow
- Confirm repo root has
pyproject.toml and src/nemotron/steps/.
- Read
references/CATALOG.md and the selected section of
references/COMMANDS.md.
- Verify the selected live step with
uv run nemotron steps show <step_id>
when available, or the selected step.toml when the CLI is unavailable.
- Read the requested checked-in config or user overlay before emitting the
command.
- For remote execution, read
NEMOTRON_ENV_FILE or repo-root env*.toml and
pick an actual section whose profile matches the step.
- Emit the full command in one reply with the source tier:
Verified, Repo-grounded, Reference-grounded, or Blocked.
Canonical command shapes live in references/COMMANDS.md.
Pipeline Workflow
For pipelines with two or more stages, use Orient -> Plan -> Act -> Verify.
Read references/WORKFLOW.md for the phase checklist.
- Orient from bundled references and user constraints.
- Plan a DAG with artifact types, configs, patterns, and validation checks.
- Wait for approval before writing configs or code.
- Act with YAML/config-only changes whenever an existing step can satisfy the
request.
- Verify every generated YAML, artifact edge, command, and README command
before reporting completion.
Catalog Mode
Use when the request maps to existing steps. Fast path:
references/CATALOG.md -> references/ARTIFACTS.md ->
references/COMMANDS.md -> verify selected live manifest/config/profile ->
add a new named config under the selected step's config/ directory.
Customization Surface
- Always customize through the step catalog under
src/nemotron/steps/. Never
divert to alternate recipe CLIs such as src/nemotron/cli/commands/super3/ or
.../nano3/, even for Super3/Nano3 work. If a request seems to need those,
map it back to the equivalent catalog step (e.g. sft/megatron_bridge).
- Make customizations as NEW config files inside the selected step's
src/nemotron/steps/<cat>/<step>/config/ directory, for example
src/nemotron/steps/sft/megatron_bridge/config/my_super3.yaml.
- Never edit the checked-in
default.yaml, tiny.yaml, other shipped configs,
step.toml, step.py, or shared runners. Adding a new config file beside
them is the expected and only customization write.
- Base new configs on the checked-in
default.yaml schema (read it, copy the
needed fields), then override only what the request requires.
Explorer Mode
Use only after confirming no existing step, runner, recipe, CLI, or YAML config
surface can satisfy the request. Full procedure lives in
references/WORKFLOW.md.
Configuration Alignment
Surface these constraints before commands or config writes:
- SFT packing
pack_size, Megatron-Bridge seq_length, packed sequence size,
tokenizer, and chat template must match.
- Prepared
packed_parquet and binidx are tokenizer-locked; rebuild after
tokenizer, chat-template, sequence-length, split, or blend changes.
- Megatron-Bridge global batch size must be divisible by data-parallel size;
start distributed validation with micro batch size 1.
- TP/PP/CP/EP choices must fit GPU count, memory, topology, and model divisibility.
- LoRA merge requires the exact base checkpoint/model and tokenizer used during
adapter training.
- Conversion/eval of Megatron checkpoints should point at a concrete
iter_*
checkpoint, not a parent run directory.
- Hosted eval and translation configs store auth env-var names only, not values.
Operational Nuances
- Smoke configs (
tiny.yaml, tiny_chat.yaml) are wiring tests, not quality
evidence.
${art:...} references belong in recipe-backed configs; standalone YAML uses
plain paths.
- Keep pretraining
bin/idx data and blend.json from the same run/release.
- Write customized configs as new files in the step's
src/nemotron/steps/<cat>/<step>/config/ directory; never modify the
checked-in default.yaml or other shipped configs.
- For LoRA, preserve the exact base checkpoint and tokenizer/template metadata
needed by later merge/eval.
- For translation and hosted eval, mention auth environment variable names only,
never values.
Boundaries
Do:
- Always route through the step catalog under
src/nemotron/steps/; never use
alternate recipe CLIs (src/nemotron/cli/commands/super3|nano3/...).
- Reuse repo CLIs, runners, recipes, steps, and checked-in configs first.
- Customize by adding a new config under the step's
config/ directory; base it
on default.yaml rather than copying it blindly.
- Validate artifact edges and cite patterns that changed the plan.
- Ask about hardware/data/backend/output path when missing.
- Surface tradeoffs such as AutoModel vs Megatron-Bridge and full SFT vs LoRA.
Do not:
- Invent steps when a catalog step fits.
- Skip Plan for pipelines with two or more stages.
- Generate Python or shell when YAML is enough.
- Add monitoring/W&B unless asked.
- Assume GPU count, env profile, endpoint type, task ID, or auth value.
- Generate Slurm/Airflow/Kubeflow wrappers unless the request explicitly needs
deployment scaffolding.
- Edit checked-in step files (
default.yaml/tiny.yaml, other shipped configs,
step.toml, step.py, runners); only add a new config beside them.
- Restate all per-step rules in
SKILL.md; use bundled references and source
fallback.
Examples
Single-step routing (LoRA on a small box). User: "LoRA fine-tune a HF model
on 2 GPUs." Route per CATALOG.md -> peft/automodel (HF base + small GPU
count); do not offer Megatron-Bridge. Collect base model, JSONL data path,
output dir, LoRA rank/alpha, then emit one uv run nemotron steps run peft/automodel -c <config> --dry-run ... command.
Multi-step pipeline (Super3 SFT). User: "data prep + SFT for Super3." This is
two stages, so plan first: SFT on Super3 -> Megatron-Bridge, which consumes
packed_parquet, so data_prep/sft_packing is required upstream. Present the
DAG (sft_packing -> sft/megatron_bridge), align pack_size/seq_length/
tokenizer, wait for approval, then add new configs under
src/nemotron/steps/<step>/config/<name>.yaml. Super3 needs a remote profile;
state the env TOML prerequisite or mark Blocked.
Hosted-endpoint evaluation (no training). User: "benchmark my hosted model
endpoint." Route to eval/model_eval with -c tiny_chat. Collect endpoint URL,
model id, task IDs, and the auth env-var name (value exported, never inlined).
See references/COMMANDS.md Evaluation Examples.
Troubleshooting
| Situation |
Action |
| Artifact types do not chain |
Recheck references/ARTIFACTS.md; insert a converter or change the DAG before writing configs. |
Remote profile or --batch is unclear |
Read active env TOML; do not guess profile names. |
| Config key is unclear |
Verify selected checked-in config, step.py, and shared runner before editing. |
| Strategy points to a missing context pack |
Skip the pack, use catalog/pattern text, and flag the plan with WARNING: <topic> docs unavailable. |
| Hardware looks too small |
Use references/HARDWARE.md; suggest smaller model, AutoModel, then LoRA before full Megatron-Bridge. |
| Two Act attempts fail |
Stop, explain what was tried and failed, and ask how to proceed. |
| No existing repo path matches |
Check references/context/index.toml and selected source fallback; use Explorer mode only after naming the gap. |
1---2name: nemotron-customize-23description: Plan, configure, and chain repo-native Nemotron customization steps into single-step or multi-step pipelines: curation, translation, SFT/PEFT (AutoModel or Megatron-Bridge), pretraining/CPT, RL alignment (DPO/RLVR/GRPO/RLHF), BYOB/MCQ benchmarks, checkpoint conversion, ModelOpt optimization, env profiles, and evaluation of trained checkpoints or existing/hosted endpoints. Use when a request names a Nemotron step or workflow, or asks to clean, translate, train, fine-tune, align, convert, optimize, evaluate, or compose these into a pipeline. Do NOT use for frontend/dashboard/visualization work, generic ML advice, billing/access, or non-Nemotron coding tasks.4license: Apache-2.05---67# nemotron-customize89IMPORTANT: Read this file before answering any `nemotron-customize`,10Nemotron customization, Curator curation, translation, SFT, PEFT, RL,11conversion, optimization, checkpoint or existing/hosted-endpoint evaluation, or12multi-step pipeline request. This applies whether the user names one step or13asks you to compose several steps into a pipeline.1415Evaluation requests count even when no training is involved: "evaluate",16"benchmark", "smoke test", or "score" an existing/hosted endpoint, an API/model17ID, or a deployed model all route to `eval/model_eval`. Read this skill for18those too.1920## Purpose2122Turn a model-customization request into a repo-native Nemotron step pipeline.23Plan the DAG, validate artifact wiring, and create only the YAML/config files24needed to run existing steps.2526Use this skill only for inspecting, configuring, validating, running, or27submitting existing Nemotron steps or multi-step training/customization28pipelines. For frontend, dashboard, visualization, generic ML advice,29billing/access, or unrelated coding tasks, stop with a short scope note and do30not inspect the step catalog or edit files in that turn.3132## Prerequisites3334- A checkout of the Nemotron repo with `src/nemotron/steps/` present; run from35 the repo root.36- `uv` available to invoke `uv run nemotron steps ...`.37- For remote execution: an env profile TOML (`NEMOTRON_ENV_FILE` or38 `env*.toml`) with a section matching the selected step.39- For hosted services (translation, hosted eval): the auth environment variable40 expected by the step (for example `NVIDIA_API_KEY`), exported in the41 environment — never inlined or committed.42- User-provided concrete values (model/checkpoint, data paths, output dir,43 hardware/GPU count) before any command is presented as runnable.4445## Limitations4647- Does not invent new catalog steps. When no existing step, runner, recipe, CLI,48 or config can satisfy the request, it names the gap (Explorer mode) instead of49 fabricating a step.50- Produces YAML/config for existing steps; new Python/shell is out of scope51 except in Explorer mode after the gap is approved.52- Not for deployment-only/serving, frontend, dashboards, generic ML advice, or53 non-Nemotron tasks.54- Does not guess concrete values (paths, model IDs, GPU counts, profiles); it55 asks or returns `Blocked` when they are missing.5657## Core Rule5859Use bundled references first. The `references/` folder is the first decision60surface for routing, artifacts, patterns, hardware heuristics, and command61shape. Use `src/nemotron/steps/...` only as a live verification/fallback source62when you need exact current config fields, manifests, runner imports, or details63missing from bundled references.6465If sources disagree:66671. Checked live repo files win for exact execution.682. Bundled references win for initial routing and planning.693. Upstream docs/context packs are used only for exceptional code generation70 or library API details.7172## Before You Begin7374- Read this `SKILL.md` workflow and the relevant bundled reference before75 opening repo source files.76- Route from `references/CATALOG.md` and `references/ARTIFACTS.md` before any77 broad repo exploration. Once a route is determined, verify only the selected78 live step/config/env files needed for the answer.79- Do not emit commands with fake paths, placeholder model IDs, guessed task IDs,80 guessed batch profiles, or default auth variable names presented as facts.81 Ask for missing concrete values or return a `Blocked` handoff.82- Use `references/COMMANDS.md` as the authoritative checklist before83 finalizing configs or execution commands.84- For pipeline requests, plan before editing. Do not create or modify files85 until the DAG, artifact edges, required inputs, and validation checks are86 stated and approved.87- For one-shot command requests, prefer a complete parameterized command in one88 response over exploratory prose, but only after required inputs are known.89 If the user already provides the needed values and asks for only a command,90 answer with the command first and keep explanation minimal.91- Output discipline (keeps responses tight): emit one command block per step,92 include only flags the step actually defines, and add no speculative or93 invented flags. Keep narrative to a few lines — the command plus the required94 safety/profile callouts, not a tutorial. Do not restate reference content the95 user did not ask for.96- Do not spawn subagents for one-shot command lookup. Use the bundled command97 reference directly; verify only the selected step if needed.9899## Safety100101Keep Bash scoped to repo-safe commands such as `uv run nemotron steps ...`,102targeted tests, `git status/diff`, and config validation. Never run environment103dumps (`env`, `printenv`, broad `export`) or commands that expose secret values.104For remote submissions, destructive changes, or expensive launches, confirm105before execution.106107When inspecting env/config files, avoid printing whole files that may contain108secrets. Use targeted reads, report only section names and env-var names, and109redact values for fields containing `token`, `key`, `secret`, `password`,110`credential`, or `auth`.111112## Reference Map113114| Question | Read first | Live fallback / verification |115|---|---|---|116| Which step or category fits? | `references/CATALOG.md` | `uv run nemotron steps list/show`, then selected `step.toml` |117| Do artifacts chain? | `references/ARTIFACTS.md` | `src/nemotron/steps/types.toml` |118| What run shape should I emit? | `references/COMMANDS.md` | checked-in config YAML plus active profile TOML |119| Remote profile generation or selection | `references/COMMANDS.md` | active `NEMOTRON_ENV_FILE`, `env.toml`, or `env.*.toml` |120| What hardware/backend should I recommend? | `references/HARDWARE.md` | selected step `[[models]]` and `[[strategies]]` |121| Which cross-step guardrails apply? | `references/PATTERNS.md` | `src/nemotron/steps/patterns/<id>.md` |122| How do I run the full workflow? | `references/WORKFLOW.md` | selected step configs, `step.py`, and runners |123| Which upstream library API should generated code use? | `references/context/index.toml` -> matching pack | selected `step.py`, `_runners/`, upstream docs |124| New project scaffold, only when existing repo code cannot support the request | `references/act/PROJECT.md` | existing repo project/recipe shape |125| Per-stage code rules, only when existing repo code cannot support the request | `references/act/STAGE.md` | selected `step.py` and shared runner |126127Do not start by reading category READMEs or `step.toml` for ordinary decisions.128Select candidates from bundled references, then verify exact live details before129writing configs or final commands.130131## Routing132133Use `references/CATALOG.md` as the authoritative home for step selection and134route-specific fast paths. Use `ARTIFACTS.md`, `PATTERNS.md`, and `HARDWARE.md`135only to resolve artifact, cross-step, or hardware constraints after the catalog136narrows the route.137138Each step is independent and stitching steps together is your job. Compose any139pipeline by artifact matching from the user's end goal: chain a step only when140the next step consumes an artifact type nothing upstream already produces. Do141not rely on fixed, named step combinations.142143## Instructions144145Follow the flow that matches the request: a recommendation/plan, a single-step146command, or a multi-step pipeline. In all cases, route from the bundled147references first, gather required inputs, and verify the selected live step148before presenting anything as runnable.149150### Recommendation Response151152Use this shape for planning answers:153154`Decision`, `Why`, `Required inputs`, `Config/command`, `Avoid`, and `Next step`.155Call out the stack to avoid when the user's constraints make it a poor fit.156157Whenever the answer includes a command that touches a hosted service or remote158execution, also state, in the answer:159160- The auth env-var name and that its value must be exported in the environment,161 never inlined or committed (never print the value).162- For `--batch`/`--run`, the env TOML profile prerequisite; if no profile163 exists, mark the command `Blocked` or give the local `--dry-run` shape.164165### Single-Step Command Flow1661671. Confirm repo root has `pyproject.toml` and `src/nemotron/steps/`.1682. Read `references/CATALOG.md` and the selected section of169 `references/COMMANDS.md`.1703. Verify the selected live step with `uv run nemotron steps show <step_id>`171 when available, or the selected `step.toml` when the CLI is unavailable.1724. Read the requested checked-in config or user overlay before emitting the173 command.1745. For remote execution, read `NEMOTRON_ENV_FILE` or repo-root `env*.toml` and175 pick an actual section whose profile matches the step.1766. Emit the full command in one reply with the source tier:177 `Verified`, `Repo-grounded`, `Reference-grounded`, or `Blocked`.178179Canonical command shapes live in `references/COMMANDS.md`.180181### Pipeline Workflow182183For pipelines with two or more stages, use **Orient -> Plan -> Act -> Verify**.184Read `references/WORKFLOW.md` for the phase checklist.185186- Orient from bundled references and user constraints.187- Plan a DAG with artifact types, configs, patterns, and validation checks.188- Wait for approval before writing configs or code.189- Act with YAML/config-only changes whenever an existing step can satisfy the190 request.191- Verify every generated YAML, artifact edge, command, and README command192 before reporting completion.193194### Catalog Mode195196Use when the request maps to existing steps. Fast path:197198`references/CATALOG.md` -> `references/ARTIFACTS.md` ->199`references/COMMANDS.md` -> verify selected live manifest/config/profile ->200add a new named config under the selected step's `config/` directory.201202## Customization Surface203204- Always customize through the step catalog under `src/nemotron/steps/`. Never205 divert to alternate recipe CLIs such as `src/nemotron/cli/commands/super3/` or206 `.../nano3/`, even for Super3/Nano3 work. If a request seems to need those,207 map it back to the equivalent catalog step (e.g. `sft/megatron_bridge`).208- Make customizations as NEW config files inside the selected step's209 `src/nemotron/steps/<cat>/<step>/config/` directory, for example210 `src/nemotron/steps/sft/megatron_bridge/config/my_super3.yaml`.211- Never edit the checked-in `default.yaml`, `tiny.yaml`, other shipped configs,212 `step.toml`, `step.py`, or shared runners. Adding a new config file beside213 them is the expected and only customization write.214- Base new configs on the checked-in `default.yaml` schema (read it, copy the215 needed fields), then override only what the request requires.216217### Explorer Mode218219Use only after confirming no existing step, runner, recipe, CLI, or YAML config220surface can satisfy the request. Full procedure lives in221`references/WORKFLOW.md`.222223## Configuration Alignment224225Surface these constraints before commands or config writes:226227- SFT packing `pack_size`, Megatron-Bridge `seq_length`, packed sequence size,228 tokenizer, and chat template must match.229- Prepared `packed_parquet` and `binidx` are tokenizer-locked; rebuild after230 tokenizer, chat-template, sequence-length, split, or blend changes.231- Megatron-Bridge global batch size must be divisible by data-parallel size;232 start distributed validation with micro batch size 1.233- TP/PP/CP/EP choices must fit GPU count, memory, topology, and model divisibility.234- LoRA merge requires the exact base checkpoint/model and tokenizer used during235 adapter training.236- Conversion/eval of Megatron checkpoints should point at a concrete `iter_*`237 checkpoint, not a parent run directory.238- Hosted eval and translation configs store auth env-var names only, not values.239240## Operational Nuances241242- Smoke configs (`tiny.yaml`, `tiny_chat.yaml`) are wiring tests, not quality243 evidence.244- `${art:...}` references belong in recipe-backed configs; standalone YAML uses245 plain paths.246- Keep pretraining `bin/idx` data and `blend.json` from the same run/release.247- Write customized configs as new files in the step's248 `src/nemotron/steps/<cat>/<step>/config/` directory; never modify the249 checked-in `default.yaml` or other shipped configs.250- For LoRA, preserve the exact base checkpoint and tokenizer/template metadata251 needed by later merge/eval.252- For translation and hosted eval, mention auth environment variable names only,253 never values.254255## Boundaries256257Do:258259- Always route through the step catalog under `src/nemotron/steps/`; never use260 alternate recipe CLIs (`src/nemotron/cli/commands/super3|nano3/...`).261- Reuse repo CLIs, runners, recipes, steps, and checked-in configs first.262- Customize by adding a new config under the step's `config/` directory; base it263 on `default.yaml` rather than copying it blindly.264- Validate artifact edges and cite patterns that changed the plan.265- Ask about hardware/data/backend/output path when missing.266- Surface tradeoffs such as AutoModel vs Megatron-Bridge and full SFT vs LoRA.267268Do not:269270- Invent steps when a catalog step fits.271- Skip Plan for pipelines with two or more stages.272- Generate Python or shell when YAML is enough.273- Add monitoring/W&B unless asked.274- Assume GPU count, env profile, endpoint type, task ID, or auth value.275- Generate Slurm/Airflow/Kubeflow wrappers unless the request explicitly needs276 deployment scaffolding.277- Edit checked-in step files (`default.yaml`/`tiny.yaml`, other shipped configs,278 `step.toml`, `step.py`, runners); only add a new config beside them.279- Restate all per-step rules in `SKILL.md`; use bundled references and source280 fallback.281282## Examples283284**Single-step routing (LoRA on a small box).** User: "LoRA fine-tune a HF model285on 2 GPUs." Route per `CATALOG.md` -> `peft/automodel` (HF base + small GPU286count); do not offer Megatron-Bridge. Collect base model, JSONL data path,287output dir, LoRA rank/alpha, then emit one `uv run nemotron steps run288peft/automodel -c <config> --dry-run ...` command.289290**Multi-step pipeline (Super3 SFT).** User: "data prep + SFT for Super3." This is291two stages, so plan first: SFT on Super3 -> Megatron-Bridge, which consumes292`packed_parquet`, so `data_prep/sft_packing` is required upstream. Present the293DAG (`sft_packing -> sft/megatron_bridge`), align `pack_size`/`seq_length`/294tokenizer, wait for approval, then add new configs under295`src/nemotron/steps/<step>/config/<name>.yaml`. Super3 needs a remote profile;296state the env TOML prerequisite or mark `Blocked`.297298**Hosted-endpoint evaluation (no training).** User: "benchmark my hosted model299endpoint." Route to `eval/model_eval` with `-c tiny_chat`. Collect endpoint URL,300model id, task IDs, and the auth env-var name (value exported, never inlined).301See `references/COMMANDS.md` Evaluation Examples.302303## Troubleshooting304305| Situation | Action |306|---|---|307| Artifact types do not chain | Recheck `references/ARTIFACTS.md`; insert a converter or change the DAG before writing configs. |308| Remote profile or `--batch` is unclear | Read active env TOML; do not guess profile names. |309| Config key is unclear | Verify selected checked-in config, `step.py`, and shared runner before editing. |310| Strategy points to a missing context pack | Skip the pack, use catalog/pattern text, and flag the plan with `WARNING: <topic> docs unavailable`. |311| Hardware looks too small | Use `references/HARDWARE.md`; suggest smaller model, AutoModel, then LoRA before full Megatron-Bridge. |312| Two Act attempts fail | Stop, explain what was tried and failed, and ask how to proceed. |313| No existing repo path matches | Check `references/context/index.toml` and selected source fallback; use Explorer mode only after naming the gap. |