Sync Agent Infrastructure
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 |
CONTRIBUTING.md issue lifecycle section |
Human-facing issue states, roadmap decisions, acceptance signals, and direct-versus-queued agent ownership |
README.md |
"Use OpenShell with Your Agent" and "Built With Agents" sections |
.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 |
skills/*/SKILL.md |
Standalone user instructions and links to documentation, included files, and related skills |
.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 |
When to Run
- After adding, removing, renaming, or moving a skill in
skills/or.agents/skills/ - After adding, removing, or renaming a crate in
crates/ - After changing workflow chain relationships between skills
- After changing which product or development areas a skill covers
- After modifying issue or PR templates
- Before opening a PR that touches any of the above
Skill Maintenance Map
Use this map when product behavior, commands, or development workflows change. It is a routing aid, not an exhaustive dependency list. Search both skills/ and .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 providers, native model endpoints, or migration from the retired managed endpoint | debug-inference, openshell-cli, generate-sandbox-policy |
| 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-from-commits |
| Skills, crates, workflow chains, issue/PR templates, or agent cross-references | sync-agent-infra |
Prerequisites
You must be in the OpenShell repository root.
Step 1: Inventory Current State
Gather the source of truth for each category.
Skills
List public and contributor skill directories separately:
ls -1 skills/
ls -1 .agents/skills/The directories are canonical by audience: skills/ contains public, installable user/operator skills and .agents/skills/ contains internal contributor workflows. Every other file must agree with both inventories.
Crates
List all crate directories:
ls -1 crates/Workflow Chains
The canonical workflow chains are defined in AGENTS.md under "## Workflow Chains". Read that section β it is the source of truth for skill pipelines.
Labels
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. Lifecycle and agent:* request labels gate unattended queue pickup. They do not prevent a direct user request: the agent warns about each missing or incomplete expected workflow label and continues with the requested phase without changing those labels.
Step 2: Check Each File for Drift
For each file in the table above, check for the following inconsistencies:
CONTRIBUTING.md
- Public skills table β Every skill in
skills/must appear in "Skills for Using OpenShell" and no contributor skill may appear there. - Contributor skills table β Every skill in
.agents/skills/must appear in "Agent Skills for Contributors" and no public skill may appear there. - Inventory paths β No skill in either table should reference a directory that does not exist.
- Workflow chains β Must match
AGENTS.mdworkflow chains exactly. - Skill references in prose β Any named skill must exist in exactly one canonical skill directory.
AGENTS.md
- Architecture overview β Every crate in
crates/must appear in the architecture table. Thepython/,proto/,deploy/,.agents/rows must also be present. - Skill layout β The architecture table must contain separate
skills/and.agents/skills/rows with accurate audience descriptions. - Workflow chains β Verify each skill named in a chain exists in exactly one of the two skill directories.
- Issue/PR conventions β Verify referenced skills (
create-github-issue,create-github-pr,build-from-issue) exist. - Skill maintenance pointer β Verify it still points to
sync-agent-infraand does not duplicate the maintenance map from this skill.
Issue Lifecycle Documentation
CONTRIBUTING.mdissue lifecycle section β State, roadmap, acceptance-signal, and agent-workflow meanings must matchAGENTS.md.- Invocation modes β Lifecycle and
agent:*request labels must gate unattended queue pickup without blocking a direct user request to a specific agent. - Direct-mode warnings β Guidance must require the agent to warn about each missing or incomplete expected workflow label, continue with the requested phase, and leave labels unchanged.
README.md
- Public installation guidance β The README must distinguish
skills/from.agents/skills/, includenpx skills add NVIDIA/OpenShell, and list only canonical public skills as installable. - "Built With Agents" β Contributor skill names must exist under
.agents/skills/. Workflow descriptions should be consistent withAGENTS.mdchains.
Issue Templates
bug_report.ymlβ Must collect a User Story, Problem Statement, Impact / Why This Matters, Acceptance Criteria, Reproduction Steps, and Environment. Logs are optional and bug-specific; reporter diagnostics must not be required.feature_request.ymlβ Must collect a User Story, Problem Statement, Impact / Why This Matters, Proposed Design, Acceptance Criteria, and Alternatives Considered. The design describes workflow and observable behavior without prescribing internal implementation; agent investigation is optional.config.ymlβ Skill category descriptions in contact links should be accurate.
Issue Triage Workflow
issue-triage.ymlβ Skill names in the redirect comment must exist.
Skill Cross-References
triage-issueβ Skills referenced in gate check and diagnosis steps must exist.openshell-cliβ Companion skills table entries must exist in one canonical location.build-from-issueβ Label names must match the project's label taxonomy. Lifecycle and request labels must gate unattended queue pickup, while direct requests warn on workflow discrepancies and continue.create-spikeβ Reference tobuild-from-issueas next step must be accurate.review-security-issue/fix-security-issueβ Cross-references between the two must be accurate.- PR creation and review checks β The
create-github-pr,review-github-pr,build-from-issue, andprincipal-engineer-reviewerreferences tosync-agent-inframust exist and use trigger conditions aligned with this skill.
Skill Layout, Metadata, and Portability
- Placement β The four public skills (
openshell-cli,generate-sandbox-policy,debug-inference, anddebug-openshell-cluster) must live only inskills/. Every other repository skill must live only in.agents/skills/. - Internal metadata β Every
.agents/skills/*/SKILL.mdmust setmetadata.internal: true. Public skills must not set internal metadata. Treat this as a discovery filter, not an access-control boundary. - Unique names β Parse the
namefield from everySKILL.mdunder both roots. Every name must be globally unique and match the documented inventory. - Local references β Every relative Markdown link and referenced file in a skill must resolve within that installed skill directory unless the reference is an explicit published URL.
- Canonical paths β Contributor skills that name the source location of a public skill must use
skills/<name>/..., never.agents/skills/<name>/.... - Public portability β Public skills must not require repository-relative files under
docs/,crates/,deploy/, or.agents/; source builds;mise; or repository E2E workflows. Use installedopenshell --helpfor command syntax and Markdown endpoints underhttps://docs.nvidia.com/openshell/latest/(URLs ending in.md) for product documentation. - No canonical documentation copies β Review public reference files and large command/schema blocks. Remove material that merely copies CLI help, policy schemas, RFCs, or published operational documentation; retain only skill-specific reasoning and worked interactions.
- Discovery β Run
npx -y skills add . --listfrom a clean checkout or disposable copy. It must list exactly the four public skills. Remove any generated lock file or installed directory after the check.
Step 3: Report Drift
If any inconsistencies are found, report them in a structured format:
## Agent Infrastructure Drift Report
### Skills Inventory
- PUBLIC ADDED (exists in skills/ but missing from CONTRIBUTING.md): <list>
- PUBLIC REMOVED (documented as public but missing from skills/): <list>
- CONTRIBUTOR ADDED (exists in .agents/skills/ but missing from CONTRIBUTING.md): <list>
- CONTRIBUTOR REMOVED (documented as contributor but missing from .agents/skills/): <list>
- METADATA/PATH/NAME ERRORS: <list>
- OK: <public count> public and <contributor count> contributor 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 consistentIf no drift is found, report: "Agent infrastructure is consistent. No drift detected."
Step 4: Fix Drift
If drift is found, fix it by updating the affected files:
- Added skill β Add it to the CONTRIBUTING.md skills table in the appropriate category. If it participates in a workflow chain, update the chains in both
AGENTS.mdandCONTRIBUTING.md. - Removed skill β Remove it from all files. Check for references in templates and other skills.
- Renamed skill β Update every reference across all files.
- Added crate β Add a row to the AGENTS.md architecture table.
- Removed crate β Remove the row from the AGENTS.md architecture table.
- Changed workflow chain β Update chains in both
AGENTS.mdandCONTRIBUTING.md. Update the "Built With Agents" section inREADME.mdif the change is user-visible. - Changed skill coverage β Update the skill maintenance map in this file and any affected cross-references or companion-skill tables.
- Audience or portability drift β Move the skill to its canonical root, fix internal metadata, replace stale public-skill paths, repair local links, and replace copied product documentation with CLI self-discovery or published documentation links.
After fixing, re-run Step 2 to verify consistency.
Step 5: Summarize Changes
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>`