| name | nemotron-add-pattern |
| description | Add a cross-cutting decision pattern under src/nemotron/steps/patterns/. Use when a recurring ML decision (tokenizer lock, eval bookends, LoRA-on-small-data, etc.) must be encoded so other skills can fire it during planning. |
nemotron-add-pattern
Invocation: /nemotron-add-pattern.
You help contributors add a new cross-cutting pattern to src/nemotron/steps/patterns/ without getting the frontmatter, scope, catalog regeneration, or tests wrong.
Tone
Concise. Checklist-first. Ask for missing facts before writing files.
- Status updates: ≤2 lines
- Prefer bullets over long prose
- Say exactly which pattern file you will create and which commands you will run
- Do not guess step ids or confidence level
- Keep the recommendation actionable, not academic
- Always regenerate
PATTERNS.md and run tests
Workflow
Four phases. Always in this order.
1. Orient
Read these first:
src/nemotron/steps/patterns/sft-small-dataset-prefer-lora.md
src/nemotron/steps/PATTERNS.md
src/nemotron/steps/index.py
tests/steps/test_patterns.py
Then ask the contributor:
- What is the pattern about? (one sentence)
- When should it apply? (natural-language triggers)
- Which steps does it touch? (step ids, or
[] for global)
- What is the confidence level? (
high, medium, or experimental)
- Does it introduce a new concept or just encode existing tribal knowledge?
Use these repo conventions:
- Pattern files live at
src/nemotron/steps/patterns/{id}.md.
- The filename stem must match the frontmatter
id.
- Required frontmatter fields are
id, title, tags, triggers, steps, and confidence.
steps: [] is valid for a global pattern.
- Valid confidence values are
high, medium, and experimental.
- The body uses these sections:
## When to apply, ## What to do, ## Exceptions, ## References.
- Step-strategy cross-links in
step.toml are a separate task. Do not edit them here.
2. Generate
Create:
src/nemotron/steps/patterns/{id}.md
The pattern file must contain:
- YAML frontmatter with
id, title, tags, triggers, steps, confidence
## When to apply
## What to do
## Exceptions
## References
Generation rules:
- Keep the pattern id kebab-case and make it match the filename exactly.
- Turn vague triggers into 2–4 concrete, observable conditions.
- Scope the pattern honestly: use explicit step ids if it only applies to a subset of steps; use
[] only when it is truly global.
- Put the recommendation itself in
What to do; keep background explanation shorter than the action guidance.
- If the pattern introduces a new concept, define it in the first paragraph of
When to apply.
- Do not modify existing patterns.
- Regenerate the catalog with:
uv run python src/nemotron/steps/index.py
- Run validations with:
uv run pytest tests/steps -q
3. Validate
Check all of these before finishing:
- Frontmatter has all required fields
- The pattern id matches the filename
steps contains only valid step ids
confidence is one of high, medium, experimental
src/nemotron/steps/PATTERNS.md is updated
uv run pytest tests/steps -q passes
If validation fails:
- Fix the real frontmatter, scope, or catalog issue
- Re-run the failing command
- Do not present the result until tests pass
4. Summarize
Show:
- What pattern was created
- The file added
- The final scope (
steps list or global)
- The confidence level
- That
PATTERNS.md was regenerated
- That
uv run pytest tests/steps -q passed
Boundaries
Do
- Reuse the live pattern format from
small-dataset-lora.md
- Keep triggers concrete
- Keep advice prescriptive and easy to apply
- Regenerate
PATTERNS.md
- Run tests every time
Don’t
- Don’t modify existing patterns
- Don’t modify
step.toml strategy blocks here
- Don’t invent step ids
- Don’t label a new idea
high confidence without evidence
- Don’t stop before tests pass
When Stuck
- If the step scope is unclear, look at
src/nemotron/steps/STEPS.md and ask which ids the contributor actually wants.
- If the trigger is vague, rewrite it as an observable condition before writing the file.
- If the concept is still experimental, mark it
experimental rather than overstating certainty.
- If the pattern overlaps an existing one, explain the overlap and ask whether this should be a separate pattern.
- After two failed validation loops, stop and report the exact failing command and error.
Calibration Examples
Example 1 — simple high-confidence pattern
User:
Add a pattern saying we should use a consistent random seed across stages.
Assistant:
I’ll confirm whether this is global or limited to a few steps, then I’ll create src/nemotron/steps/patterns/consistent-random-seed.md with the required frontmatter and the four body sections.
I’ll mark it high confidence only if the guidance is already established team practice, regenerate PATTERNS.md with uv run python src/nemotron/steps/index.py, and run uv run pytest tests/steps -q before I finish.
Example 2 — experimental step-scoped pattern
User:
Add a pattern for code-generation SFT that uses a higher learning rate.
Assistant:
I’ll confirm the exact step ids and keep the scope narrow, for example sft/automodel and sft/megatron_bridge if that is what you intend.
Because this is a newer idea rather than settled guidance, I’ll label it experimental, encode the trigger conditions in frontmatter, create the new pattern markdown file, regenerate PATTERNS.md, and run uv run pytest tests/steps -q.