chore(skills): restore all skills to .agents/skills - #10755
Conversation
Consolidate the agent skill catalog back into a single canonical .agents/skills/ directory. The contributor-only skills that were split out into .agents/contributor-skills/ were not discoverable by agents that scan .agents/skills, so move all 15 skills (4 customer bring-up skills + 11 contributor skills) into .agents/skills/. - .agents/skills/ is now a real directory holding every skill. - .agents/contributor-skills/ removed. - Root skills symlink now points to .agents/skills. - Repoint catalog/doc references and in-skill script paths. Signed-off-by: Dan Gil <dagil@nvidia.com>
There was a problem hiding this comment.
Devin Review found 1 potential issue.
⚠️ 1 issue in files not directly in the diff
⚠️ NVSkills CI dispatch broken: startswith("skills/") no longer matches after directory restructuring (.github/workflows/nvskills-team-request.yml:122)
The NVSkills CI trigger workflow at .github/workflows/nvskills-team-request.yml:122 checks whether any changed file startswith("skills/") to decide if it should dispatch the NVSkills CI pipeline. Before this PR, skills/ was a real directory, so files like skills/dynamo-interconnect-check/SKILL.md appeared in git with that prefix. After this PR, the canonical location is .agents/skills/ (a real directory) and skills is just a symlink. Git stores files at their canonical path, so the GitHub API will report changed skill files as .agents/skills/..., which does not match startswith("skills/"). This means NVSkills CI will silently stop triggering for any future PR that modifies skill files.
Affected workflow code
.github/workflows/nvskills-team-request.yml:120-126:
if printf '%s' "${files_json}" | jq -e '
any(.[]; .filename |
startswith("skills/") or
startswith("team-skills/") or
startswith("rules/team-rules/") or
startswith("plugins/")
)
' >/dev/null; thenThe check needs to also match .agents/skills/ prefixed paths.
WalkthroughThe root ChangesSkills path migration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/README.md`:
- Line 51: Replace absolute GitHub URLs to relocated skill files with relative
paths in the two affected documentation files to ensure lychee link validation
passes during pre-merge checks. In docs/README.md at line 51, change the
absolute URL pointing to dynamo-docs/SKILL.md to the relative path
`../.agents/skills/dynamo-docs/SKILL.md`. In
docs/digest/agentic-inference/agentic-inference.md at line 54, change the
absolute URL pointing to tool-parser-generator/SKILL.md to the relative path
`../../../../.agents/skills/tool-parser-generator/SKILL.md`. These relative
paths will correctly resolve to the skill files at their new locations during
the pre-merge validation on the main branch.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 7ed72c81-64c3-4633-9b9f-2af303396626
📒 Files selected for processing (59)
.agents/skills.agents/skills/debug-session/SKILL.md.agents/skills/dep-create/SKILL.md.agents/skills/dep-status/SKILL.md.agents/skills/dep-update/SKILL.md.agents/skills/dynamo-clone-hotpath-audit/SKILL.md.agents/skills/dynamo-clone-hotpath-audit/scripts/clone_inventory.py.agents/skills/dynamo-docs/SKILL.md.agents/skills/dynamo-frontend-benchmark/SKILL.md.agents/skills/dynamo-frontend-benchmark/scripts/analyze_folded.py.agents/skills/dynamo-frontend-benchmark/scripts/capture_offcpu.sh.agents/skills/dynamo-frontend-benchmark/scripts/env.sh.agents/skills/dynamo-frontend-benchmark/scripts/extract_throughput.py.agents/skills/dynamo-frontend-benchmark/scripts/isolate.sh.agents/skills/dynamo-frontend-benchmark/scripts/profile_oncpu.sh.agents/skills/dynamo-frontend-benchmark/scripts/run_aiperf.sh.agents/skills/dynamo-frontend-benchmark/scripts/smoke.sh.agents/skills/dynamo-frontend-benchmark/scripts/start.sh.agents/skills/dynamo-frontend-benchmark/scripts/stop.sh.agents/skills/dynamo-frontend-benchmark/scripts/unisolate.sh.agents/skills/dynamo-interconnect-check/BENCHMARK.md.agents/skills/dynamo-interconnect-check/SKILL.md.agents/skills/dynamo-interconnect-check/evals/evals.json.agents/skills/dynamo-interconnect-check/references/interconnect-env-vars.md.agents/skills/dynamo-interconnect-check/scripts/check_interconnect.py.agents/skills/dynamo-interconnect-check/skill-card.md.agents/skills/dynamo-interconnect-check/skill.oms.sig.agents/skills/dynamo-recipe-runner/BENCHMARK.md.agents/skills/dynamo-recipe-runner/SKILL.md.agents/skills/dynamo-recipe-runner/evals/evals.json.agents/skills/dynamo-recipe-runner/references/k8s-recipe-workflow.md.agents/skills/dynamo-recipe-runner/scripts/recipe_tool.py.agents/skills/dynamo-recipe-runner/skill-card.md.agents/skills/dynamo-recipe-runner/skill.oms.sig.agents/skills/dynamo-router-starter/BENCHMARK.md.agents/skills/dynamo-router-starter/SKILL.md.agents/skills/dynamo-router-starter/evals/evals.json.agents/skills/dynamo-router-starter/references/router-modes.md.agents/skills/dynamo-router-starter/scripts/check_router_health.py.agents/skills/dynamo-router-starter/skill-card.md.agents/skills/dynamo-router-starter/skill.oms.sig.agents/skills/dynamo-troubleshoot/BENCHMARK.md.agents/skills/dynamo-troubleshoot/SKILL.md.agents/skills/dynamo-troubleshoot/evals/evals.json.agents/skills/dynamo-troubleshoot/references/failure-decision-tree.md.agents/skills/dynamo-troubleshoot/scripts/collect_dynamo_debug_bundle.py.agents/skills/dynamo-troubleshoot/skill-card.md.agents/skills/dynamo-troubleshoot/skill.oms.sig.agents/skills/gh-issue-bug/SKILL.md.agents/skills/graham-code-review/SKILL.md.agents/skills/pr-monitor/SKILL.md.agents/skills/tool-parser-generator/README.md.agents/skills/tool-parser-generator/SKILL.md.agents/skills/tool-parser-generator/references/integration-guide.md.agents/skills/tool-parser-generator/references/parser-patterns.md.github/filters.yamldocs/README.mddocs/digest/agentic-inference/agentic-inference.mdskills
💤 Files with no reviewable changes (1)
- .agents/skills
- Use relative links for relocated skill docs so pre-merge lychee link validation passes (the absolute blob/main URLs 404 before merge). - Update nvskills-team-request CI dispatch gate to match the canonical .agents/skills/ prefix; without it, NVSkills CI would silently stop triggering on skill changes now that root skills/ is a symlink. Signed-off-by: Dan Gil <dagil@nvidia.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f446db7d75
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1 @@ | |||
| .agents/skills No newline at end of file | |||
There was a problem hiding this comment.
Keep NVSkills-visible paths for skill edits
After this change, ordinary edits to a canonical skill land under .agents/skills/..., but the NVSkills dispatch gate in .github/workflows/nvskills-team-request.yml only sets has_watched_change for PR filenames starting with skills/, team-skills/, rules/team-rules/, or plugins/ and otherwise exits as skipped. Because this line makes skills only a symlink, a future edit to .agents/skills/dynamo-recipe-runner/... will not appear as a skills/... changed file in the PR file list, so /nvskills-ci will stop dispatching validation for these skills unless the symlink itself is also touched.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Good catch — this is addressed in commit 1819e1901e. The NVSkills dispatch gate in .github/workflows/nvskills-team-request.yml now also matches startswith(".agents/skills/"), so edits to canonical skills under .agents/skills/... continue to trigger /nvskills-ci even though root skills is just a symlink. The skip-summary message was updated to match.
| # Canonical agent skills live in .agents/skills; root skills/ is a symlink there. | ||
| - 'skills/**' |
There was a problem hiding this comment.
Cover the symlink path itself in CI filters
When this commit adds the root skills symlink (or any future change retargets it), the changed-files coverage step compares the bare path skills from all_all_modified_files against the filter outputs and fails if no filter claims it. The pattern below only covers children such as skills/foo, not the symlink file skills itself, so this needs an explicit skills entry or the PR can fail the uncovered-file check even though the alias is intentional.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Verified against the actual changed-files guard run and this is already covered, so no change is needed. The bare skills path appears in all_all_modified_files and is also claimed by the docs filter (it shows up in docs_all_modified_files), so the uncovered-file check reports "All modified files are covered by CI filters." and passes. tj-actions' picomatch matches the bare skills symlink entry under the existing docs patterns, so an explicit skills entry would be redundant here.
Summary
Restores all agent skills into a single canonical
.agents/skills/directory.After #9782 and #10017, contributor-only skills were split into
.agents/contributor-skills/and the canonical dir was flipped so.agents/skillsbecame a symlink to a rootskills/dir holding only the 4 customer bring-up skills. As a result, the contributor skills were not discoverable by agents/tools that scan.agents/skills.This change consolidates everything back:
.agents/skills/is now a real directory holding all 15 skills — the 4 customer bring-up skills (dynamo-recipe-runner,dynamo-router-starter,dynamo-troubleshoot,dynamo-interconnect-check) plus the 11 contributor skills (debug-session,dep-create,dep-status,dep-update,dynamo-clone-hotpath-audit,dynamo-docs,dynamo-frontend-benchmark,gh-issue-bug,graham-code-review,pr-monitor,tool-parser-generator)..agents/contributor-skills/is removed.skillsis now a symlink →.agents/skills(existing references and tooling keep working).docs/README.md,docs/digest/agentic-inference/agentic-inference.md, the in-skill script paths indynamo-clone-hotpath-audit/SKILL.md, and the.github/filters.yamlcomment.All moves are tracked as git renames, so history is preserved.
Validation
git statusconfirms every skill moved as a rename; nocontributor-skillsreferences remain anywhere in the tree.skillssymlink resolves and lists all 15 skills.python3 -m py_compilepasses on all moved skill scripts (recipe_tool.py,check_router_health.py,collect_dynamo_debug_bundle.py,check_interconnect.py,clone_inventory.py,analyze_folded.py,extract_throughput.py).Summary by CodeRabbit
Documentation
Chores