Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/nvidia/cuopt/cuopt-skill-evolutionnpx skills add NVIDIA/cuopt --skill cuopt-skill-evolutiongit clone --depth 1 https://github.com/NVIDIA/cuoptWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00033 | $0.03433 |
| Opus 5 | $0.00016 | $0.01716 |
| Sonnet 5 | $0.00007 | $0.00687 |
| Haiku 4.5 | $0.00003 | $0.00343 |
Grade A, and why
cuopt-skill-evolution scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
- Add `eval()`, `exec()`, `os.system()`, `subprocess` with user input, or similar code injection patterns to examples How it starts
The opening of the file, as written. The whole thing — 219 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Skill Evolution
Skills improve through a single workflow: solve the user's problem, notice when a generalizable learning surfaced, score it if you can, then propose an update. The presence or absence of ground truth changes the confidence attached to a proposal, not the steps you take.
Trigger conditions
You MUST evaluate whether to enter the skill evolution workflow when ANY of these events occur during a conversation:
- User correction — The user corrects your output (e.g., "the answer should be X", "no, use Y instead of Z"). A correction means the skill that guided you was missing information.
- Retry after failure — Your code/formulation failed (wrong result, solver error, runtime exception) and you had to change approach. The fix likely contains a generalizable pattern.
- Undocumented behavior — You discovered an API behavior, default value, or constraint not mentioned in the relevant skill.
- Workaround — You had to work around a limitation or gotcha not documented in any skill.
- Variable type or modeling error — You chose the wrong variable type (e.g., CONTINUOUS vs INTEGER), constraint form, or objective structure, and the correction changed the result.
- Thrash before landing — You arrived at the right answer, but only after visibly thrashing: writing dead code that you then deleted, rewriting the same construct multiple times, or exploring 2+ approaches before settling. The final code looks fine, but the path to it shows the skill failed to point you at the right pattern from the start. The fix is usually a worked example or a "prefer X over Y" note that would have saved the detour.
When a trigger fires: Finish solving the user's problem first, then evaluate whether the learning is generalizable (not user-specific) before entering the workflow below.
Do NOT trigger for: Trivial typos, user-specific data/paths, one-off configuration issues, or problems already covered by existing skills.
Workflow
- Solve the user's problem first. Read the relevant skills, produce a solution, ship the fix. Skill evolution never blocks the user's task.
- Notice if a trigger fired (see Trigger conditions above). If nothing surfaced a generalizable learning, you are done.
- Try to score the learning — when ground truth exists. A test exists, a known-correct answer is available, the solver returns a check-able status, etc. If the score fails, refine the candidate learning — tune the pattern, fix the example, add the missing detail — and re-score. Iterate until it scores or you conclude no version of it will; in the latter case, drop the proposal rather than ship an unscored claim. (See Scoring criteria below for what counts as ground truth.)
- If no ground truth is available to score against — no test to run, no comparable answer to check against, no solver to invoke — skip step 3 and proceed with
scored: no. This is normal during inference-style interactions where the learning is qualitative — the proposal is still useful, just lower-confidence. - Distill, place, and propose (see sections below). Apply only after the user approves.
- Treat recurrence as evidence. When the same unscored insight surfaces in 2+ independent interactions, the recurrence is itself a signal. Promote the insight to a stronger proposal — note the prior occurrences in the trigger field rather than re-deriving from scratch.
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 219 lines · 33 tokens per session scan A 22a2dc3e25ec
cuopt-skill-evolution is a skill published in the GitHub repository NVIDIA/cuopt (1,032 stars, last pushed 3d ago), licensed Apache-2.0. It adds 33 tokens to every session and 3,433 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
add-cuda-kernel
Step-by-step tutorial for adding new CUDA kernels to FlashInfer.
debug-cuda-crash
Tutorial for debugging CUDA crashes using API logging.
add-jit-kernel
Step-by-step tutorial for adding a new lightweight JIT CUDA kernel to sglang's jitkernel module.
add-sgl-kernel
Step-by-step tutorial for adding a heavyweight AOT CUDA/C++ kernel to sgl-kernel (including tests & benchmarks).
benchmark-kernel
Guide for benchmarking FlashInfer kernels with CUPTI timing.
ml-training-recipes
Battle-tested PyTorch training recipes for all domains — LLMs, vision, diffusion, medical imaging, protein/drug discovery, spatial omics, genomics. Covers training loops, optimizer selection (AdamW, Muon), LR scheduling, mixed precision, debugging, and systematic experimentation. Use when training or fine-tuning…