This repo's history uses minor bumps for deliberate changes to what the
plugin is or ships (1.1.0 swapped the cuOpt skill, 1.2.0 consolidated it,
1.3.0 moved to discovery-first) and reserves patch bumps for the automated
"chore: sync skills" commits. Renaming the display name, rewriting the
listing copy, changing category, replacing the logo, and shipping #379's
routing taxonomy is the former, not the latter.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Rewrites the plugin description and store copy so the listing describes
what the plugin actually does now — route users to the right skill in the
live catalog — rather than the narrower framing it shipped with. Renames
the display name to "NVIDIA Skills" so the picker distinguishes the plugin
from NVIDIA the publisher, squares the logo to 512x512, moves the category
to Developer Tools, and adds website/privacy/terms URLs required for store
listings.
The version bump is what delivers the DOCA routing changes from #379 to
existing users. Claude Code resolves a plugin's version from plugin.json
first and skips updates when the resolved version is unchanged, so the
nightly SHA bumps in the Anthropic marketplace have not reached anyone
installed at 1.3.0 since that skill content merged.
Edits are to plugins.d/nvidia-skills.yml; the three plugin.json manifests
and three marketplace.json registries are regenerated output from
.github/scripts/build-plugins.sh.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
- Revert the plugins/nvidia-skills mirror copy of taxonomy-routing.md to main:
the signing pipeline treats two paths carrying the same skill as a duplicate
canonical content key (gate contract failure). The plugin bundle is updated
through its own flow.
- agents/openai.yaml: state that installs happen only with user approval, per
security scan finding SQP-2 (installer behavior must be disclosed).
Signed-off-by: Moshe Abramovitch <moshea@nvidia.com>
Replace the 12 bundled skills in the nvidia-skills plugin with the single
nvidia-skill-finder router skill, and bump the plugin to 1.3.0.
Rationale: bundling a curated subset loaded every SKILL.md into the harness
context on install and crowded the limited skill-context space. Shipping only
the finder lets it route users to any skill in the canonical skills/ catalog
on demand, so the full catalog stays reachable without the pre-load cost. It
also decouples versioning: catalog skills are version-managed independently of
the plugin, so a skill update no longer forces a plugin re-release.
- plugins.d/nvidia-skills.yml: include_skills -> nvidia-skill-finder only;
discovery-framed description/long_description/default prompt; version 1.3.0
- Regenerated plugins/nvidia-skills/ tree + claude/codex/cursor manifests and
marketplace entries via build-plugins.sh (drift-clean)
- plugins.d/README.md, plugins/README.md: mark curated mode as an unused
legacy fallback, correct the stale "nvidia-skills is curated" claim, and
document the Cursor plugin manifest/marketplace
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Upstream (NVIDIA/cuopt#1489) merged the three
cuopt-numerical-optimization-api-{c,cli,python} skills into a single
cuopt-numerical-optimization-api, now live in the catalog. The
nvidia-skills bundle still curated the old -python skill as its flagship
cuOpt example, so the canonical -python dir couldn't be removed without
breaking build-plugins.py and the Validate Plugins drift check.
Swap plugins.d/nvidia-skills.yml include_skills from
skills/cuopt-numerical-optimization-api-python/ to
skills/cuopt-numerical-optimization-api/ and regenerate, mirroring the
user-rules -> api-python swap in #305.
Structural change (skill set changed) auto-bumps the plugin minor
version 1.1.2 -> 1.2.0 via version-plugins.py, reflected in all three
(Claude, Codex, Cursor) plugin manifests. With the include no longer
pointing at it, the orphaned canonical -python dir can now be removed.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Replace cuopt-user-rules with cuopt-numerical-optimization-api-python in
the curated nvidia-skills bundle. cuopt-user-rules was pruned from the
cuOpt catalog in NVIDIA/skills#300, so it would dangle on the next sync;
cuopt-numerical-optimization-api-python is the flagship cuOpt skill (the
README quickstart example) and remains in the catalog.
Structural change (skill set changed) bumps the plugin minor version
1.0.3 -> 1.1.0 via version-plugins.py, reflected in all three (Claude,
Codex, Cursor) plugin manifests.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Add a Cursor track to the plugin build pipeline so each catalog plugin in
plugins.d/ also emits a .cursor-plugin/plugin.json manifest and is
registered in a top-level .cursor-plugin/marketplace.json, mirroring the
existing Claude (.claude-plugin/) and Codex (.codex-plugin/) tracks.
- build-plugins.py: add render_cursor_plugin_json() and
upsert_cursor_marketplace(); wire both into build_catalog_plugin() and
main(); include the cursor marketplace in the drift check.
- Cursor manifest omits the skills field so Cursor folder discovery scans
skills/ (verified loading via cursor-agent --plugin-dir); projects the
author down to {name}; strips the leading ./ from logo for
raw.githubusercontent resolution.
- Add .cursor-plugin/marketplace.json (owner per Cursor schema); document
marketplace_enabled.cursor in _defaults.yml and nvidia-skills.yml.
- validate-plugins.yml: watch .cursor-plugin/marketplace.json and document
the Cursor validation story.
- Update plugins.d/README.md and the build-plugins.py docstring.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Follow-up to the NemoClaw 10->1 consolidation (#288/#287). Adds the new
consolidated nemoclaw-user-guide skill to the nvidia-skills plugin
(it replaced nemoclaw-user-get-started, which was removed during consolidation)
and regenerates the plugin catalog.
Signed-off-by: mosheabr <257371078+mosheabr@users.noreply.github.com>
The NemoClaw team consolidated the 10 nemoclaw-user-* skills into a single
nemoclaw-user-guide skill upstream (NVIDIA/NemoClaw). Confirmed intentional
and final by the NemoClaw team.
- Repoint components.d/nemoclaw.yml to the single skills/nemoclaw-user-guide/ entry
- Remove the 10 now-orphaned skills/nemoclaw-user-* catalog dirs (no longer in source)
- De-reference nemoclaw-user-get-started from the nvidia-skills plugin and regenerate
the plugin catalog
Also resolves the two lingering NemoClaw content-integrity drifts
(nemoclaw-user-reference, nemoclaw-user-manage-sandboxes) since those source
dirs no longer exist. nemoclaw-user-guide is signed and passes content-integrity;
it will sync into the catalog on the next run.
Signed-off-by: mosheabr <257371078+mosheabr@users.noreply.github.com>
Broaden the nvidia-skills plugin from the cuOpt-only pilot to an
ecosystem-spanning curation (AIQ, NeMoClaw, Dynamo, Physical AI,
Omniverse, cuOpt). Bump descriptions, keywords, default prompts,
category, and the shared homepage URL in _defaults.yml. Rerun
build-plugins.sh so the regenerated plugin manifests, marketplace
entries, and copy-mode skills/ subtree match the new yaml. Track the
plugins/nvidia-skills/skills/ subtree so validate-plugins.yml's drift
check stays green on PRs that touch include_skills.
Also add a top-level plugins/README.md describing the
generated-vs-curated layout, and a "Renaming a plugin" section to
plugins.d/README.md covering the gotcha that the build script never
deletes the old plugin folder.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Drop the skill_files: symlink override from plugins.d/nvidia-skills.yml
so the plugin inherits skill_files: copy from _defaults.yml. Rebuild
materializes the two curated cuopt skills as real directory copies
(including the new skill-card.md and skill.oms.sig sidecars now
shipping from upstream cuopt) instead of relative symlinks.
This is the layout Codex local-marketplace install requires (codex
plugin add silently drops symlinks). Trade-off: plugins/<name>/skills/
now duplicates SKILL.md content, and copy-mode plugin trees go stale
whenever the daily skills sync touches a curated source path.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Append skills/cuopt/cuopt-user-rules to include_skills so the plugin
ships base end-user guidance (covers install / routing / LP / MILP / QP
/ server) alongside the existing cuopt-routing-api-python skill.
Trailing-slash also normalized for consistency.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Upstream's daily skills sync (7946eaa) reorganized skills/cuopt/ and
removed skills/NemoClaw/ entirely. The previous three curated entries
in plugins.d/nvidia-skills.yml were all broken:
- skills/cuopt/cuopt-install/ → removed upstream
- skills/cuopt/cuopt-numerical-optimization-api-python/ → split into
api-c / api-cli / server-api-python (no Python LP wrapper anymore)
- skills/NemoClaw/nemoclaw-user-get-started/ → entire NemoClaw
directory removed
Repoint the plugin at a single still-present skill,
skills/cuopt/cuopt-routing-api-python, so the build resolves and the
plugin ships symlinks consumers can actually follow. Wider re-curation
(adding more cuopt-* skills, restoring NemoClaw when it returns
upstream) deferred to a follow-up.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Set `skill_files: symlink` in plugins.d/nvidia-skills.yml. The on-disk
plugins/nvidia-skills/skills/ tree is now three relative symlinks back
into ./skills/<Product>/<skill>/ instead of rsync'd copies, eliminating
the duplicated SKILL.md content from the previous commit.
Compatible with `claude plugin install` and `npx skills add`. NOT
compatible with `codex plugin add` (Codex 0.132 silently drops symlinks
during install) — flip back to `copy` to test Codex.
The default in plugins.d/_defaults.yml stays `copy`; this is a
per-plugin override.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Rename the per-plugin YAML option that selects how `include_skills` show
up under `plugins/<name>/skills/` from `materialize_skills` to
`skill_files`, with values `copy | symlink`. Both modes remain supported;
this branch's purpose is to provide that choice.
`copy` stays the default in plugins.d/_defaults.yml — Codex 0.132 silently
drops symlinks during `codex plugin add`, so real files are required for
local-marketplace install. Plugins that ship to Claude / `npx skills add`
only can opt into `symlink` per-plugin to avoid SKILL.md duplication.
Touched:
- .github/scripts/build-plugins.py: read spec.get("skill_files"),
updated error message
- plugins.d/_defaults.yml: skill_files: copy
- plugins.d/nvidia-skills.yml: comment now points at skill_files (no
override; inherits copy)
- plugins.d/README.md: heading + override example
Also folds in the marketplace identity rename from another branch
(`nvidia-skills` → `nvidia-official` in both marketplace.json files) and
regenerates plugins/nvidia-skills/skills/ as real directories under the
new copy default.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Mirror the Codex side, which already declares "skills": "./skills/".
Claude expects an array of paths, so we emit ["./skills/"] (container
path; Claude scans immediate children for SKILL.md).
Signed-off-by: Jason Dudash <jdudash@nvidia.com>
Introduces a build pipeline that turns plugins.d/<name>.yml definitions
into installable plugin trees, keeping the canonical ./skills/ catalog
as the single source of truth.
- plugins.d/_defaults.yml + plugins.d/nvidia-skills.yml: hand-edited
plugin spec (curated subset, branding, capabilities)
- .github/scripts/build-plugins.{py,sh}: regenerates plugins/<name>/
(.{claude,codex}-plugin/plugin.json, skills/) and updates both
top-level marketplace.json files
- .github/workflows/validate-plugins.yml: PR drift guard
- plugins/nvidia-skills/: generated catalog plugin tree
- .claude-plugin/marketplace.json + .agents/plugins/marketplace.json:
top-level marketplaces pointing at the generated subtree
The build script supports two materialization strategies via the
`materialize_skills:` field:
copy - rsync skill content into the plugin tree. Works for Codex
and Claude install but duplicates SKILL.md.
symlink - relative symlinks back into ./skills/. No duplication and
works for Claude + npx skills, but Codex 0.132 silently
drops symlinks during `codex plugin add`.
nvidia-skills uses `symlink` on this branch to demonstrate the
no-duplication design; flip to `copy` in plugins.d/nvidia-skills.yml
when shipping for Codex local-marketplace support.
Signed-off-by: Jason Dudash <jdudash@nvidia.com>