nvidia/sync-agent-infra
Detect and fix drift across agent-first infrastructure files. Ensures skill inventories, workflow chains, architecture tables, issue/PR templates, and cross-references stay consistent when skills, crates, or workflows change. Run after adding, removing, or renaming skills or components. Trigger keywords - sync agent infra, sync skills, update agent docs, check agent consistency, agent infra drift, sync contributing, sync agents.
npx skills add https://github.com/NVIDIA/OpenShell --skill sync-agent-infra
Detect and fix drift across the agent-first infrastructure files. These files reference each other and must stay consistent:
| File | What it tracks |
|------|---------------|
| AGENTS.md | Project identity, workflow chains, architecture overview, issue/PR conventions, skill maintenance pointer |
| CONTRIBUTING.md | Skills table, workflow chains, "When to Open an Issue" guidance, skill references |
| docs/resources/issue-lifecycle.mdx | Human-facing issue states, roadmap decisions, and direct-versus-queued agent ownership |
| README.md | "Built With Agents" section, "Explore with your agent" skill references |
| .github/ISSUE_TEMPLATE/bug_report.yml | Skill name references in diagnostic guidance |
| .github/ISSUE_TEMPLATE/feature_request.yml | Skill name references in investigation guidance |
| .github/ISSUE_TEMPLATE/config.yml | Contact link text referencing skills |
| .github/workflows/issue-triage.yml | Comment text referencing skills |
| .agents/skills/triage-issue/SKILL.md | Skill name references in gate check and diagnosis steps |
| .agents/skills/openshell-cli/SKILL.md | Companion skills table |
| .agents/skills/create-github-pr/SKILL.md | Pre-PR agent infrastructure check |
| .agents/skills/review-github-pr/SKILL.md | Review-time agent infrastructure check |
| .agents/skills/build-from-issue/SKILL.md | Label awareness and pre-commit agent infrastructure check |
| .claude/agents/principal-engineer-reviewer.md | Shared review-time agent infrastructure check |
.agents/skills/crates/Use this map when product behavior, commands, or development workflows change. It is a routing aid, not an exhaustive dependency list. Search .agents/skills/ for the changed command, field, component, or workflow before concluding that no other skill needs an update.
| Change area | Skills to review |
|---|---|
| CLI commands, flags, defaults, or workflows | openshell-cli |
| Sandbox policy schema, presets, or enforcement behavior | generate-sandbox-policy, openshell-cli |
| Supervisor middleware policy, registrations, runtime, or failure behavior | generate-sandbox-policy, openshell-cli, debug-openshell-cluster |
| Gateway deployment, Helm, runtime drivers, or health checks | debug-openshell-cluster, helm-dev-environment |
| Inference routing, providers, or inference.local behavior | debug-inference, openshell-cli |
| TUI architecture, navigation, data fetching, or UX | tui-development |
| Release artifacts or post-publish smoke coverage | test-release-canary |
| GitHub Actions workflows, required checks, or CI diagnostics | watch-github-actions; also test-release-canary for release smoke coverage |
| Gator harness, sandbox image, supervision, or model overrides | launch-openshell-gator |
| SBOM generation, dependency metadata, or license workflows | sbom |
| Issue templates, labels, contribution gates, or spike/build workflow | triage-issue, create-spike, build-from-issue, create-github-issue |
| PR template, review conventions, or vouch behavior | create-github-pr, review-github-pr, build-from-issue |
| Security review or remediation workflow | review-security-issue, fix-security-issue |
| RFC template, numbering, or lifecycle | create-rfc |
| Documentation structure, navigation, or doc-update workflow | update-docs |
| Skills, crates, workflow chains, issue/PR templates, or agent cross-references | sync-agent-infra |
You must be in the OpenShell repository root.
Gather the source of truth for each category.
List all skill directories:
ls -1 .agents/skills/
This is the canonical skill list. Every other file must agree with it.
List all crate directories:
ls -1 crates/
The canonical workflow chains are defined in AGENTS.md under "## Workflow Chains". Read that section — it is the source of truth for skill pipelines.
The canonical label set is used by skills and templates. The key labels are: state:triage-needed, state:needs-info, state:validated, state:accepted, agent:plan-requested, agent:plan-ready, agent:implementation-requested, agent:in-progress, agent:pr-opened, roadmap, topic:security, good first issue, help wanted, spike, and the relevant area:*, topic:*, integration:*, and test:* labels. The agent:* request labels control unattended queue pickup; they are not prerequisites when a user directly asks an agent to work on a specific issue.
For each file in the table above, check for the following inconsistencies:
CONTRIBUTING.md.agents/skills/ must appear in the "Agent Skills for Contributors" table. No skill in the table should reference a directory that doesn't exist.AGENTS.md workflow chains exactly..agents/skills/.AGENTS.mdcrates/ must appear in the architecture table. The python/, proto/, deploy/, .agents/ rows must also be present..agents/skills/.create-github-issue, create-github-pr, build-from-issue) exist.sync-agent-infra and does not duplicate the maintenance map from this skill.docs/resources/issue-lifecycle.mdx — State, roadmap, and agent-workflow meanings must match AGENTS.md and CONTRIBUTING.md.agent:* request labels must control unattended queue pickup without being presented as prerequisites for a direct user request to a specific agent.README.md.agents/skills/.AGENTS.md chains.bug_report.yml — Skill names in the Agent Diagnostic guidance and checklist must exist.feature_request.yml — Skill names in the Agent Investigation guidance must exist.config.yml — Skill category descriptions in contact links should be accurate.issue-triage.yml — Skill names in the redirect comment must exist.triage-issue — Skills referenced in gate check and diagnosis steps must exist.openshell-cli — Companion skills table entries must exist.build-from-issue — Label names must match the project's label taxonomy, and request labels must gate unattended queue pickup without blocking direct user requests.create-spike — Reference to build-from-issue as next step must be accurate.review-security-issue / fix-security-issue — Cross-references between the two must be accurate.create-github-pr, review-github-pr, build-from-issue, and principal-engineer-reviewer references to sync-agent-infra must exist and use trigger conditions aligned with this skill.If any inconsistencies are found, report them in a structured format:
## Agent Infrastructure Drift Report
### Skills Inventory
- ADDED (exists in .agents/skills/ but missing from CONTRIBUTING.md): <list>
- REMOVED (in CONTRIBUTING.md but missing from .agents/skills/): <list>
- OK: <count> skills consistent
### Architecture Table
- ADDED (exists in crates/ but missing from AGENTS.md): <list>
- REMOVED (in AGENTS.md but missing from crates/): <list>
- OK: <count> components consistent
### Workflow Chains
- STALE: <chain name> references non-existent skill <skill>
- OK: <count> chains consistent
### Cross-References
- <file>:<line> references non-existent skill <skill>
- <file>:<line> references non-existent label <label>
- The skill maintenance map has a stale or missing change-area mapping: <details>
- OK: <count> references consistent
If no drift is found, report: "Agent infrastructure is consistent. No drift detected."
If drift is found, fix it by updating the affected files:
AGENTS.md and CONTRIBUTING.md.AGENTS.md and CONTRIBUTING.md. Update the "Built With Agents" section in README.md if the change is user-visible.After fixing, re-run Step 2 to verify consistency.
Report what was fixed:
## Changes Made
- Updated CONTRIBUTING.md skills table: added `<skill>`
- Updated AGENTS.md architecture table: removed `<crate>`
- Fixed cross-reference in `.agents/skills/triage-issue/SKILL.md`: `<old>` → `<new>`
Take nvidia/sync-agent-infra from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.