CtrlK
BlogDocsLog inGet started
Tessl Logo

nemotron-add-pattern

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.

76

Quality

95%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

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:

  1. What is the pattern about? (one sentence)
  2. When should it apply? (natural-language triggers)
  3. Which steps does it touch? (step ids, or [] for global)
  4. What is the confidence level? (high, medium, or experimental)
  5. 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:

  1. Keep the pattern id kebab-case and make it match the filename exactly.
  2. Turn vague triggers into 2–4 concrete, observable conditions.
  3. Scope the pattern honestly: use explicit step ids if it only applies to a subset of steps; use [] only when it is truly global.
  4. Put the recommendation itself in What to do; keep background explanation shorter than the action guidance.
  5. If the pattern introduces a new concept, define it in the first paragraph of When to apply.
  6. Do not modify existing patterns.
  7. Regenerate the catalog with:
    • uv run python src/nemotron/steps/index.py
  8. 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:

  1. Fix the real frontmatter, scope, or catalog issue
  2. Re-run the failing command
  3. 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.

Repository
NVIDIA-NeMo/Nemotron
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.