Skip to content

Split components yml#40

Merged
mosheabr merged 5 commits intoNVIDIA:mainfrom
sayalinvidia:split-components-yml
May 1, 2026
Merged

Split components yml#40
mosheabr merged 5 commits intoNVIDIA:mainfrom
sayalinvidia:split-components-yml

Conversation

@sayalinvidia
Copy link
Copy Markdown
Collaborator

@sayalinvidia sayalinvidia commented May 1, 2026

Onboarding type

  • New product onboarding (components.yml entry)
  • Other (catalog change, README fix, infrastructure, etc.)

For new product onboarding — author affirmations

By submitting this PR, I confirm on behalf of my team:

  • Skills cleared for open source release per NVIDIA's internal IP review process (six-question check, all answers affirmative)
  • License selected: Apache 2.0 / CC-BY 4.0 / Dual (Apache 2.0 + CC-BY 4.0). Specify: _____
  • No new license or new third-party component introduced beyond what the source repo already carries
  • Source repo is public and under an NVIDIA-owned GitHub org
  • .agents/skills/ or skills/ path used for new entries (or existing path retained for legacy entries per components.yml)

NVIDIA contributors: see the internal onboarding guide for the IP review process details and license selection.

Reviewer checklist (OSS Skills PIC)

  • Author confirmations above are checked
  • components.yml entry valid (required fields, unique catalog_dir, path exists in source repo)
  • SKILL.md frontmatter spec-compliant (at least one sampled)
  • No new license or third-party dependency requiring OSRB filing

All PRs

  • All commits signed off with DCO (git commit -s).
    If you forgot, run git rebase --signoff origin/main && git push --force-with-lease to retroactively sign all commits in your branch.

Other context (for non-onboarding PRs)

Summary:

This PR splits components.yml into per-component files under components.d/ (one YAML file per product). Sync workflow and README regenerator now aggregate all components.d/*.yml at runtime — same {components: [...]} structure as before, no behavior change.

Why: simultaneous onboarding PRs from different teams currently all edit components.yml and conflict. Per-file structure means each PR touches its own file → zero shared edits → zero merge conflicts at scale.

5 commits, each independently revertible: split files → migrate workflow → migrate script → remove old components.yml → update PR template.

sayalinvidia and others added 5 commits April 30, 2026 19:16
Adds components.d/ — one YAML file per component, plus a README
documenting the layout and onboarding flow. The aggregated content
matches today's components.yml; this commit only introduces the new
files. Consumers (sync workflow, regenerate-readme.sh) still read
components.yml; subsequent commits migrate them.

Why: simultaneous onboarding PRs from different teams currently all
edit components.yml. As cadence grows, every new-team PR collides
with every other open onboarding PR. Per-file structure means each
PR touches its own file — zero shared edits, zero merge conflicts
on onboarding.

The aggregation command (used by subsequent migration commits):

  yq ea '[.] | {"components": .}' components.d/*.yml

produces the exact same {components: [...]} structure today's
components.yml carries.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sayali Kandarkar <skandarkar@nvidia.com>
Aggregates components.d/*.yml into a single {components: [...]}
structure at the start of the sync step, then iterates that
structure exactly as before. The existing yq calls now reference
the aggregated config via a CONFIG variable.

  CONFIG=/tmp/components.aggregated.yml
  yq ea '[.] | {"components": .}' components.d/*.yml > "$CONFIG"

Behavior unchanged — the workflow still produces the same component
list it produced from components.yml. components.yml is now orphaned
(still in the repo, no longer read); the next commit removes it.

Signed-off-by: Sayali Kandarkar <skandarkar@nvidia.com>
Mirrors the previous commit's workflow change: aggregate
components.d/*.yml into a single config at the start, then run
the existing yq queries against it via a CONFIG variable.

Behavior unchanged — the script produces the same README tables
it produced when reading components.yml directly. Onboarding teams
no longer need to know which file the regenerator reads; they just
add components.d/<slug>.yml and the script picks it up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sayali Kandarkar <skandarkar@nvidia.com>
Both consumers (sync workflow and regenerate-readme.sh) now read
from components.d/*.yml via the aggregation step introduced in
the previous two commits. components.yml is orphaned and removed
to make components.d/ the single source of truth.

Onboarding teams: see components.d/README.md for the schema and
the new flow (one file per component instead of editing this
shared file).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sayali Kandarkar <skandarkar@nvidia.com>
Reflects the new onboarding flow: teams add a new file in
components.d/ rather than editing a shared components.yml. Three
references updated — onboarding type, path-policy author
confirmation, and reviewer checklist.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sayali Kandarkar <skandarkar@nvidia.com>
@sayalinvidia
Copy link
Copy Markdown
Collaborator Author

changes verified on the test repo!
image

@sayalinvidia sayalinvidia marked this pull request as ready for review May 1, 2026 03:08
@sayalinvidia sayalinvidia requested a review from mosheabr as a code owner May 1, 2026 03:08
Copy link
Copy Markdown
Collaborator

@mosheabr mosheabr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve.

This closes the last shared-file conflict surface. Combined with #38 (DCO check) and #39 (auto-gen README), simultaneous onboarding PRs from different teams now touch zero shared files — onboarding becomes "create one new file under components.d/, open PR."

Verified:

  • 5 atomic, signed commits
  • Per-component data preserved exactly (sampled cuda-q, cuopt, megatron-bridge)
  • Aggregation via yq ea '[.] | {"components": .}' components.d/*.yml works for both the sync workflow and regenerate-readme.sh
  • Schema doc at components.d/README.md is clear (required/optional fields, single + multi-skill examples)

Heads up — three currently-open onboarding PRs (#22 Hannah/TileGym, #12 Seph/Dynamo, #6 Seph/community) still edit components.yml; they'll need to rebase and migrate to components.d/.yml. None are close to merge so this isn't blocking, but I'll ping the authors separately.

@mosheabr mosheabr merged commit aa669ab into NVIDIA:main May 1, 2026
1 check passed
sayalinvidia added a commit that referenced this pull request May 1, 2026
components.yml was split into per-component files under components.d/
in #40. The repo-structure diagram in README.md still showed the old
filename; this commit updates it.

No functional change — pure documentation sync.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Sayali Kandarkar <skandarkar@nvidia.com>
sayalinvidia added a commit that referenced this pull request May 1, 2026
Hardcoded counts in this block were drifting from reality (e.g.
TensorRT-LLM listed as 20 vs actual 24, Megatron-Bridge 9 vs 25).
The Available Skills table is the canonical source for counts;
keeping them in two places was a maintenance trap.

Reviewer follow-up from #40.

Signed-off-by: Sayali Kandarkar <skandarkar@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants