chore(regenerate-readme): aggregate rows by product name#200
Merged
Conversation
Today the script emits one README row per yml entry — one row from each components.d/<product>.yml plus one row from each entry in manual-components.yml. When two entries share the same display `name` (synced + manual under the same product), they render as two separate rows with the same product name. This blocks the upcoming Physical AI Data Factory onboarding (PR #198), which adds a components.d entry named "Physical AI" — same name as the existing manual entry that covers the 5 omniverse-* / physical-ai-* skills from the internal Skill Hub. Aggregation logic: - Both loops now emit structured TSV (one column per cell, plus an is_manual flag) rather than pre-formatted markdown rows. - An awk pass groups rows by lowercase name; for groups of 2+ entries: - catalog cells are concatenated with the existing " · " separator - skill counts are summed - synced row's metadata (description, source, version, link cells) wins over the manual row's em-dash defaults - Single-entry rows pass through unchanged, so existing products with no name collision render byte-identically to today. Verified locally: - Current main state (only Physical AI in manual): renders one row, identical output to pre-aggregation behavior. - Simulated PR #198 landing with `name: Physical AI` (5 manual + 2 synced): renders one consolidated row with 7 skills, synced source cell, real link cells from the synced repo (issues, discussions, contributing, security). Signed-off-by: Moshe Abramovitch <moshea@nvidia.com>
12 tasks
3 tasks
mosheabr
added a commit
that referenced
this pull request
May 31, 2026
The Catalog column was a one-link pointer into skills/<dir>/ that duplicated information already conveyed by the Skills count column and the Source column. For single-skill products it just pointed at the lone skill dir; for multi-skill synced products (cuOpt 12, NeMo MBridge 20, NemoClaw 10, etc.) it pointed at an arbitrary primary catalog_dir while the rest of the skills were invisible at the table level. That asymmetry surfaced as a visible bug after PR #200's aggregation work landed: aggregated rows showed "Physical AI | 7 skills" but the catalog cell only listed 6 of the 7 (manual side listed all 5, synced side listed only the primary). Removing the column resolves the asymmetry and matches how customers actually navigate the catalog — Skills tells them how many, Source goes to the upstream repo, install commands are in the Quickstart section, and the skills/ directory is one click away from the header navigation. Changes: - Drop the Catalog column from both the table header and per-row output in regenerate-readme.sh - Drop catalog_cell from the structured TSV emitted by both the synced and manual loops, and from the awk aggregation pass - Regenerate README to reflect the column removal across all rows Signed-off-by: Moshe Abramovitch <moshea@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Onboarding type
Other context
Today `regenerate-readme.sh` emits one README row per yml entry — one row from each `components.d/.yml` plus one row from each entry in `manual-components.yml`. When two entries share the same display `name` (synced + manual under the same product), they render as two separate rows with the same product name.
This blocks the upcoming Physical AI Data Factory onboarding (#198), which adds a `components.d` entry named "Physical AI" — same name as the existing manual entry that covers the 5 `omniverse-` / `physical-ai-` skills from the internal Skill Hub. Per the product owner direction, all those skills belong under one consolidated "Physical AI" row.
Aggregation logic
Verified locally
Sequencing
This should merge before PR #198. After this lands, PR #198 merges cleanly and the next sync emits a single "Physical AI" row with 7 skills.
All PRs