[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-jetson-link-docs":3,"mdc--2v1de-key":31,"related-repo-nvidia-jetson-link-docs":1847,"related-org-nvidia-jetson-link-docs":1953},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"jetson-link-docs","bind Jetson reference documentation","Bind pre-downloaded Jetson reference docs (developer guide, design guide, pinmux, schematics) into the active profile documents block. Use after staging docs on disk; not for downloading.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19],{"name":13,"slug":14,"type":15},"Documentation","documentation","tag",{"name":17,"slug":18,"type":15},"Reference","reference",{"name":9,"slug":8,"type":15},2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:27:06.341882","Apache-2.0",281,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fjetson-link-docs","---\nname: jetson-link-docs\ndescription: >-\n  Bind pre-downloaded Jetson reference docs (developer guide, design\n  guide, pinmux, schematics) into the active profile documents\n  block. Use after staging docs on disk; not for downloading.\nversion: 0.0.1\nlicense: \"Apache-2.0\"\nmetadata:\n  data-classification: public\n  author: \"Jetson Team\"\n  tags:\n    - target-platform\n    - documents\n    - setup\n  domain: meta\n---\n\n# jetson-link-docs\n\n## Overview\n\nThis skill **writes** the `documents:` block of the active Jetson \u002F\nIGX target-platform profile YAML so downstream skills\n(`\u002Fjetson-generate-kb`, `\u002Fjetson-customize-pinmux`, camera \u002F pcie \u002F\nuphy, etc.) can resolve doc paths by name. It walks the user through\nevery document slot in the profile schema, tries to auto-bind each\nslot to a file under `\u003Cdocuments.root_path>\u002F` via case-insensitive\nglob matching, and writes the resulting paths back into the active\nprofile.\n\nScope is **registering pointers only** — this skill does **not** fetch\nor download. The files must already exist on disk under\n`\u003Cdocuments.root_path>\u002F`.\n\n## When to invoke\n\n- After `\u002Fjetson-init-target` finishes and the user has documents\n  on disk to register.\n- The user wants to add, change, or remove document references on an\n  existing profile.\n- A downstream skill (e.g. `jetson-generate-kb`) reports \"no documents\n  recorded\" and the user wants to fix that.\n\n## Procedure\n\n### Resolve the active target\n\nResolve the active profile + `\u003Cworkspace>` per the contract in\n[`..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md`](..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md).\nCache the loaded profile in memory — this skill mutates it in\nthe \"Write the `documents:` block back to the profile\" step.\n\n### Load the document-slot schema\n\nLoad\n[`..\u002F..\u002Freferences\u002Fplatform_template.yaml`](..\u002F..\u002Freferences\u002Fplatform_template.yaml).\nParse the `documents:` block. Each per-document field is marked\n`\u003COPTIONAL: description>`. Use the marker description as prompt text\nverbatim. Match markers with the regex\n`^\u003C(REQUIRED|OPTIONAL|DERIVED):\\s*(.*)>$` after YAML parsing strips\nsurrounding quotes.\n\nSkip `custom_carrier_schematic` and `custom_carrier_pinmux_xls`\nentirely when the active profile has no `custom_carrier:` block —\nboth are meaningless without one. This filter applies through the \"Scan and auto-match\" and \"Manual prompts for unmatched fields\" steps.\n\n### Resolve `documents.root_path`\n\nDefault: `\u003Cworkspace>\u002FDocuments`. If the profile already records\n`documents.root_path`, use it. Otherwise, if `\u003Cworkspace>\u002FDocuments\u002F`\nexists, use it (the field is **omitted** from the written profile —\ndownstream skills fall back to the workspace default). If neither is\navailable, prompt the user for an absolute path, or accept Enter \u002F\n`cancel` to skip the auto-scan. A user-provided path that doesn't\nexist is treated as skipped (warn, don't refuse — the field is\nOPTIONAL); manual prompts in the \"Manual prompts for unmatched fields\" step still run.\n\n### Resolve the product token\n\nRead the **Product Token** column from\n[`..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md`](..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md)\nfor the row matching `reference_devkit.name`. The token is a\ncase-insensitive glob fragment (e.g. `*orin*nano*`, `*agx*thor*`)\nconsumed by the fallback patterns in the \"Scan and auto-match\" step.\n\nIf `reference_devkit.name` has no row in the catalogue, log a warning\nand proceed without a product-token fallback — the \"Scan and auto-match\" step still works\nwith strictly SKU-keyed matching.\n\nFor custom carriers, derive `\u003Ccustom-token>` from `custom_carrier.name`\nusing this recipe: lowercase, replace each space with `*`, wrap in\n`*` on both ends. E.g. \"Acme Vision X1\" → `*acme*vision*x1*`.\n\n### Scan and auto-match\n\nSkip this step entirely if `documents.root_path` did not resolve in\nthe \"Resolve `documents.root_path`\" step (no scan target → no auto-suggest; fall through to manual\nprompts in the \"Manual prompts for unmatched fields\" step).\n\nScan the directory once (one level deep) and try to auto-match each\nremaining `\u003COPTIONAL:…>` field using the case-insensitive globs below.\nUse the lower-case `module.id` \u002F `carrier.id` \u002F `custom_carrier.id`\nstrings from the profile in the SKU column.\n\n| Field | SKU glob (primary) | Product-token glob (fallback) |\n|---|---|---|\n| `bsp_developer_guide`         | `*developer*guide*.pdf`, `*BSP*guide*.pdf` | _(no fallback — pattern is product-agnostic)_ |\n| `soc_tech_ref_manual`         | `*TRM*.pdf`, `*tech*ref*manual*.pdf` | _(no fallback — same)_ |\n| `module_data_sheet`           | `*\u003Cmodule.id>*data*sheet*.pdf`, `*\u003Cmodule.id>*datasheet*.pdf` | `\u003Ctoken>data*sheet*.pdf`, `\u003Ctoken>datasheet*.pdf` |\n| `module_design_guide`         | `*\u003Cmodule.id>*design*guide*.pdf`, `*\u003Cmodule.id>*PDG*.pdf` | `\u003Ctoken>design*guide*.pdf`, `\u003Ctoken>PDG*.pdf` |\n| `module_thermal_design_guide` | `*\u003Cmodule.id>*thermal*.pdf` (covers \"Thermal Design Guide\" \u002F \"TDG\") | `\u003Ctoken>thermal*.pdf` |\n| `module_schematic`            | `*\u003Cmodule.id>*schem*.pdf` | `\u003Ctoken>schem*.pdf` |\n| `carrier_board_spec`          | `*\u003Ccarrier.id>*board*spec*.pdf`, `*\u003Ccarrier.id>*spec*.pdf` | `\u003Ctoken>carrier*spec*.pdf` |\n| `carrier_schematic`           | `*\u003Ccarrier.id>*schem*.pdf` | `\u003Ctoken>carrier*schem*.pdf` |\n| `custom_carrier_schematic`    | `*\u003Ccustom_carrier.id>*schem*.pdf` (only if custom carrier) | `\u003Ccustom-token>schem*.pdf` (only if custom carrier) |\n| `ref_devkit_pinmux_xls`       | `*\u003Ccarrier.id>*pinmux*.xls*` (matches `.xls`, `.xlsx`, `.xlsm`) | `\u003Ctoken>pinmux*.xls*` |\n| `custom_carrier_pinmux_xls`   | `*\u003Ccustom_carrier.id>*pinmux*.xls*` (only if custom carrier) | `\u003Ccustom-token>pinmux*.xls*` (only if custom carrier) |\n\n`\u003Ctoken>` is the catalogue-resolved product token; `\u003Ccustom-token>`\nis derived from `custom_carrier.name` per the \"Resolve the product token\" step. Tokens already\ninclude leading\u002Ftrailing `*`, so the table does not repeat them.\n\n### Match policy per field\n\nFor each field that has auto-match results:\n\n- Take the **union** of hits across the SKU glob and the product-\n  token glob, then **deduplicate by absolute path** — a file matched\n  by both globs counts once.\n- **Exactly 1 unique hit** → show the path and prompt\n  `use this? (yes\u002Fno, default yes)`. On `yes`, record it and **skip**\n  the manual prompt for that field. On `no`, fall through to the\n  manual prompt in the \"Manual prompts for unmatched fields\" step.\n- **0 hits** → skip auto-suggest entirely for that field; fall\n  through to the \"Manual prompts for unmatched fields\" step.\n- **2+ unique hits** → present them as a numbered list in the \"Manual prompts for unmatched fields\" step so\n  the user can pick by number rather than typing a path; include a\n  `skip \u002F NA` option. Never silently bind a multi-hit candidate.\n- **Never silently bind** without user confirmation —\n  wrong-schematic \u002F wrong-pinmux bindings are real and costly.\n\nIf `documents.root_path` is folder-organised one level deeper than\nflat (NVIDIA archives often are: `Schematics\u002F`, `Design-Guides\u002F`,\n`Pinmux\u002F`, etc.), the file globs may return zero hits even when the\nright documents exist. v0.2 only scans one level deep — when 0 hits\nis suspicious (`documents.root_path` exists but no fields auto-bound),\nsurface the limitation to the user and offer to fall through to\nmanual prompts.\n\n### Manual prompts for unmatched fields\n\nFor every field that wasn't auto-bound (and wasn't filtered out in\nthe \"Load the document-slot schema\" step), prompt using the marker description from the \"Load the document-slot schema\" step as prompt\ntext, in document order. Accept Enter and `NA` interchangeably as\n\"skip this field\". When the \"Match policy per field\" step produced 2+ candidate hits for a\nfield, present them as a numbered list with a `skip \u002F NA` option\nrather than asking for a free-text path.\n\nValidate that user-provided paths exist on disk (warn if not, but do\nnot refuse — the user may be recording a planned path). URLs (values\nstarting with `http:\u002F\u002F`, `https:\u002F\u002F`, or `ftp:\u002F\u002F`) are accepted\nverbatim and not validated.\n\n### Write the `documents:` block back to the profile\n\nEdit `target-platform\u002F\u003Cactive>.yaml` in place. Preserve all other\ntop-level blocks (`reference_devkit:`, `custom_carrier:`,\n`bsp_image:`, `source:`) and their comments verbatim. Write only the\nfields the user provided — omit skipped \u002F `NA` fields entirely (no\n`NA` placeholders, no empty keys).\n\nEdge behavior: when every field was skipped (including\n`documents.root_path`), drop the `documents:` block entirely from\nthe profile — never write `documents: {}` or a block of `NA` values.\nWhen only `documents.root_path` was provided (no per-document\nbinding), record it alone — the path has value as a hint for future\nre-runs. On re-run with an existing `documents:` block, merge:\nexisting bindings are preserved unless the user picks a new file or\n`NA`; newly bound fields are added.\n\n### Confirm\n\nPrint a summary:\n\n- Profile path written.\n- `documents.root_path` — resolved value (or \"default — omitted\").\n- Auto-bound fields: count + per-field one-line list.\n- Manually entered fields: count + list.\n- Skipped fields: count.\n- A reminder that `jetson-generate-kb` re-reads `documents.*` and\n  should be re-run if a KB exists.\n\nIf a downstream skill triggered this run, tell the user to re-issue\ntheir original request; do not silently re-trigger it.\n\n## Gotchas\n\n- **Active profile must exist.** This skill writes back to whichever\n  profile is active. If no profile is active, refuse and route to\n  `jetson-set-target` \u002F `jetson-init-target`.\n- **Product-token globs are intentionally broad.** A token like\n  `*orin*nano*` matches both Orin-Nano-specific docs and combined\n  Orin-NX\u002FNano docs (e.g. `Jetson-Orin-NX-Nano-Design-Guide_…`). That\n  is usually correct for module-side docs (NVIDIA ships combined\n  manuals), but verify on schematic \u002F pinmux \u002F spec fields where\n  wrong-product binding is costly.\n- **Update `bsp-platforms-catalogue.md` when adding new product\n  rows.** The **Product Token** column is consumed by the \"Resolve the product token\" step; a\n  missing token degrades the auto-scan to SKU-only matching (the\n  skill warns and continues, but doc-rich `documents.root_path`\n  scans will degrade silently from \"5 auto-binds\" to \"fewer auto-\n  binds\").\n- **Use a round-tripping YAML loader.** the \"Write the `documents:` block back to the profile\" step mutates an existing\n  YAML file. Plain `yaml.safe_load` + `yaml.safe_dump` loses comments,\n  block ordering, and quoting style — use `ruamel.yaml` or\n  equivalent so hand-edited fields and comments survive.\n- **Re-runnable.** Re-running merges new bindings; existing\n  bindings are preserved unless the user explicitly changes them.\n  Safe to invoke as part of a profile refresh.\n\n## Prerequisites\n\n- Active target profile resolved per\n  `..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md`.\n- Documents available either under the recorded `documents.root_path`,\n  under default `\u003Cworkspace>\u002FDocuments\u002F`, or as user-provided paths \u002F\n  URLs during manual prompts. A missing root only disables auto-scan; it\n  is not a hard prerequisite.\n- `ruamel.yaml` or another round-tripping YAML writer for the profile\n  edit step.\n\n## Limitations\n\n- Registers pointers only; never downloads, copies, or renames files.\n- Per-document field set is fixed to the schema in\n  `..\u002F..\u002Freferences\u002Fplatform_template.yaml` — no ad-hoc keys.\n- Glob matching is filename-only; bad filenames in\n  `documents.root_path` will under-bind and require manual selection.\n\n## Troubleshooting\n\n- **`documents.root_path` missing** — auto-scan is skipped. Provide an\n  absolute root path, enter individual document paths \u002F URLs manually,\n  or skip the fields you do not want to bind.\n- **Multiple files match a single slot** — the skill stops and prompts;\n  pick or rename the file. Example: two\n  `Jetson-Linux-Developer-Guide*.pdf` files → keep the active version,\n  rename the stale one.\n- **Profile comments lost after write** — a non-round-tripping YAML\n  writer was used; switch to `ruamel.yaml` and rerun against a fresh\n  pristine copy.\n- **Validation fails because a binding points outside\n  `documents.root_path`** — `documents.*` are relative paths only; move\n  the file under the root and retry.\n\n## References\n\n- [`..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md`](..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md) — target-platform contract; this skill consumes and mutates the active profile.\n- [`..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md`](..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md) — source of the **Product Token** column for the \"Resolve the product token\" step.\n- [`..\u002F..\u002Freferences\u002Fplatform_template.yaml`](..\u002F..\u002Freferences\u002Fplatform_template.yaml) — schema for the `documents:` block (source of truth for prompts and field list).\n- [`..\u002Fjetson-init-target\u002FSKILL.md`](..\u002Fjetson-init-target\u002FSKILL.md) — sibling skill that authors target identity (`reference_devkit:`, optional `custom_carrier:`).\n- [`..\u002Fjetson-init-image\u002FSKILL.md`](..\u002Fjetson-init-image\u002FSKILL.md) — sibling skill that authors `bsp_image:`.\n- [`..\u002Fjetson-init-source\u002FSKILL.md`](..\u002Fjetson-init-source\u002FSKILL.md) — sibling skill: clones shared repos and handles `source.root_path` overrides.\n- [`..\u002Fjetson-generate-kb\u002FSKILL.md`](..\u002Fjetson-generate-kb\u002FSKILL.md) — sibling skill: consumes the `documents:` block this skill writes.\n",{"data":32,"body":42},{"name":4,"description":6,"version":33,"license":23,"metadata":34},"0.0.1",{"data-classification":35,"author":36,"tags":37,"domain":41},"public","Jetson Team",[38,39,40],"target-platform","documents","setup","meta",{"type":43,"children":44},"root",[45,52,59,106,132,138,174,180,187,219,225,264,293,305,348,354,400,412,455,461,480,516,956,988,994,999,1100,1141,1147,1167,1195,1208,1263,1318,1324,1329,1382,1387,1393,1527,1533,1576,1582,1614,1620,1695,1701],{"type":46,"tag":47,"props":48,"children":49},"element","h1",{"id":4},[50],{"type":51,"value":4},"text",{"type":46,"tag":53,"props":54,"children":56},"h2",{"id":55},"overview",[57],{"type":51,"value":58},"Overview",{"type":46,"tag":60,"props":61,"children":62},"p",{},[63,65,71,73,80,82,88,90,96,98,104],{"type":51,"value":64},"This skill ",{"type":46,"tag":66,"props":67,"children":68},"strong",{},[69],{"type":51,"value":70},"writes",{"type":51,"value":72}," the ",{"type":46,"tag":74,"props":75,"children":77},"code",{"className":76},[],[78],{"type":51,"value":79},"documents:",{"type":51,"value":81}," block of the active Jetson \u002F\nIGX target-platform profile YAML so downstream skills\n(",{"type":46,"tag":74,"props":83,"children":85},{"className":84},[],[86],{"type":51,"value":87},"\u002Fjetson-generate-kb",{"type":51,"value":89},", ",{"type":46,"tag":74,"props":91,"children":93},{"className":92},[],[94],{"type":51,"value":95},"\u002Fjetson-customize-pinmux",{"type":51,"value":97},", camera \u002F pcie \u002F\nuphy, etc.) can resolve doc paths by name. It walks the user through\nevery document slot in the profile schema, tries to auto-bind each\nslot to a file under ",{"type":46,"tag":74,"props":99,"children":101},{"className":100},[],[102],{"type":51,"value":103},"\u003Cdocuments.root_path>\u002F",{"type":51,"value":105}," via case-insensitive\nglob matching, and writes the resulting paths back into the active\nprofile.",{"type":46,"tag":60,"props":107,"children":108},{},[109,111,116,118,123,125,130],{"type":51,"value":110},"Scope is ",{"type":46,"tag":66,"props":112,"children":113},{},[114],{"type":51,"value":115},"registering pointers only",{"type":51,"value":117}," — this skill does ",{"type":46,"tag":66,"props":119,"children":120},{},[121],{"type":51,"value":122},"not",{"type":51,"value":124}," fetch\nor download. The files must already exist on disk under\n",{"type":46,"tag":74,"props":126,"children":128},{"className":127},[],[129],{"type":51,"value":103},{"type":51,"value":131},".",{"type":46,"tag":53,"props":133,"children":135},{"id":134},"when-to-invoke",[136],{"type":51,"value":137},"When to invoke",{"type":46,"tag":139,"props":140,"children":141},"ul",{},[142,156,161],{"type":46,"tag":143,"props":144,"children":145},"li",{},[146,148,154],{"type":51,"value":147},"After ",{"type":46,"tag":74,"props":149,"children":151},{"className":150},[],[152],{"type":51,"value":153},"\u002Fjetson-init-target",{"type":51,"value":155}," finishes and the user has documents\non disk to register.",{"type":46,"tag":143,"props":157,"children":158},{},[159],{"type":51,"value":160},"The user wants to add, change, or remove document references on an\nexisting profile.",{"type":46,"tag":143,"props":162,"children":163},{},[164,166,172],{"type":51,"value":165},"A downstream skill (e.g. ",{"type":46,"tag":74,"props":167,"children":169},{"className":168},[],[170],{"type":51,"value":171},"jetson-generate-kb",{"type":51,"value":173},") reports \"no documents\nrecorded\" and the user wants to fix that.",{"type":46,"tag":53,"props":175,"children":177},{"id":176},"procedure",[178],{"type":51,"value":179},"Procedure",{"type":46,"tag":181,"props":182,"children":184},"h3",{"id":183},"resolve-the-active-target",[185],{"type":51,"value":186},"Resolve the active target",{"type":46,"tag":60,"props":188,"children":189},{},[190,192,198,200,210,212,217],{"type":51,"value":191},"Resolve the active profile + ",{"type":46,"tag":74,"props":193,"children":195},{"className":194},[],[196],{"type":51,"value":197},"\u003Cworkspace>",{"type":51,"value":199}," per the contract in\n",{"type":46,"tag":201,"props":202,"children":204},"a",{"href":203},"..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md",[205],{"type":46,"tag":74,"props":206,"children":208},{"className":207},[],[209],{"type":51,"value":203},{"type":51,"value":211},".\nCache the loaded profile in memory — this skill mutates it in\nthe \"Write the ",{"type":46,"tag":74,"props":213,"children":215},{"className":214},[],[216],{"type":51,"value":79},{"type":51,"value":218}," block back to the profile\" step.",{"type":46,"tag":181,"props":220,"children":222},{"id":221},"load-the-document-slot-schema",[223],{"type":51,"value":224},"Load the document-slot schema",{"type":46,"tag":60,"props":226,"children":227},{},[228,230,239,241,246,248,254,256,262],{"type":51,"value":229},"Load\n",{"type":46,"tag":201,"props":231,"children":233},{"href":232},"..\u002F..\u002Freferences\u002Fplatform_template.yaml",[234],{"type":46,"tag":74,"props":235,"children":237},{"className":236},[],[238],{"type":51,"value":232},{"type":51,"value":240},".\nParse the ",{"type":46,"tag":74,"props":242,"children":244},{"className":243},[],[245],{"type":51,"value":79},{"type":51,"value":247}," block. Each per-document field is marked\n",{"type":46,"tag":74,"props":249,"children":251},{"className":250},[],[252],{"type":51,"value":253},"\u003COPTIONAL: description>",{"type":51,"value":255},". Use the marker description as prompt text\nverbatim. Match markers with the regex\n",{"type":46,"tag":74,"props":257,"children":259},{"className":258},[],[260],{"type":51,"value":261},"^\u003C(REQUIRED|OPTIONAL|DERIVED):\\s*(.*)>$",{"type":51,"value":263}," after YAML parsing strips\nsurrounding quotes.",{"type":46,"tag":60,"props":265,"children":266},{},[267,269,275,277,283,285,291],{"type":51,"value":268},"Skip ",{"type":46,"tag":74,"props":270,"children":272},{"className":271},[],[273],{"type":51,"value":274},"custom_carrier_schematic",{"type":51,"value":276}," and ",{"type":46,"tag":74,"props":278,"children":280},{"className":279},[],[281],{"type":51,"value":282},"custom_carrier_pinmux_xls",{"type":51,"value":284},"\nentirely when the active profile has no ",{"type":46,"tag":74,"props":286,"children":288},{"className":287},[],[289],{"type":51,"value":290},"custom_carrier:",{"type":51,"value":292}," block —\nboth are meaningless without one. This filter applies through the \"Scan and auto-match\" and \"Manual prompts for unmatched fields\" steps.",{"type":46,"tag":181,"props":294,"children":296},{"id":295},"resolve-documentsroot_path",[297,299],{"type":51,"value":298},"Resolve ",{"type":46,"tag":74,"props":300,"children":302},{"className":301},[],[303],{"type":51,"value":304},"documents.root_path",{"type":46,"tag":60,"props":306,"children":307},{},[308,310,316,318,323,325,331,333,338,340,346],{"type":51,"value":309},"Default: ",{"type":46,"tag":74,"props":311,"children":313},{"className":312},[],[314],{"type":51,"value":315},"\u003Cworkspace>\u002FDocuments",{"type":51,"value":317},". If the profile already records\n",{"type":46,"tag":74,"props":319,"children":321},{"className":320},[],[322],{"type":51,"value":304},{"type":51,"value":324},", use it. Otherwise, if ",{"type":46,"tag":74,"props":326,"children":328},{"className":327},[],[329],{"type":51,"value":330},"\u003Cworkspace>\u002FDocuments\u002F",{"type":51,"value":332},"\nexists, use it (the field is ",{"type":46,"tag":66,"props":334,"children":335},{},[336],{"type":51,"value":337},"omitted",{"type":51,"value":339}," from the written profile —\ndownstream skills fall back to the workspace default). If neither is\navailable, prompt the user for an absolute path, or accept Enter \u002F\n",{"type":46,"tag":74,"props":341,"children":343},{"className":342},[],[344],{"type":51,"value":345},"cancel",{"type":51,"value":347}," to skip the auto-scan. A user-provided path that doesn't\nexist is treated as skipped (warn, don't refuse — the field is\nOPTIONAL); manual prompts in the \"Manual prompts for unmatched fields\" step still run.",{"type":46,"tag":181,"props":349,"children":351},{"id":350},"resolve-the-product-token",[352],{"type":51,"value":353},"Resolve the product token",{"type":46,"tag":60,"props":355,"children":356},{},[357,359,364,366,375,377,383,385,391,392,398],{"type":51,"value":358},"Read the ",{"type":46,"tag":66,"props":360,"children":361},{},[362],{"type":51,"value":363},"Product Token",{"type":51,"value":365}," column from\n",{"type":46,"tag":201,"props":367,"children":369},{"href":368},"..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md",[370],{"type":46,"tag":74,"props":371,"children":373},{"className":372},[],[374],{"type":51,"value":368},{"type":51,"value":376},"\nfor the row matching ",{"type":46,"tag":74,"props":378,"children":380},{"className":379},[],[381],{"type":51,"value":382},"reference_devkit.name",{"type":51,"value":384},". The token is a\ncase-insensitive glob fragment (e.g. ",{"type":46,"tag":74,"props":386,"children":388},{"className":387},[],[389],{"type":51,"value":390},"*orin*nano*",{"type":51,"value":89},{"type":46,"tag":74,"props":393,"children":395},{"className":394},[],[396],{"type":51,"value":397},"*agx*thor*",{"type":51,"value":399},")\nconsumed by the fallback patterns in the \"Scan and auto-match\" step.",{"type":46,"tag":60,"props":401,"children":402},{},[403,405,410],{"type":51,"value":404},"If ",{"type":46,"tag":74,"props":406,"children":408},{"className":407},[],[409],{"type":51,"value":382},{"type":51,"value":411}," has no row in the catalogue, log a warning\nand proceed without a product-token fallback — the \"Scan and auto-match\" step still works\nwith strictly SKU-keyed matching.",{"type":46,"tag":60,"props":413,"children":414},{},[415,417,423,425,431,433,439,441,446,448,454],{"type":51,"value":416},"For custom carriers, derive ",{"type":46,"tag":74,"props":418,"children":420},{"className":419},[],[421],{"type":51,"value":422},"\u003Ccustom-token>",{"type":51,"value":424}," from ",{"type":46,"tag":74,"props":426,"children":428},{"className":427},[],[429],{"type":51,"value":430},"custom_carrier.name",{"type":51,"value":432},"\nusing this recipe: lowercase, replace each space with ",{"type":46,"tag":74,"props":434,"children":436},{"className":435},[],[437],{"type":51,"value":438},"*",{"type":51,"value":440},", wrap in\n",{"type":46,"tag":74,"props":442,"children":444},{"className":443},[],[445],{"type":51,"value":438},{"type":51,"value":447}," on both ends. E.g. \"Acme Vision X1\" → ",{"type":46,"tag":74,"props":449,"children":451},{"className":450},[],[452],{"type":51,"value":453},"*acme*vision*x1*",{"type":51,"value":131},{"type":46,"tag":181,"props":456,"children":458},{"id":457},"scan-and-auto-match",[459],{"type":51,"value":460},"Scan and auto-match",{"type":46,"tag":60,"props":462,"children":463},{},[464,466,471,473,478],{"type":51,"value":465},"Skip this step entirely if ",{"type":46,"tag":74,"props":467,"children":469},{"className":468},[],[470],{"type":51,"value":304},{"type":51,"value":472}," did not resolve in\nthe \"Resolve ",{"type":46,"tag":74,"props":474,"children":476},{"className":475},[],[477],{"type":51,"value":304},{"type":51,"value":479},"\" step (no scan target → no auto-suggest; fall through to manual\nprompts in the \"Manual prompts for unmatched fields\" step).",{"type":46,"tag":60,"props":481,"children":482},{},[483,485,491,493,499,501,507,508,514],{"type":51,"value":484},"Scan the directory once (one level deep) and try to auto-match each\nremaining ",{"type":46,"tag":74,"props":486,"children":488},{"className":487},[],[489],{"type":51,"value":490},"\u003COPTIONAL:…>",{"type":51,"value":492}," field using the case-insensitive globs below.\nUse the lower-case ",{"type":46,"tag":74,"props":494,"children":496},{"className":495},[],[497],{"type":51,"value":498},"module.id",{"type":51,"value":500}," \u002F ",{"type":46,"tag":74,"props":502,"children":504},{"className":503},[],[505],{"type":51,"value":506},"carrier.id",{"type":51,"value":500},{"type":46,"tag":74,"props":509,"children":511},{"className":510},[],[512],{"type":51,"value":513},"custom_carrier.id",{"type":51,"value":515},"\nstrings from the profile in the SKU column.",{"type":46,"tag":517,"props":518,"children":519},"table",{},[520,544],{"type":46,"tag":521,"props":522,"children":523},"thead",{},[524],{"type":46,"tag":525,"props":526,"children":527},"tr",{},[528,534,539],{"type":46,"tag":529,"props":530,"children":531},"th",{},[532],{"type":51,"value":533},"Field",{"type":46,"tag":529,"props":535,"children":536},{},[537],{"type":51,"value":538},"SKU glob (primary)",{"type":46,"tag":529,"props":540,"children":541},{},[542],{"type":51,"value":543},"Product-token glob (fallback)",{"type":46,"tag":545,"props":546,"children":547},"tbody",{},[548,586,622,666,710,742,772,809,839,871,925],{"type":46,"tag":525,"props":549,"children":550},{},[551,561,577],{"type":46,"tag":552,"props":553,"children":554},"td",{},[555],{"type":46,"tag":74,"props":556,"children":558},{"className":557},[],[559],{"type":51,"value":560},"bsp_developer_guide",{"type":46,"tag":552,"props":562,"children":563},{},[564,570,571],{"type":46,"tag":74,"props":565,"children":567},{"className":566},[],[568],{"type":51,"value":569},"*developer*guide*.pdf",{"type":51,"value":89},{"type":46,"tag":74,"props":572,"children":574},{"className":573},[],[575],{"type":51,"value":576},"*BSP*guide*.pdf",{"type":46,"tag":552,"props":578,"children":579},{},[580],{"type":46,"tag":581,"props":582,"children":583},"em",{},[584],{"type":51,"value":585},"(no fallback — pattern is product-agnostic)",{"type":46,"tag":525,"props":587,"children":588},{},[589,598,614],{"type":46,"tag":552,"props":590,"children":591},{},[592],{"type":46,"tag":74,"props":593,"children":595},{"className":594},[],[596],{"type":51,"value":597},"soc_tech_ref_manual",{"type":46,"tag":552,"props":599,"children":600},{},[601,607,608],{"type":46,"tag":74,"props":602,"children":604},{"className":603},[],[605],{"type":51,"value":606},"*TRM*.pdf",{"type":51,"value":89},{"type":46,"tag":74,"props":609,"children":611},{"className":610},[],[612],{"type":51,"value":613},"*tech*ref*manual*.pdf",{"type":46,"tag":552,"props":615,"children":616},{},[617],{"type":46,"tag":581,"props":618,"children":619},{},[620],{"type":51,"value":621},"(no fallback — same)",{"type":46,"tag":525,"props":623,"children":624},{},[625,634,650],{"type":46,"tag":552,"props":626,"children":627},{},[628],{"type":46,"tag":74,"props":629,"children":631},{"className":630},[],[632],{"type":51,"value":633},"module_data_sheet",{"type":46,"tag":552,"props":635,"children":636},{},[637,643,644],{"type":46,"tag":74,"props":638,"children":640},{"className":639},[],[641],{"type":51,"value":642},"*\u003Cmodule.id>*data*sheet*.pdf",{"type":51,"value":89},{"type":46,"tag":74,"props":645,"children":647},{"className":646},[],[648],{"type":51,"value":649},"*\u003Cmodule.id>*datasheet*.pdf",{"type":46,"tag":552,"props":651,"children":652},{},[653,659,660],{"type":46,"tag":74,"props":654,"children":656},{"className":655},[],[657],{"type":51,"value":658},"\u003Ctoken>data*sheet*.pdf",{"type":51,"value":89},{"type":46,"tag":74,"props":661,"children":663},{"className":662},[],[664],{"type":51,"value":665},"\u003Ctoken>datasheet*.pdf",{"type":46,"tag":525,"props":667,"children":668},{},[669,678,694],{"type":46,"tag":552,"props":670,"children":671},{},[672],{"type":46,"tag":74,"props":673,"children":675},{"className":674},[],[676],{"type":51,"value":677},"module_design_guide",{"type":46,"tag":552,"props":679,"children":680},{},[681,687,688],{"type":46,"tag":74,"props":682,"children":684},{"className":683},[],[685],{"type":51,"value":686},"*\u003Cmodule.id>*design*guide*.pdf",{"type":51,"value":89},{"type":46,"tag":74,"props":689,"children":691},{"className":690},[],[692],{"type":51,"value":693},"*\u003Cmodule.id>*PDG*.pdf",{"type":46,"tag":552,"props":695,"children":696},{},[697,703,704],{"type":46,"tag":74,"props":698,"children":700},{"className":699},[],[701],{"type":51,"value":702},"\u003Ctoken>design*guide*.pdf",{"type":51,"value":89},{"type":46,"tag":74,"props":705,"children":707},{"className":706},[],[708],{"type":51,"value":709},"\u003Ctoken>PDG*.pdf",{"type":46,"tag":525,"props":711,"children":712},{},[713,722,733],{"type":46,"tag":552,"props":714,"children":715},{},[716],{"type":46,"tag":74,"props":717,"children":719},{"className":718},[],[720],{"type":51,"value":721},"module_thermal_design_guide",{"type":46,"tag":552,"props":723,"children":724},{},[725,731],{"type":46,"tag":74,"props":726,"children":728},{"className":727},[],[729],{"type":51,"value":730},"*\u003Cmodule.id>*thermal*.pdf",{"type":51,"value":732}," (covers \"Thermal Design Guide\" \u002F \"TDG\")",{"type":46,"tag":552,"props":734,"children":735},{},[736],{"type":46,"tag":74,"props":737,"children":739},{"className":738},[],[740],{"type":51,"value":741},"\u003Ctoken>thermal*.pdf",{"type":46,"tag":525,"props":743,"children":744},{},[745,754,763],{"type":46,"tag":552,"props":746,"children":747},{},[748],{"type":46,"tag":74,"props":749,"children":751},{"className":750},[],[752],{"type":51,"value":753},"module_schematic",{"type":46,"tag":552,"props":755,"children":756},{},[757],{"type":46,"tag":74,"props":758,"children":760},{"className":759},[],[761],{"type":51,"value":762},"*\u003Cmodule.id>*schem*.pdf",{"type":46,"tag":552,"props":764,"children":765},{},[766],{"type":46,"tag":74,"props":767,"children":769},{"className":768},[],[770],{"type":51,"value":771},"\u003Ctoken>schem*.pdf",{"type":46,"tag":525,"props":773,"children":774},{},[775,784,800],{"type":46,"tag":552,"props":776,"children":777},{},[778],{"type":46,"tag":74,"props":779,"children":781},{"className":780},[],[782],{"type":51,"value":783},"carrier_board_spec",{"type":46,"tag":552,"props":785,"children":786},{},[787,793,794],{"type":46,"tag":74,"props":788,"children":790},{"className":789},[],[791],{"type":51,"value":792},"*\u003Ccarrier.id>*board*spec*.pdf",{"type":51,"value":89},{"type":46,"tag":74,"props":795,"children":797},{"className":796},[],[798],{"type":51,"value":799},"*\u003Ccarrier.id>*spec*.pdf",{"type":46,"tag":552,"props":801,"children":802},{},[803],{"type":46,"tag":74,"props":804,"children":806},{"className":805},[],[807],{"type":51,"value":808},"\u003Ctoken>carrier*spec*.pdf",{"type":46,"tag":525,"props":810,"children":811},{},[812,821,830],{"type":46,"tag":552,"props":813,"children":814},{},[815],{"type":46,"tag":74,"props":816,"children":818},{"className":817},[],[819],{"type":51,"value":820},"carrier_schematic",{"type":46,"tag":552,"props":822,"children":823},{},[824],{"type":46,"tag":74,"props":825,"children":827},{"className":826},[],[828],{"type":51,"value":829},"*\u003Ccarrier.id>*schem*.pdf",{"type":46,"tag":552,"props":831,"children":832},{},[833],{"type":46,"tag":74,"props":834,"children":836},{"className":835},[],[837],{"type":51,"value":838},"\u003Ctoken>carrier*schem*.pdf",{"type":46,"tag":525,"props":840,"children":841},{},[842,850,861],{"type":46,"tag":552,"props":843,"children":844},{},[845],{"type":46,"tag":74,"props":846,"children":848},{"className":847},[],[849],{"type":51,"value":274},{"type":46,"tag":552,"props":851,"children":852},{},[853,859],{"type":46,"tag":74,"props":854,"children":856},{"className":855},[],[857],{"type":51,"value":858},"*\u003Ccustom_carrier.id>*schem*.pdf",{"type":51,"value":860}," (only if custom carrier)",{"type":46,"tag":552,"props":862,"children":863},{},[864,870],{"type":46,"tag":74,"props":865,"children":867},{"className":866},[],[868],{"type":51,"value":869},"\u003Ccustom-token>schem*.pdf",{"type":51,"value":860},{"type":46,"tag":525,"props":872,"children":873},{},[874,883,916],{"type":46,"tag":552,"props":875,"children":876},{},[877],{"type":46,"tag":74,"props":878,"children":880},{"className":879},[],[881],{"type":51,"value":882},"ref_devkit_pinmux_xls",{"type":46,"tag":552,"props":884,"children":885},{},[886,892,894,900,901,907,908,914],{"type":46,"tag":74,"props":887,"children":889},{"className":888},[],[890],{"type":51,"value":891},"*\u003Ccarrier.id>*pinmux*.xls*",{"type":51,"value":893}," (matches ",{"type":46,"tag":74,"props":895,"children":897},{"className":896},[],[898],{"type":51,"value":899},".xls",{"type":51,"value":89},{"type":46,"tag":74,"props":902,"children":904},{"className":903},[],[905],{"type":51,"value":906},".xlsx",{"type":51,"value":89},{"type":46,"tag":74,"props":909,"children":911},{"className":910},[],[912],{"type":51,"value":913},".xlsm",{"type":51,"value":915},")",{"type":46,"tag":552,"props":917,"children":918},{},[919],{"type":46,"tag":74,"props":920,"children":922},{"className":921},[],[923],{"type":51,"value":924},"\u003Ctoken>pinmux*.xls*",{"type":46,"tag":525,"props":926,"children":927},{},[928,936,946],{"type":46,"tag":552,"props":929,"children":930},{},[931],{"type":46,"tag":74,"props":932,"children":934},{"className":933},[],[935],{"type":51,"value":282},{"type":46,"tag":552,"props":937,"children":938},{},[939,945],{"type":46,"tag":74,"props":940,"children":942},{"className":941},[],[943],{"type":51,"value":944},"*\u003Ccustom_carrier.id>*pinmux*.xls*",{"type":51,"value":860},{"type":46,"tag":552,"props":947,"children":948},{},[949,955],{"type":46,"tag":74,"props":950,"children":952},{"className":951},[],[953],{"type":51,"value":954},"\u003Ccustom-token>pinmux*.xls*",{"type":51,"value":860},{"type":46,"tag":60,"props":957,"children":958},{},[959,965,967,972,974,979,981,986],{"type":46,"tag":74,"props":960,"children":962},{"className":961},[],[963],{"type":51,"value":964},"\u003Ctoken>",{"type":51,"value":966}," is the catalogue-resolved product token; ",{"type":46,"tag":74,"props":968,"children":970},{"className":969},[],[971],{"type":51,"value":422},{"type":51,"value":973},"\nis derived from ",{"type":46,"tag":74,"props":975,"children":977},{"className":976},[],[978],{"type":51,"value":430},{"type":51,"value":980}," per the \"Resolve the product token\" step. Tokens already\ninclude leading\u002Ftrailing ",{"type":46,"tag":74,"props":982,"children":984},{"className":983},[],[985],{"type":51,"value":438},{"type":51,"value":987},", so the table does not repeat them.",{"type":46,"tag":181,"props":989,"children":991},{"id":990},"match-policy-per-field",[992],{"type":51,"value":993},"Match policy per field",{"type":46,"tag":60,"props":995,"children":996},{},[997],{"type":51,"value":998},"For each field that has auto-match results:",{"type":46,"tag":139,"props":1000,"children":1001},{},[1002,1021,1062,1072,1090],{"type":46,"tag":143,"props":1003,"children":1004},{},[1005,1007,1012,1014,1019],{"type":51,"value":1006},"Take the ",{"type":46,"tag":66,"props":1008,"children":1009},{},[1010],{"type":51,"value":1011},"union",{"type":51,"value":1013}," of hits across the SKU glob and the product-\ntoken glob, then ",{"type":46,"tag":66,"props":1015,"children":1016},{},[1017],{"type":51,"value":1018},"deduplicate by absolute path",{"type":51,"value":1020}," — a file matched\nby both globs counts once.",{"type":46,"tag":143,"props":1022,"children":1023},{},[1024,1029,1031,1037,1039,1045,1047,1052,1054,1060],{"type":46,"tag":66,"props":1025,"children":1026},{},[1027],{"type":51,"value":1028},"Exactly 1 unique hit",{"type":51,"value":1030}," → show the path and prompt\n",{"type":46,"tag":74,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":51,"value":1036},"use this? (yes\u002Fno, default yes)",{"type":51,"value":1038},". On ",{"type":46,"tag":74,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":51,"value":1044},"yes",{"type":51,"value":1046},", record it and ",{"type":46,"tag":66,"props":1048,"children":1049},{},[1050],{"type":51,"value":1051},"skip",{"type":51,"value":1053},"\nthe manual prompt for that field. On ",{"type":46,"tag":74,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":51,"value":1059},"no",{"type":51,"value":1061},", fall through to the\nmanual prompt in the \"Manual prompts for unmatched fields\" step.",{"type":46,"tag":143,"props":1063,"children":1064},{},[1065,1070],{"type":46,"tag":66,"props":1066,"children":1067},{},[1068],{"type":51,"value":1069},"0 hits",{"type":51,"value":1071}," → skip auto-suggest entirely for that field; fall\nthrough to the \"Manual prompts for unmatched fields\" step.",{"type":46,"tag":143,"props":1073,"children":1074},{},[1075,1080,1082,1088],{"type":46,"tag":66,"props":1076,"children":1077},{},[1078],{"type":51,"value":1079},"2+ unique hits",{"type":51,"value":1081}," → present them as a numbered list in the \"Manual prompts for unmatched fields\" step so\nthe user can pick by number rather than typing a path; include a\n",{"type":46,"tag":74,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":51,"value":1087},"skip \u002F NA",{"type":51,"value":1089}," option. Never silently bind a multi-hit candidate.",{"type":46,"tag":143,"props":1091,"children":1092},{},[1093,1098],{"type":46,"tag":66,"props":1094,"children":1095},{},[1096],{"type":51,"value":1097},"Never silently bind",{"type":51,"value":1099}," without user confirmation —\nwrong-schematic \u002F wrong-pinmux bindings are real and costly.",{"type":46,"tag":60,"props":1101,"children":1102},{},[1103,1104,1109,1111,1117,1118,1124,1126,1132,1134,1139],{"type":51,"value":404},{"type":46,"tag":74,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":51,"value":304},{"type":51,"value":1110}," is folder-organised one level deeper than\nflat (NVIDIA archives often are: ",{"type":46,"tag":74,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":51,"value":1116},"Schematics\u002F",{"type":51,"value":89},{"type":46,"tag":74,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":51,"value":1123},"Design-Guides\u002F",{"type":51,"value":1125},",\n",{"type":46,"tag":74,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":51,"value":1131},"Pinmux\u002F",{"type":51,"value":1133},", etc.), the file globs may return zero hits even when the\nright documents exist. v0.2 only scans one level deep — when 0 hits\nis suspicious (",{"type":46,"tag":74,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":51,"value":304},{"type":51,"value":1140}," exists but no fields auto-bound),\nsurface the limitation to the user and offer to fall through to\nmanual prompts.",{"type":46,"tag":181,"props":1142,"children":1144},{"id":1143},"manual-prompts-for-unmatched-fields",[1145],{"type":51,"value":1146},"Manual prompts for unmatched fields",{"type":46,"tag":60,"props":1148,"children":1149},{},[1150,1152,1158,1160,1165],{"type":51,"value":1151},"For every field that wasn't auto-bound (and wasn't filtered out in\nthe \"Load the document-slot schema\" step), prompt using the marker description from the \"Load the document-slot schema\" step as prompt\ntext, in document order. Accept Enter and ",{"type":46,"tag":74,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":51,"value":1157},"NA",{"type":51,"value":1159}," interchangeably as\n\"skip this field\". When the \"Match policy per field\" step produced 2+ candidate hits for a\nfield, present them as a numbered list with a ",{"type":46,"tag":74,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":51,"value":1087},{"type":51,"value":1166}," option\nrather than asking for a free-text path.",{"type":46,"tag":60,"props":1168,"children":1169},{},[1170,1172,1178,1179,1185,1187,1193],{"type":51,"value":1171},"Validate that user-provided paths exist on disk (warn if not, but do\nnot refuse — the user may be recording a planned path). URLs (values\nstarting with ",{"type":46,"tag":74,"props":1173,"children":1175},{"className":1174},[],[1176],{"type":51,"value":1177},"http:\u002F\u002F",{"type":51,"value":89},{"type":46,"tag":74,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":51,"value":1184},"https:\u002F\u002F",{"type":51,"value":1186},", or ",{"type":46,"tag":74,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":51,"value":1192},"ftp:\u002F\u002F",{"type":51,"value":1194},") are accepted\nverbatim and not validated.",{"type":46,"tag":181,"props":1196,"children":1198},{"id":1197},"write-the-documents-block-back-to-the-profile",[1199,1201,1206],{"type":51,"value":1200},"Write the ",{"type":46,"tag":74,"props":1202,"children":1204},{"className":1203},[],[1205],{"type":51,"value":79},{"type":51,"value":1207}," block back to the profile",{"type":46,"tag":60,"props":1209,"children":1210},{},[1211,1213,1219,1221,1227,1228,1233,1234,1240,1241,1247,1249,1254,1256,1261],{"type":51,"value":1212},"Edit ",{"type":46,"tag":74,"props":1214,"children":1216},{"className":1215},[],[1217],{"type":51,"value":1218},"target-platform\u002F\u003Cactive>.yaml",{"type":51,"value":1220}," in place. Preserve all other\ntop-level blocks (",{"type":46,"tag":74,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":51,"value":1226},"reference_devkit:",{"type":51,"value":89},{"type":46,"tag":74,"props":1229,"children":1231},{"className":1230},[],[1232],{"type":51,"value":290},{"type":51,"value":1125},{"type":46,"tag":74,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":51,"value":1239},"bsp_image:",{"type":51,"value":89},{"type":46,"tag":74,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":51,"value":1246},"source:",{"type":51,"value":1248},") and their comments verbatim. Write only the\nfields the user provided — omit skipped \u002F ",{"type":46,"tag":74,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":51,"value":1157},{"type":51,"value":1255}," fields entirely (no\n",{"type":46,"tag":74,"props":1257,"children":1259},{"className":1258},[],[1260],{"type":51,"value":1157},{"type":51,"value":1262}," placeholders, no empty keys).",{"type":46,"tag":60,"props":1264,"children":1265},{},[1266,1268,1273,1275,1280,1282,1288,1290,1295,1297,1302,1304,1309,1311,1316],{"type":51,"value":1267},"Edge behavior: when every field was skipped (including\n",{"type":46,"tag":74,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":51,"value":304},{"type":51,"value":1274},"), drop the ",{"type":46,"tag":74,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":51,"value":79},{"type":51,"value":1281}," block entirely from\nthe profile — never write ",{"type":46,"tag":74,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":51,"value":1287},"documents: {}",{"type":51,"value":1289}," or a block of ",{"type":46,"tag":74,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":51,"value":1157},{"type":51,"value":1296}," values.\nWhen only ",{"type":46,"tag":74,"props":1298,"children":1300},{"className":1299},[],[1301],{"type":51,"value":304},{"type":51,"value":1303}," was provided (no per-document\nbinding), record it alone — the path has value as a hint for future\nre-runs. On re-run with an existing ",{"type":46,"tag":74,"props":1305,"children":1307},{"className":1306},[],[1308],{"type":51,"value":79},{"type":51,"value":1310}," block, merge:\nexisting bindings are preserved unless the user picks a new file or\n",{"type":46,"tag":74,"props":1312,"children":1314},{"className":1313},[],[1315],{"type":51,"value":1157},{"type":51,"value":1317},"; newly bound fields are added.",{"type":46,"tag":181,"props":1319,"children":1321},{"id":1320},"confirm",[1322],{"type":51,"value":1323},"Confirm",{"type":46,"tag":60,"props":1325,"children":1326},{},[1327],{"type":51,"value":1328},"Print a summary:",{"type":46,"tag":139,"props":1330,"children":1331},{},[1332,1337,1347,1352,1357,1362],{"type":46,"tag":143,"props":1333,"children":1334},{},[1335],{"type":51,"value":1336},"Profile path written.",{"type":46,"tag":143,"props":1338,"children":1339},{},[1340,1345],{"type":46,"tag":74,"props":1341,"children":1343},{"className":1342},[],[1344],{"type":51,"value":304},{"type":51,"value":1346}," — resolved value (or \"default — omitted\").",{"type":46,"tag":143,"props":1348,"children":1349},{},[1350],{"type":51,"value":1351},"Auto-bound fields: count + per-field one-line list.",{"type":46,"tag":143,"props":1353,"children":1354},{},[1355],{"type":51,"value":1356},"Manually entered fields: count + list.",{"type":46,"tag":143,"props":1358,"children":1359},{},[1360],{"type":51,"value":1361},"Skipped fields: count.",{"type":46,"tag":143,"props":1363,"children":1364},{},[1365,1367,1372,1374,1380],{"type":51,"value":1366},"A reminder that ",{"type":46,"tag":74,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":51,"value":171},{"type":51,"value":1373}," re-reads ",{"type":46,"tag":74,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":51,"value":1379},"documents.*",{"type":51,"value":1381}," and\nshould be re-run if a KB exists.",{"type":46,"tag":60,"props":1383,"children":1384},{},[1385],{"type":51,"value":1386},"If a downstream skill triggered this run, tell the user to re-issue\ntheir original request; do not silently re-trigger it.",{"type":46,"tag":53,"props":1388,"children":1390},{"id":1389},"gotchas",[1391],{"type":51,"value":1392},"Gotchas",{"type":46,"tag":139,"props":1394,"children":1395},{},[1396,1420,1445,1476,1517],{"type":46,"tag":143,"props":1397,"children":1398},{},[1399,1404,1406,1412,1413,1419],{"type":46,"tag":66,"props":1400,"children":1401},{},[1402],{"type":51,"value":1403},"Active profile must exist.",{"type":51,"value":1405}," This skill writes back to whichever\nprofile is active. If no profile is active, refuse and route to\n",{"type":46,"tag":74,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":51,"value":1411},"jetson-set-target",{"type":51,"value":500},{"type":46,"tag":74,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":51,"value":1418},"jetson-init-target",{"type":51,"value":131},{"type":46,"tag":143,"props":1421,"children":1422},{},[1423,1428,1430,1435,1437,1443],{"type":46,"tag":66,"props":1424,"children":1425},{},[1426],{"type":51,"value":1427},"Product-token globs are intentionally broad.",{"type":51,"value":1429}," A token like\n",{"type":46,"tag":74,"props":1431,"children":1433},{"className":1432},[],[1434],{"type":51,"value":390},{"type":51,"value":1436}," matches both Orin-Nano-specific docs and combined\nOrin-NX\u002FNano docs (e.g. ",{"type":46,"tag":74,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":51,"value":1442},"Jetson-Orin-NX-Nano-Design-Guide_…",{"type":51,"value":1444},"). That\nis usually correct for module-side docs (NVIDIA ships combined\nmanuals), but verify on schematic \u002F pinmux \u002F spec fields where\nwrong-product binding is costly.",{"type":46,"tag":143,"props":1446,"children":1447},{},[1448,1461,1463,1467,1469,1474],{"type":46,"tag":66,"props":1449,"children":1450},{},[1451,1453,1459],{"type":51,"value":1452},"Update ",{"type":46,"tag":74,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":51,"value":1458},"bsp-platforms-catalogue.md",{"type":51,"value":1460}," when adding new product\nrows.",{"type":51,"value":1462}," The ",{"type":46,"tag":66,"props":1464,"children":1465},{},[1466],{"type":51,"value":363},{"type":51,"value":1468}," column is consumed by the \"Resolve the product token\" step; a\nmissing token degrades the auto-scan to SKU-only matching (the\nskill warns and continues, but doc-rich ",{"type":46,"tag":74,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":51,"value":304},{"type":51,"value":1475},"\nscans will degrade silently from \"5 auto-binds\" to \"fewer auto-\nbinds\").",{"type":46,"tag":143,"props":1477,"children":1478},{},[1479,1484,1486,1491,1493,1499,1501,1507,1509,1515],{"type":46,"tag":66,"props":1480,"children":1481},{},[1482],{"type":51,"value":1483},"Use a round-tripping YAML loader.",{"type":51,"value":1485}," the \"Write the ",{"type":46,"tag":74,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":51,"value":79},{"type":51,"value":1492}," block back to the profile\" step mutates an existing\nYAML file. Plain ",{"type":46,"tag":74,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":51,"value":1498},"yaml.safe_load",{"type":51,"value":1500}," + ",{"type":46,"tag":74,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":51,"value":1506},"yaml.safe_dump",{"type":51,"value":1508}," loses comments,\nblock ordering, and quoting style — use ",{"type":46,"tag":74,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":51,"value":1514},"ruamel.yaml",{"type":51,"value":1516}," or\nequivalent so hand-edited fields and comments survive.",{"type":46,"tag":143,"props":1518,"children":1519},{},[1520,1525],{"type":46,"tag":66,"props":1521,"children":1522},{},[1523],{"type":51,"value":1524},"Re-runnable.",{"type":51,"value":1526}," Re-running merges new bindings; existing\nbindings are preserved unless the user explicitly changes them.\nSafe to invoke as part of a profile refresh.",{"type":46,"tag":53,"props":1528,"children":1530},{"id":1529},"prerequisites",[1531],{"type":51,"value":1532},"Prerequisites",{"type":46,"tag":139,"props":1534,"children":1535},{},[1536,1547,1566],{"type":46,"tag":143,"props":1537,"children":1538},{},[1539,1541,1546],{"type":51,"value":1540},"Active target profile resolved per\n",{"type":46,"tag":74,"props":1542,"children":1544},{"className":1543},[],[1545],{"type":51,"value":203},{"type":51,"value":131},{"type":46,"tag":143,"props":1548,"children":1549},{},[1550,1552,1557,1559,1564],{"type":51,"value":1551},"Documents available either under the recorded ",{"type":46,"tag":74,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":51,"value":304},{"type":51,"value":1558},",\nunder default ",{"type":46,"tag":74,"props":1560,"children":1562},{"className":1561},[],[1563],{"type":51,"value":330},{"type":51,"value":1565},", or as user-provided paths \u002F\nURLs during manual prompts. A missing root only disables auto-scan; it\nis not a hard prerequisite.",{"type":46,"tag":143,"props":1567,"children":1568},{},[1569,1574],{"type":46,"tag":74,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":51,"value":1514},{"type":51,"value":1575}," or another round-tripping YAML writer for the profile\nedit step.",{"type":46,"tag":53,"props":1577,"children":1579},{"id":1578},"limitations",[1580],{"type":51,"value":1581},"Limitations",{"type":46,"tag":139,"props":1583,"children":1584},{},[1585,1590,1602],{"type":46,"tag":143,"props":1586,"children":1587},{},[1588],{"type":51,"value":1589},"Registers pointers only; never downloads, copies, or renames files.",{"type":46,"tag":143,"props":1591,"children":1592},{},[1593,1595,1600],{"type":51,"value":1594},"Per-document field set is fixed to the schema in\n",{"type":46,"tag":74,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":51,"value":232},{"type":51,"value":1601}," — no ad-hoc keys.",{"type":46,"tag":143,"props":1603,"children":1604},{},[1605,1607,1612],{"type":51,"value":1606},"Glob matching is filename-only; bad filenames in\n",{"type":46,"tag":74,"props":1608,"children":1610},{"className":1609},[],[1611],{"type":51,"value":304},{"type":51,"value":1613}," will under-bind and require manual selection.",{"type":46,"tag":53,"props":1615,"children":1617},{"id":1616},"troubleshooting",[1618],{"type":51,"value":1619},"Troubleshooting",{"type":46,"tag":139,"props":1621,"children":1622},{},[1623,1638,1656,1673],{"type":46,"tag":143,"props":1624,"children":1625},{},[1626,1636],{"type":46,"tag":66,"props":1627,"children":1628},{},[1629,1634],{"type":46,"tag":74,"props":1630,"children":1632},{"className":1631},[],[1633],{"type":51,"value":304},{"type":51,"value":1635}," missing",{"type":51,"value":1637}," — auto-scan is skipped. Provide an\nabsolute root path, enter individual document paths \u002F URLs manually,\nor skip the fields you do not want to bind.",{"type":46,"tag":143,"props":1639,"children":1640},{},[1641,1646,1648,1654],{"type":46,"tag":66,"props":1642,"children":1643},{},[1644],{"type":51,"value":1645},"Multiple files match a single slot",{"type":51,"value":1647}," — the skill stops and prompts;\npick or rename the file. Example: two\n",{"type":46,"tag":74,"props":1649,"children":1651},{"className":1650},[],[1652],{"type":51,"value":1653},"Jetson-Linux-Developer-Guide*.pdf",{"type":51,"value":1655}," files → keep the active version,\nrename the stale one.",{"type":46,"tag":143,"props":1657,"children":1658},{},[1659,1664,1666,1671],{"type":46,"tag":66,"props":1660,"children":1661},{},[1662],{"type":51,"value":1663},"Profile comments lost after write",{"type":51,"value":1665}," — a non-round-tripping YAML\nwriter was used; switch to ",{"type":46,"tag":74,"props":1667,"children":1669},{"className":1668},[],[1670],{"type":51,"value":1514},{"type":51,"value":1672}," and rerun against a fresh\npristine copy.",{"type":46,"tag":143,"props":1674,"children":1675},{},[1676,1686,1688,1693],{"type":46,"tag":66,"props":1677,"children":1678},{},[1679,1681],{"type":51,"value":1680},"Validation fails because a binding points outside\n",{"type":46,"tag":74,"props":1682,"children":1684},{"className":1683},[],[1685],{"type":51,"value":304},{"type":51,"value":1687}," — ",{"type":46,"tag":74,"props":1689,"children":1691},{"className":1690},[],[1692],{"type":51,"value":1379},{"type":51,"value":1694}," are relative paths only; move\nthe file under the root and retry.",{"type":46,"tag":53,"props":1696,"children":1698},{"id":1697},"references",[1699],{"type":51,"value":1700},"References",{"type":46,"tag":139,"props":1702,"children":1703},{},[1704,1717,1736,1756,1784,1804,1826],{"type":46,"tag":143,"props":1705,"children":1706},{},[1707,1715],{"type":46,"tag":201,"props":1708,"children":1709},{"href":203},[1710],{"type":46,"tag":74,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":51,"value":203},{"type":51,"value":1716}," — target-platform contract; this skill consumes and mutates the active profile.",{"type":46,"tag":143,"props":1718,"children":1719},{},[1720,1728,1730,1734],{"type":46,"tag":201,"props":1721,"children":1722},{"href":368},[1723],{"type":46,"tag":74,"props":1724,"children":1726},{"className":1725},[],[1727],{"type":51,"value":368},{"type":51,"value":1729}," — source of the ",{"type":46,"tag":66,"props":1731,"children":1732},{},[1733],{"type":51,"value":363},{"type":51,"value":1735}," column for the \"Resolve the product token\" step.",{"type":46,"tag":143,"props":1737,"children":1738},{},[1739,1747,1749,1754],{"type":46,"tag":201,"props":1740,"children":1741},{"href":232},[1742],{"type":46,"tag":74,"props":1743,"children":1745},{"className":1744},[],[1746],{"type":51,"value":232},{"type":51,"value":1748}," — schema for the ",{"type":46,"tag":74,"props":1750,"children":1752},{"className":1751},[],[1753],{"type":51,"value":79},{"type":51,"value":1755}," block (source of truth for prompts and field list).",{"type":46,"tag":143,"props":1757,"children":1758},{},[1759,1768,1770,1775,1777,1782],{"type":46,"tag":201,"props":1760,"children":1762},{"href":1761},"..\u002Fjetson-init-target\u002FSKILL.md",[1763],{"type":46,"tag":74,"props":1764,"children":1766},{"className":1765},[],[1767],{"type":51,"value":1761},{"type":51,"value":1769}," — sibling skill that authors target identity (",{"type":46,"tag":74,"props":1771,"children":1773},{"className":1772},[],[1774],{"type":51,"value":1226},{"type":51,"value":1776},", optional ",{"type":46,"tag":74,"props":1778,"children":1780},{"className":1779},[],[1781],{"type":51,"value":290},{"type":51,"value":1783},").",{"type":46,"tag":143,"props":1785,"children":1786},{},[1787,1796,1798,1803],{"type":46,"tag":201,"props":1788,"children":1790},{"href":1789},"..\u002Fjetson-init-image\u002FSKILL.md",[1791],{"type":46,"tag":74,"props":1792,"children":1794},{"className":1793},[],[1795],{"type":51,"value":1789},{"type":51,"value":1797}," — sibling skill that authors ",{"type":46,"tag":74,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":51,"value":1239},{"type":51,"value":131},{"type":46,"tag":143,"props":1805,"children":1806},{},[1807,1816,1818,1824],{"type":46,"tag":201,"props":1808,"children":1810},{"href":1809},"..\u002Fjetson-init-source\u002FSKILL.md",[1811],{"type":46,"tag":74,"props":1812,"children":1814},{"className":1813},[],[1815],{"type":51,"value":1809},{"type":51,"value":1817}," — sibling skill: clones shared repos and handles ",{"type":46,"tag":74,"props":1819,"children":1821},{"className":1820},[],[1822],{"type":51,"value":1823},"source.root_path",{"type":51,"value":1825}," overrides.",{"type":46,"tag":143,"props":1827,"children":1828},{},[1829,1838,1840,1845],{"type":46,"tag":201,"props":1830,"children":1832},{"href":1831},"..\u002Fjetson-generate-kb\u002FSKILL.md",[1833],{"type":46,"tag":74,"props":1834,"children":1836},{"className":1835},[],[1837],{"type":51,"value":1831},{"type":51,"value":1839}," — sibling skill: consumes the ",{"type":46,"tag":74,"props":1841,"children":1843},{"className":1842},[],[1844],{"type":51,"value":79},{"type":51,"value":1846}," block this skill writes.",{"items":1848,"total":1952},[1849,1866,1880,1894,1906,1923,1938],{"slug":1850,"name":1850,"fn":1851,"description":1852,"org":1853,"tags":1854,"stars":20,"repoUrl":21,"updatedAt":1865},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1855,1858,1861,1862],{"name":1856,"slug":1857,"type":15},"Data Analysis","data-analysis",{"name":1859,"slug":1860,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1863,"slug":1864,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1867,"name":1867,"fn":1868,"description":1869,"org":1870,"tags":1871,"stars":20,"repoUrl":21,"updatedAt":1879},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1872,1875,1878],{"name":1873,"slug":1874,"type":15},"Deployment","deployment",{"name":1876,"slug":1877,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1881,"name":1881,"fn":1882,"description":1883,"org":1884,"tags":1885,"stars":20,"repoUrl":21,"updatedAt":1893},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1886,1889,1890],{"name":1887,"slug":1888,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1891,"slug":1892,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1895,"name":1895,"fn":1896,"description":1897,"org":1898,"tags":1899,"stars":20,"repoUrl":21,"updatedAt":1905},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1900,1901,1902],{"name":1856,"slug":1857,"type":15},{"name":9,"slug":8,"type":15},{"name":1903,"slug":1904,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1907,"name":1907,"fn":1908,"description":1909,"org":1910,"tags":1911,"stars":20,"repoUrl":21,"updatedAt":1922},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1912,1915,1918,1919],{"name":1913,"slug":1914,"type":15},"Automation","automation",{"name":1916,"slug":1917,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1920,"slug":1921,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1924,"name":1924,"fn":1925,"description":1926,"org":1927,"tags":1928,"stars":20,"repoUrl":21,"updatedAt":1937},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1929,1930,1933,1934],{"name":1873,"slug":1874,"type":15},{"name":1931,"slug":1932,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1935,"slug":1936,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1939,"name":1939,"fn":1940,"description":1941,"org":1942,"tags":1943,"stars":20,"repoUrl":21,"updatedAt":1951},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1944,1945,1948],{"name":9,"slug":8,"type":15},{"name":1946,"slug":1947,"type":15},"Quantum Computing","quantum-computing",{"name":1949,"slug":1950,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1954,"total":2103},[1955,1971,1987,1998,2010,2024,2037,2051,2062,2071,2085,2094],{"slug":1956,"name":1956,"fn":1957,"description":1958,"org":1959,"tags":1960,"stars":1968,"repoUrl":1969,"updatedAt":1970},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1961,1962,1965],{"name":13,"slug":14,"type":15},{"name":1963,"slug":1964,"type":15},"MCP","mcp",{"name":1966,"slug":1967,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1972,"name":1972,"fn":1973,"description":1974,"org":1975,"tags":1976,"stars":1984,"repoUrl":1985,"updatedAt":1986},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1977,1980,1981],{"name":1978,"slug":1979,"type":15},"Containers","containers",{"name":1873,"slug":1874,"type":15},{"name":1982,"slug":1983,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1988,"name":1988,"fn":1989,"description":1990,"org":1991,"tags":1992,"stars":1984,"repoUrl":1985,"updatedAt":1997},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1993,1996],{"name":1994,"slug":1995,"type":15},"CI\u002FCD","ci-cd",{"name":1873,"slug":1874,"type":15},"2026-07-14T05:25:59.97109",{"slug":1999,"name":1999,"fn":2000,"description":2001,"org":2002,"tags":2003,"stars":1984,"repoUrl":1985,"updatedAt":2009},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2004,2005,2006],{"name":1994,"slug":1995,"type":15},{"name":1873,"slug":1874,"type":15},{"name":2007,"slug":2008,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2011,"name":2011,"fn":2012,"description":2013,"org":2014,"tags":2015,"stars":1984,"repoUrl":1985,"updatedAt":2023},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2016,2019,2020],{"name":2017,"slug":2018,"type":15},"Debugging","debugging",{"name":2007,"slug":2008,"type":15},{"name":2021,"slug":2022,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2025,"name":2025,"fn":2026,"description":2027,"org":2028,"tags":2029,"stars":1984,"repoUrl":1985,"updatedAt":2036},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2030,2033],{"name":2031,"slug":2032,"type":15},"Best Practices","best-practices",{"name":2034,"slug":2035,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2038,"name":2038,"fn":2039,"description":2040,"org":2041,"tags":2042,"stars":1984,"repoUrl":1985,"updatedAt":2050},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2043,2046,2049],{"name":2044,"slug":2045,"type":15},"Machine Learning","machine-learning",{"name":2047,"slug":2048,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2052,"name":2052,"fn":2053,"description":2054,"org":2055,"tags":2056,"stars":1984,"repoUrl":1985,"updatedAt":2061},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2057,2060],{"name":2058,"slug":2059,"type":15},"QA","qa",{"name":1903,"slug":1904,"type":15},"2026-07-14T05:25:53.673039",{"slug":2063,"name":2063,"fn":2064,"description":2065,"org":2066,"tags":2067,"stars":1984,"repoUrl":1985,"updatedAt":2070},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2068,2069],{"name":1873,"slug":1874,"type":15},{"name":1876,"slug":1877,"type":15},"2026-07-14T05:25:49.362534",{"slug":2072,"name":2072,"fn":2073,"description":2074,"org":2075,"tags":2076,"stars":1984,"repoUrl":1985,"updatedAt":2084},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2077,2080,2081],{"name":2078,"slug":2079,"type":15},"Code Review","code-review",{"name":2007,"slug":2008,"type":15},{"name":2082,"slug":2083,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2086,"name":2086,"fn":2087,"description":2088,"org":2089,"tags":2090,"stars":1984,"repoUrl":1985,"updatedAt":2093},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2091,2092],{"name":2058,"slug":2059,"type":15},{"name":1903,"slug":1904,"type":15},"2026-07-14T05:25:54.928983",{"slug":2095,"name":2095,"fn":2096,"description":2097,"org":2098,"tags":2099,"stars":1984,"repoUrl":1985,"updatedAt":2102},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2100,2101],{"name":1913,"slug":1914,"type":15},{"name":1994,"slug":1995,"type":15},"2026-07-30T05:29:03.275638",496]