[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-k8s-launch-kit-shared":3,"mdc--97lda5-key":34,"related-repo-nvidia-k8s-launch-kit-shared":1835,"related-org-nvidia-k8s-launch-kit-shared":1927},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"k8s-launch-kit-shared","manage NVIDIA k8s-launch-kit CLI patterns","k8s-launch-kit (l8k) CLI: Shared patterns for binary location, global flags, output formatting, exit codes, and error handling. Read this before using any other k8s-launch-kit skill.",{"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,17,20],{"name":13,"slug":14,"type":15},"CLI","cli","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Engineering","engineering",{"name":21,"slug":22,"type":15},"Kubernetes","kubernetes",14,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fk8s-launch-kit","2026-07-14T05:32:01.309487",null,4,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"K8s Launch Kit (l8k) is a CLI tool for deploying and managing NVIDIA cloud-native solutions on Kubernetes. The tool helps provide flexible deployment workflows for optimal network performance with SR-IOV, RDMA, and other networking technologies.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fk8s-launch-kit\u002Ftree\u002FHEAD\u002Fskills\u002Fk8s-launch-kit-shared","---\nname: k8s-launch-kit-shared\nversion: 1.0.0\ndescription: \"k8s-launch-kit (l8k) CLI: Shared patterns for binary location, global flags, output formatting, exit codes, and error handling. Read this before using any other k8s-launch-kit skill.\"\n---\n\n# l8k — Shared Reference\n\n## Installation\n\n```bash\n# Build and install (production — copies binary + profiles)\nmake build && sudo scripts\u002Finstall.sh\n\n# Development (symlinks into source tree)\nmake build && scripts\u002Finstall.sh --dev-env\n```\n\n## Install Paths\n\n| Path | Contents |\n|------|----------|\n| `\u002Fusr\u002Flocal\u002Fbin\u002Fl8k` | CLI binary (on PATH) |\n| `\u002Fusr\u002Flocal\u002Fshare\u002Fl8k\u002Fprofiles\u002F` | Go template profiles |\n| `\u002Fusr\u002Flocal\u002Fshare\u002Fl8k\u002Fpresets\u002F` | Topology presets (per `(machineType, gpuType)` directories) |\n| `\u002Fusr\u002Flocal\u002Fshare\u002Fl8k\u002Fl8k-config.yaml` | Default config |\n\nAfter installation, `l8k` is available system-wide.\n\n## Binary Discovery (for AI agents)\n\n**CRITICAL — follow these steps exactly:**\n1. Run `which l8k` in a single Bash call. If it returns a path, use it. Done.\n2. If `which l8k` fails (exit code 1), tell the user l8k is not installed. Point them to: `make build && sudo scripts\u002Finstall.sh`. **Stop — do not proceed.**\n3. **NEVER** do any of the following to find l8k:\n   - `find` or `ls` commands\n   - Spawn a subagent to locate the binary\n   - Check multiple paths or directories\n   - Explore the repo contents\n\n## Available Commands\n\n| Command | Description |\n|---------|-------------|\n| `l8k discover` | Discover cluster hardware and produce cluster-config.yaml |\n| `l8k generate` | Generate Kubernetes YAML manifests from config + profile (use `--for \u003Cpreset>` to skip cluster discovery for known SKUs) |\n| `l8k preset list` | List bundled topology presets (directory + machineType + gpuType) |\n| `l8k preset update` | Download latest topology presets from GitHub |\n| `l8k sosreport` | Collect diagnostic dump from cluster |\n| `l8k schema` | List all capabilities as JSON (profiles, flags, exit codes) |\n| `l8k version` | Print version information |\n\nThe root command `l8k --discover-cluster-config ...` still works for backward-compatible full-pipeline usage.\n\n## Global Flags\n\n| Flag | Description |\n|------|-------------|\n| `--kubeconfig \u003CPATH>` | Path to kubeconfig file (optional — falls back to `$KUBECONFIG` env var) |\n| `--user-config \u003CPATH>` | Path to user-supplied l8k-config.yaml |\n| `--output \u003CFORMAT>` | Output format: `text` (default), `json` |\n| `--yes` \u002F `-y` | Auto-confirm all prompts (root command only — **not available on subcommands**; `--output json` auto-confirms) |\n| `--quiet` \u002F `-q` | Suppress informational output (errors still shown) |\n| `--network-operator-namespace \u003CNS>` | Override network operator namespace (default: `nvidia-network-operator`). **No-op for `l8k discover`** — discover always bootstraps into `nvidia-k8s-launch-kit`; the flag still applies to `l8k generate` \u002F `l8k deploy` \u002F `l8k validate`. |\n| `--network-namespaces \u003CNS,...>` | Comma-separated namespaces for the secondary-network CRs + example test DaemonSets; one copy rendered per namespace (shared resources like IPPools\u002FNodePolicies are NOT duplicated). Default: `default` |\n| `--node-selector \u003CLABELS>` | Restrict to nodes matching labels (comma-separated, ANDed) |\n| `--image-pull-secrets \u003CNAMES>` | Image pull secret names for NicClusterPolicy (comma-separated) |\n\n`l8k discover` and `l8k generate` both accept the profile flags `--fabric`,\n`--deployment-type`, `--multirail`, `--spectrum-x`, `--multiplane-mode`, and\n`--number-of-planes`. Discovery persists the resolved values; later generation\nreuses them unless another explicit CLI override is supplied.\n\n## Agent \u002F JSON Mode\n\n**RULE: AI agents MUST always use `--output json 2>\u002Fdev\u002Fnull` when calling any l8k subcommand.** Never use text mode — it produces unstructured output with spinners and ANSI codes that is hard to parse.\n\n**Do NOT use `--yes` with subcommands** — it only exists on the root command and will cause \"unknown flag\" errors. `--output json` already auto-confirms all prompts (no interactive input needed).\n\n```bash\n# Correct\nl8k discover --output json 2>\u002Fdev\u002Fnull\nl8k generate --output json 2>\u002Fdev\u002Fnull\n\n# WRONG — --yes is not a valid flag on subcommands\nl8k discover --output json --yes 2>\u002Fdev\u002Fnull\n```\n\n- **stdout**: Exactly one JSON object (`JSONResult`) at completion\n- **stderr**: Human-readable log lines\n- Pipe with `jq` for downstream processing: `l8k discover ... --output json 2>\u002Fdev\u002Fnull | jq .success`\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| `0` | Success |\n| `1` | General\u002Funknown error |\n| `2` | Validation error — bad flags, missing required arguments, or invalid config |\n| `3` | Cluster error — kubeconfig invalid, API unreachable, missing CRDs, no NVIDIA NICs |\n| `4` | Deployment error — apply failed |\n| `5` | Partial success — discovery ok but deploy failed |\n\n## Structured Error Output (JSON mode)\n\n```json\n{\n  \"success\": false,\n  \"phase\": \"discover\",\n  \"deployed\": false,\n  \"error\": {\n    \"code\": \"CLUSTER_ERROR\",\n    \"message\": \"cluster discovery failed\",\n    \"category\": \"cluster\",\n    \"transient\": true,\n    \"suggestion\": \"Check that kubeconfig is valid and the cluster is reachable\"\n  },\n  \"messages\": [...]\n}\n```\n\nError categories: `validation`, `cluster`, `deployment`. The `transient` field\nhints whether retrying might help.\n\n## Schema Discovery\n\n```bash\n# List all l8k capabilities as JSON\nl8k schema\n```\n\nUse `l8k schema` to programmatically discover available profiles, fabrics,\ndeployment types, flags, exit codes, and output formats.\n\n## Security Rules\n\n- Confirm with the user before executing `--deploy` on a production cluster\n- Prefer `--dry-run` for destructive operations\n- Never expose kubeconfig contents in output\n\n## Network Operator Namespace Resolution\n\nApplies to `l8k generate` \u002F `l8k deploy` \u002F `l8k validate` only. `l8k discover`\nmanages its own private namespace (`nvidia-k8s-launch-kit`) and ignores this flag.\n\nBoth `nvidia-network-operator` and `network-operator` are common default namespaces\nfor an existing Network Operator install. If `l8k generate` \u002F `l8k deploy` \u002F\n`l8k validate` can't find Network Operator resources, retry with\n`--network-operator-namespace \u003Ccorrect-namespace>`.\n",{"data":35,"body":37},{"name":4,"version":36,"description":6},"1.0.0",{"type":38,"children":39},"root",[40,49,56,156,162,266,280,286,295,386,392,541,554,560,840,903,909,927,951,1074,1124,1130,1254,1260,1621,1654,1660,1687,1699,1705,1739,1745,1783,1829],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"l8k-shared-reference",[46],{"type":47,"value":48},"text","l8k — Shared Reference",{"type":41,"tag":50,"props":51,"children":53},"h2",{"id":52},"installation",[54],{"type":47,"value":55},"Installation",{"type":41,"tag":57,"props":58,"children":63},"pre",{"className":59,"code":60,"language":61,"meta":62,"style":62},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Build and install (production — copies binary + profiles)\nmake build && sudo scripts\u002Finstall.sh\n\n# Development (symlinks into source tree)\nmake build && scripts\u002Finstall.sh --dev-env\n","bash","",[64],{"type":41,"tag":65,"props":66,"children":67},"code",{"__ignoreMap":62},[68,80,112,122,130],{"type":41,"tag":69,"props":70,"children":73},"span",{"class":71,"line":72},"line",1,[74],{"type":41,"tag":69,"props":75,"children":77},{"style":76},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[78],{"type":47,"value":79},"# Build and install (production — copies binary + profiles)\n",{"type":41,"tag":69,"props":81,"children":83},{"class":71,"line":82},2,[84,90,96,102,107],{"type":41,"tag":69,"props":85,"children":87},{"style":86},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[88],{"type":47,"value":89},"make",{"type":41,"tag":69,"props":91,"children":93},{"style":92},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[94],{"type":47,"value":95}," build",{"type":41,"tag":69,"props":97,"children":99},{"style":98},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[100],{"type":47,"value":101}," &&",{"type":41,"tag":69,"props":103,"children":104},{"style":86},[105],{"type":47,"value":106}," sudo",{"type":41,"tag":69,"props":108,"children":109},{"style":92},[110],{"type":47,"value":111}," scripts\u002Finstall.sh\n",{"type":41,"tag":69,"props":113,"children":115},{"class":71,"line":114},3,[116],{"type":41,"tag":69,"props":117,"children":119},{"emptyLinePlaceholder":118},true,[120],{"type":47,"value":121},"\n",{"type":41,"tag":69,"props":123,"children":124},{"class":71,"line":27},[125],{"type":41,"tag":69,"props":126,"children":127},{"style":76},[128],{"type":47,"value":129},"# Development (symlinks into source tree)\n",{"type":41,"tag":69,"props":131,"children":133},{"class":71,"line":132},5,[134,138,142,146,151],{"type":41,"tag":69,"props":135,"children":136},{"style":86},[137],{"type":47,"value":89},{"type":41,"tag":69,"props":139,"children":140},{"style":92},[141],{"type":47,"value":95},{"type":41,"tag":69,"props":143,"children":144},{"style":98},[145],{"type":47,"value":101},{"type":41,"tag":69,"props":147,"children":148},{"style":86},[149],{"type":47,"value":150}," scripts\u002Finstall.sh",{"type":41,"tag":69,"props":152,"children":153},{"style":92},[154],{"type":47,"value":155}," --dev-env\n",{"type":41,"tag":50,"props":157,"children":159},{"id":158},"install-paths",[160],{"type":47,"value":161},"Install Paths",{"type":41,"tag":163,"props":164,"children":165},"table",{},[166,185],{"type":41,"tag":167,"props":168,"children":169},"thead",{},[170],{"type":41,"tag":171,"props":172,"children":173},"tr",{},[174,180],{"type":41,"tag":175,"props":176,"children":177},"th",{},[178],{"type":47,"value":179},"Path",{"type":41,"tag":175,"props":181,"children":182},{},[183],{"type":47,"value":184},"Contents",{"type":41,"tag":186,"props":187,"children":188},"tbody",{},[189,207,224,249],{"type":41,"tag":171,"props":190,"children":191},{},[192,202],{"type":41,"tag":193,"props":194,"children":195},"td",{},[196],{"type":41,"tag":65,"props":197,"children":199},{"className":198},[],[200],{"type":47,"value":201},"\u002Fusr\u002Flocal\u002Fbin\u002Fl8k",{"type":41,"tag":193,"props":203,"children":204},{},[205],{"type":47,"value":206},"CLI binary (on PATH)",{"type":41,"tag":171,"props":208,"children":209},{},[210,219],{"type":41,"tag":193,"props":211,"children":212},{},[213],{"type":41,"tag":65,"props":214,"children":216},{"className":215},[],[217],{"type":47,"value":218},"\u002Fusr\u002Flocal\u002Fshare\u002Fl8k\u002Fprofiles\u002F",{"type":41,"tag":193,"props":220,"children":221},{},[222],{"type":47,"value":223},"Go template profiles",{"type":41,"tag":171,"props":225,"children":226},{},[227,236],{"type":41,"tag":193,"props":228,"children":229},{},[230],{"type":41,"tag":65,"props":231,"children":233},{"className":232},[],[234],{"type":47,"value":235},"\u002Fusr\u002Flocal\u002Fshare\u002Fl8k\u002Fpresets\u002F",{"type":41,"tag":193,"props":237,"children":238},{},[239,241,247],{"type":47,"value":240},"Topology presets (per ",{"type":41,"tag":65,"props":242,"children":244},{"className":243},[],[245],{"type":47,"value":246},"(machineType, gpuType)",{"type":47,"value":248}," directories)",{"type":41,"tag":171,"props":250,"children":251},{},[252,261],{"type":41,"tag":193,"props":253,"children":254},{},[255],{"type":41,"tag":65,"props":256,"children":258},{"className":257},[],[259],{"type":47,"value":260},"\u002Fusr\u002Flocal\u002Fshare\u002Fl8k\u002Fl8k-config.yaml",{"type":41,"tag":193,"props":262,"children":263},{},[264],{"type":47,"value":265},"Default config",{"type":41,"tag":267,"props":268,"children":269},"p",{},[270,272,278],{"type":47,"value":271},"After installation, ",{"type":41,"tag":65,"props":273,"children":275},{"className":274},[],[276],{"type":47,"value":277},"l8k",{"type":47,"value":279}," is available system-wide.",{"type":41,"tag":50,"props":281,"children":283},{"id":282},"binary-discovery-for-ai-agents",[284],{"type":47,"value":285},"Binary Discovery (for AI agents)",{"type":41,"tag":267,"props":287,"children":288},{},[289],{"type":41,"tag":290,"props":291,"children":292},"strong",{},[293],{"type":47,"value":294},"CRITICAL — follow these steps exactly:",{"type":41,"tag":296,"props":297,"children":298},"ol",{},[299,313,338],{"type":41,"tag":300,"props":301,"children":302},"li",{},[303,305,311],{"type":47,"value":304},"Run ",{"type":41,"tag":65,"props":306,"children":308},{"className":307},[],[309],{"type":47,"value":310},"which l8k",{"type":47,"value":312}," in a single Bash call. If it returns a path, use it. Done.",{"type":41,"tag":300,"props":314,"children":315},{},[316,318,323,325,331,333],{"type":47,"value":317},"If ",{"type":41,"tag":65,"props":319,"children":321},{"className":320},[],[322],{"type":47,"value":310},{"type":47,"value":324}," fails (exit code 1), tell the user l8k is not installed. Point them to: ",{"type":41,"tag":65,"props":326,"children":328},{"className":327},[],[329],{"type":47,"value":330},"make build && sudo scripts\u002Finstall.sh",{"type":47,"value":332},". ",{"type":41,"tag":290,"props":334,"children":335},{},[336],{"type":47,"value":337},"Stop — do not proceed.",{"type":41,"tag":300,"props":339,"children":340},{},[341,346,348],{"type":41,"tag":290,"props":342,"children":343},{},[344],{"type":47,"value":345},"NEVER",{"type":47,"value":347}," do any of the following to find l8k:\n",{"type":41,"tag":349,"props":350,"children":351},"ul",{},[352,371,376,381],{"type":41,"tag":300,"props":353,"children":354},{},[355,361,363,369],{"type":41,"tag":65,"props":356,"children":358},{"className":357},[],[359],{"type":47,"value":360},"find",{"type":47,"value":362}," or ",{"type":41,"tag":65,"props":364,"children":366},{"className":365},[],[367],{"type":47,"value":368},"ls",{"type":47,"value":370}," commands",{"type":41,"tag":300,"props":372,"children":373},{},[374],{"type":47,"value":375},"Spawn a subagent to locate the binary",{"type":41,"tag":300,"props":377,"children":378},{},[379],{"type":47,"value":380},"Check multiple paths or directories",{"type":41,"tag":300,"props":382,"children":383},{},[384],{"type":47,"value":385},"Explore the repo contents",{"type":41,"tag":50,"props":387,"children":389},{"id":388},"available-commands",[390],{"type":47,"value":391},"Available Commands",{"type":41,"tag":163,"props":393,"children":394},{},[395,411],{"type":41,"tag":167,"props":396,"children":397},{},[398],{"type":41,"tag":171,"props":399,"children":400},{},[401,406],{"type":41,"tag":175,"props":402,"children":403},{},[404],{"type":47,"value":405},"Command",{"type":41,"tag":175,"props":407,"children":408},{},[409],{"type":47,"value":410},"Description",{"type":41,"tag":186,"props":412,"children":413},{},[414,431,456,473,490,507,524],{"type":41,"tag":171,"props":415,"children":416},{},[417,426],{"type":41,"tag":193,"props":418,"children":419},{},[420],{"type":41,"tag":65,"props":421,"children":423},{"className":422},[],[424],{"type":47,"value":425},"l8k discover",{"type":41,"tag":193,"props":427,"children":428},{},[429],{"type":47,"value":430},"Discover cluster hardware and produce cluster-config.yaml",{"type":41,"tag":171,"props":432,"children":433},{},[434,443],{"type":41,"tag":193,"props":435,"children":436},{},[437],{"type":41,"tag":65,"props":438,"children":440},{"className":439},[],[441],{"type":47,"value":442},"l8k generate",{"type":41,"tag":193,"props":444,"children":445},{},[446,448,454],{"type":47,"value":447},"Generate Kubernetes YAML manifests from config + profile (use ",{"type":41,"tag":65,"props":449,"children":451},{"className":450},[],[452],{"type":47,"value":453},"--for \u003Cpreset>",{"type":47,"value":455}," to skip cluster discovery for known SKUs)",{"type":41,"tag":171,"props":457,"children":458},{},[459,468],{"type":41,"tag":193,"props":460,"children":461},{},[462],{"type":41,"tag":65,"props":463,"children":465},{"className":464},[],[466],{"type":47,"value":467},"l8k preset list",{"type":41,"tag":193,"props":469,"children":470},{},[471],{"type":47,"value":472},"List bundled topology presets (directory + machineType + gpuType)",{"type":41,"tag":171,"props":474,"children":475},{},[476,485],{"type":41,"tag":193,"props":477,"children":478},{},[479],{"type":41,"tag":65,"props":480,"children":482},{"className":481},[],[483],{"type":47,"value":484},"l8k preset update",{"type":41,"tag":193,"props":486,"children":487},{},[488],{"type":47,"value":489},"Download latest topology presets from GitHub",{"type":41,"tag":171,"props":491,"children":492},{},[493,502],{"type":41,"tag":193,"props":494,"children":495},{},[496],{"type":41,"tag":65,"props":497,"children":499},{"className":498},[],[500],{"type":47,"value":501},"l8k sosreport",{"type":41,"tag":193,"props":503,"children":504},{},[505],{"type":47,"value":506},"Collect diagnostic dump from cluster",{"type":41,"tag":171,"props":508,"children":509},{},[510,519],{"type":41,"tag":193,"props":511,"children":512},{},[513],{"type":41,"tag":65,"props":514,"children":516},{"className":515},[],[517],{"type":47,"value":518},"l8k schema",{"type":41,"tag":193,"props":520,"children":521},{},[522],{"type":47,"value":523},"List all capabilities as JSON (profiles, flags, exit codes)",{"type":41,"tag":171,"props":525,"children":526},{},[527,536],{"type":41,"tag":193,"props":528,"children":529},{},[530],{"type":41,"tag":65,"props":531,"children":533},{"className":532},[],[534],{"type":47,"value":535},"l8k version",{"type":41,"tag":193,"props":537,"children":538},{},[539],{"type":47,"value":540},"Print version information",{"type":41,"tag":267,"props":542,"children":543},{},[544,546,552],{"type":47,"value":545},"The root command ",{"type":41,"tag":65,"props":547,"children":549},{"className":548},[],[550],{"type":47,"value":551},"l8k --discover-cluster-config ...",{"type":47,"value":553}," still works for backward-compatible full-pipeline usage.",{"type":41,"tag":50,"props":555,"children":557},{"id":556},"global-flags",[558],{"type":47,"value":559},"Global Flags",{"type":41,"tag":163,"props":561,"children":562},{},[563,578],{"type":41,"tag":167,"props":564,"children":565},{},[566],{"type":41,"tag":171,"props":567,"children":568},{},[569,574],{"type":41,"tag":175,"props":570,"children":571},{},[572],{"type":47,"value":573},"Flag",{"type":41,"tag":175,"props":575,"children":576},{},[577],{"type":47,"value":410},{"type":41,"tag":186,"props":579,"children":580},{},[581,606,623,653,693,717,783,806,823],{"type":41,"tag":171,"props":582,"children":583},{},[584,593],{"type":41,"tag":193,"props":585,"children":586},{},[587],{"type":41,"tag":65,"props":588,"children":590},{"className":589},[],[591],{"type":47,"value":592},"--kubeconfig \u003CPATH>",{"type":41,"tag":193,"props":594,"children":595},{},[596,598,604],{"type":47,"value":597},"Path to kubeconfig file (optional — falls back to ",{"type":41,"tag":65,"props":599,"children":601},{"className":600},[],[602],{"type":47,"value":603},"$KUBECONFIG",{"type":47,"value":605}," env var)",{"type":41,"tag":171,"props":607,"children":608},{},[609,618],{"type":41,"tag":193,"props":610,"children":611},{},[612],{"type":41,"tag":65,"props":613,"children":615},{"className":614},[],[616],{"type":47,"value":617},"--user-config \u003CPATH>",{"type":41,"tag":193,"props":619,"children":620},{},[621],{"type":47,"value":622},"Path to user-supplied l8k-config.yaml",{"type":41,"tag":171,"props":624,"children":625},{},[626,635],{"type":41,"tag":193,"props":627,"children":628},{},[629],{"type":41,"tag":65,"props":630,"children":632},{"className":631},[],[633],{"type":47,"value":634},"--output \u003CFORMAT>",{"type":41,"tag":193,"props":636,"children":637},{},[638,640,645,647],{"type":47,"value":639},"Output format: ",{"type":41,"tag":65,"props":641,"children":643},{"className":642},[],[644],{"type":47,"value":47},{"type":47,"value":646}," (default), ",{"type":41,"tag":65,"props":648,"children":650},{"className":649},[],[651],{"type":47,"value":652},"json",{"type":41,"tag":171,"props":654,"children":655},{},[656,673],{"type":41,"tag":193,"props":657,"children":658},{},[659,665,667],{"type":41,"tag":65,"props":660,"children":662},{"className":661},[],[663],{"type":47,"value":664},"--yes",{"type":47,"value":666}," \u002F ",{"type":41,"tag":65,"props":668,"children":670},{"className":669},[],[671],{"type":47,"value":672},"-y",{"type":41,"tag":193,"props":674,"children":675},{},[676,678,683,685,691],{"type":47,"value":677},"Auto-confirm all prompts (root command only — ",{"type":41,"tag":290,"props":679,"children":680},{},[681],{"type":47,"value":682},"not available on subcommands",{"type":47,"value":684},"; ",{"type":41,"tag":65,"props":686,"children":688},{"className":687},[],[689],{"type":47,"value":690},"--output json",{"type":47,"value":692}," auto-confirms)",{"type":41,"tag":171,"props":694,"children":695},{},[696,712],{"type":41,"tag":193,"props":697,"children":698},{},[699,705,706],{"type":41,"tag":65,"props":700,"children":702},{"className":701},[],[703],{"type":47,"value":704},"--quiet",{"type":47,"value":666},{"type":41,"tag":65,"props":707,"children":709},{"className":708},[],[710],{"type":47,"value":711},"-q",{"type":41,"tag":193,"props":713,"children":714},{},[715],{"type":47,"value":716},"Suppress informational output (errors still shown)",{"type":41,"tag":171,"props":718,"children":719},{},[720,729],{"type":41,"tag":193,"props":721,"children":722},{},[723],{"type":41,"tag":65,"props":724,"children":726},{"className":725},[],[727],{"type":47,"value":728},"--network-operator-namespace \u003CNS>",{"type":41,"tag":193,"props":730,"children":731},{},[732,734,740,742,752,754,760,762,767,768,774,775,781],{"type":47,"value":733},"Override network operator namespace (default: ",{"type":41,"tag":65,"props":735,"children":737},{"className":736},[],[738],{"type":47,"value":739},"nvidia-network-operator",{"type":47,"value":741},"). ",{"type":41,"tag":290,"props":743,"children":744},{},[745,747],{"type":47,"value":746},"No-op for ",{"type":41,"tag":65,"props":748,"children":750},{"className":749},[],[751],{"type":47,"value":425},{"type":47,"value":753}," — discover always bootstraps into ",{"type":41,"tag":65,"props":755,"children":757},{"className":756},[],[758],{"type":47,"value":759},"nvidia-k8s-launch-kit",{"type":47,"value":761},"; the flag still applies to ",{"type":41,"tag":65,"props":763,"children":765},{"className":764},[],[766],{"type":47,"value":442},{"type":47,"value":666},{"type":41,"tag":65,"props":769,"children":771},{"className":770},[],[772],{"type":47,"value":773},"l8k deploy",{"type":47,"value":666},{"type":41,"tag":65,"props":776,"children":778},{"className":777},[],[779],{"type":47,"value":780},"l8k validate",{"type":47,"value":782},".",{"type":41,"tag":171,"props":784,"children":785},{},[786,795],{"type":41,"tag":193,"props":787,"children":788},{},[789],{"type":41,"tag":65,"props":790,"children":792},{"className":791},[],[793],{"type":47,"value":794},"--network-namespaces \u003CNS,...>",{"type":41,"tag":193,"props":796,"children":797},{},[798,800],{"type":47,"value":799},"Comma-separated namespaces for the secondary-network CRs + example test DaemonSets; one copy rendered per namespace (shared resources like IPPools\u002FNodePolicies are NOT duplicated). Default: ",{"type":41,"tag":65,"props":801,"children":803},{"className":802},[],[804],{"type":47,"value":805},"default",{"type":41,"tag":171,"props":807,"children":808},{},[809,818],{"type":41,"tag":193,"props":810,"children":811},{},[812],{"type":41,"tag":65,"props":813,"children":815},{"className":814},[],[816],{"type":47,"value":817},"--node-selector \u003CLABELS>",{"type":41,"tag":193,"props":819,"children":820},{},[821],{"type":47,"value":822},"Restrict to nodes matching labels (comma-separated, ANDed)",{"type":41,"tag":171,"props":824,"children":825},{},[826,835],{"type":41,"tag":193,"props":827,"children":828},{},[829],{"type":41,"tag":65,"props":830,"children":832},{"className":831},[],[833],{"type":47,"value":834},"--image-pull-secrets \u003CNAMES>",{"type":41,"tag":193,"props":836,"children":837},{},[838],{"type":47,"value":839},"Image pull secret names for NicClusterPolicy (comma-separated)",{"type":41,"tag":267,"props":841,"children":842},{},[843,848,850,855,857,863,865,871,873,879,880,886,887,893,895,901],{"type":41,"tag":65,"props":844,"children":846},{"className":845},[],[847],{"type":47,"value":425},{"type":47,"value":849}," and ",{"type":41,"tag":65,"props":851,"children":853},{"className":852},[],[854],{"type":47,"value":442},{"type":47,"value":856}," both accept the profile flags ",{"type":41,"tag":65,"props":858,"children":860},{"className":859},[],[861],{"type":47,"value":862},"--fabric",{"type":47,"value":864},",\n",{"type":41,"tag":65,"props":866,"children":868},{"className":867},[],[869],{"type":47,"value":870},"--deployment-type",{"type":47,"value":872},", ",{"type":41,"tag":65,"props":874,"children":876},{"className":875},[],[877],{"type":47,"value":878},"--multirail",{"type":47,"value":872},{"type":41,"tag":65,"props":881,"children":883},{"className":882},[],[884],{"type":47,"value":885},"--spectrum-x",{"type":47,"value":872},{"type":41,"tag":65,"props":888,"children":890},{"className":889},[],[891],{"type":47,"value":892},"--multiplane-mode",{"type":47,"value":894},", and\n",{"type":41,"tag":65,"props":896,"children":898},{"className":897},[],[899],{"type":47,"value":900},"--number-of-planes",{"type":47,"value":902},". Discovery persists the resolved values; later generation\nreuses them unless another explicit CLI override is supplied.",{"type":41,"tag":50,"props":904,"children":906},{"id":905},"agent-json-mode",[907],{"type":47,"value":908},"Agent \u002F JSON Mode",{"type":41,"tag":267,"props":910,"children":911},{},[912,925],{"type":41,"tag":290,"props":913,"children":914},{},[915,917,923],{"type":47,"value":916},"RULE: AI agents MUST always use ",{"type":41,"tag":65,"props":918,"children":920},{"className":919},[],[921],{"type":47,"value":922},"--output json 2>\u002Fdev\u002Fnull",{"type":47,"value":924}," when calling any l8k subcommand.",{"type":47,"value":926}," Never use text mode — it produces unstructured output with spinners and ANSI codes that is hard to parse.",{"type":41,"tag":267,"props":928,"children":929},{},[930,942,944,949],{"type":41,"tag":290,"props":931,"children":932},{},[933,935,940],{"type":47,"value":934},"Do NOT use ",{"type":41,"tag":65,"props":936,"children":938},{"className":937},[],[939],{"type":47,"value":664},{"type":47,"value":941}," with subcommands",{"type":47,"value":943}," — it only exists on the root command and will cause \"unknown flag\" errors. ",{"type":41,"tag":65,"props":945,"children":947},{"className":946},[],[948],{"type":47,"value":690},{"type":47,"value":950}," already auto-confirms all prompts (no interactive input needed).",{"type":41,"tag":57,"props":952,"children":954},{"className":59,"code":953,"language":61,"meta":62,"style":62},"# Correct\nl8k discover --output json 2>\u002Fdev\u002Fnull\nl8k generate --output json 2>\u002Fdev\u002Fnull\n\n# WRONG — --yes is not a valid flag on subcommands\nl8k discover --output json --yes 2>\u002Fdev\u002Fnull\n",[955],{"type":41,"tag":65,"props":956,"children":957},{"__ignoreMap":62},[958,966,998,1026,1033,1041],{"type":41,"tag":69,"props":959,"children":960},{"class":71,"line":72},[961],{"type":41,"tag":69,"props":962,"children":963},{"style":76},[964],{"type":47,"value":965},"# Correct\n",{"type":41,"tag":69,"props":967,"children":968},{"class":71,"line":82},[969,973,978,983,988,993],{"type":41,"tag":69,"props":970,"children":971},{"style":86},[972],{"type":47,"value":277},{"type":41,"tag":69,"props":974,"children":975},{"style":92},[976],{"type":47,"value":977}," discover",{"type":41,"tag":69,"props":979,"children":980},{"style":92},[981],{"type":47,"value":982}," --output",{"type":41,"tag":69,"props":984,"children":985},{"style":92},[986],{"type":47,"value":987}," json",{"type":41,"tag":69,"props":989,"children":990},{"style":98},[991],{"type":47,"value":992}," 2>",{"type":41,"tag":69,"props":994,"children":995},{"style":92},[996],{"type":47,"value":997},"\u002Fdev\u002Fnull\n",{"type":41,"tag":69,"props":999,"children":1000},{"class":71,"line":114},[1001,1005,1010,1014,1018,1022],{"type":41,"tag":69,"props":1002,"children":1003},{"style":86},[1004],{"type":47,"value":277},{"type":41,"tag":69,"props":1006,"children":1007},{"style":92},[1008],{"type":47,"value":1009}," generate",{"type":41,"tag":69,"props":1011,"children":1012},{"style":92},[1013],{"type":47,"value":982},{"type":41,"tag":69,"props":1015,"children":1016},{"style":92},[1017],{"type":47,"value":987},{"type":41,"tag":69,"props":1019,"children":1020},{"style":98},[1021],{"type":47,"value":992},{"type":41,"tag":69,"props":1023,"children":1024},{"style":92},[1025],{"type":47,"value":997},{"type":41,"tag":69,"props":1027,"children":1028},{"class":71,"line":27},[1029],{"type":41,"tag":69,"props":1030,"children":1031},{"emptyLinePlaceholder":118},[1032],{"type":47,"value":121},{"type":41,"tag":69,"props":1034,"children":1035},{"class":71,"line":132},[1036],{"type":41,"tag":69,"props":1037,"children":1038},{"style":76},[1039],{"type":47,"value":1040},"# WRONG — --yes is not a valid flag on subcommands\n",{"type":41,"tag":69,"props":1042,"children":1044},{"class":71,"line":1043},6,[1045,1049,1053,1057,1061,1066,1070],{"type":41,"tag":69,"props":1046,"children":1047},{"style":86},[1048],{"type":47,"value":277},{"type":41,"tag":69,"props":1050,"children":1051},{"style":92},[1052],{"type":47,"value":977},{"type":41,"tag":69,"props":1054,"children":1055},{"style":92},[1056],{"type":47,"value":982},{"type":41,"tag":69,"props":1058,"children":1059},{"style":92},[1060],{"type":47,"value":987},{"type":41,"tag":69,"props":1062,"children":1063},{"style":92},[1064],{"type":47,"value":1065}," --yes",{"type":41,"tag":69,"props":1067,"children":1068},{"style":98},[1069],{"type":47,"value":992},{"type":41,"tag":69,"props":1071,"children":1072},{"style":92},[1073],{"type":47,"value":997},{"type":41,"tag":349,"props":1075,"children":1076},{},[1077,1095,1105],{"type":41,"tag":300,"props":1078,"children":1079},{},[1080,1085,1087,1093],{"type":41,"tag":290,"props":1081,"children":1082},{},[1083],{"type":47,"value":1084},"stdout",{"type":47,"value":1086},": Exactly one JSON object (",{"type":41,"tag":65,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":47,"value":1092},"JSONResult",{"type":47,"value":1094},") at completion",{"type":41,"tag":300,"props":1096,"children":1097},{},[1098,1103],{"type":41,"tag":290,"props":1099,"children":1100},{},[1101],{"type":47,"value":1102},"stderr",{"type":47,"value":1104},": Human-readable log lines",{"type":41,"tag":300,"props":1106,"children":1107},{},[1108,1110,1116,1118],{"type":47,"value":1109},"Pipe with ",{"type":41,"tag":65,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":47,"value":1115},"jq",{"type":47,"value":1117}," for downstream processing: ",{"type":41,"tag":65,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":47,"value":1123},"l8k discover ... --output json 2>\u002Fdev\u002Fnull | jq .success",{"type":41,"tag":50,"props":1125,"children":1127},{"id":1126},"exit-codes",[1128],{"type":47,"value":1129},"Exit Codes",{"type":41,"tag":163,"props":1131,"children":1132},{},[1133,1149],{"type":41,"tag":167,"props":1134,"children":1135},{},[1136],{"type":41,"tag":171,"props":1137,"children":1138},{},[1139,1144],{"type":41,"tag":175,"props":1140,"children":1141},{},[1142],{"type":47,"value":1143},"Code",{"type":41,"tag":175,"props":1145,"children":1146},{},[1147],{"type":47,"value":1148},"Meaning",{"type":41,"tag":186,"props":1150,"children":1151},{},[1152,1169,1186,1203,1220,1237],{"type":41,"tag":171,"props":1153,"children":1154},{},[1155,1164],{"type":41,"tag":193,"props":1156,"children":1157},{},[1158],{"type":41,"tag":65,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":47,"value":1163},"0",{"type":41,"tag":193,"props":1165,"children":1166},{},[1167],{"type":47,"value":1168},"Success",{"type":41,"tag":171,"props":1170,"children":1171},{},[1172,1181],{"type":41,"tag":193,"props":1173,"children":1174},{},[1175],{"type":41,"tag":65,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":47,"value":1180},"1",{"type":41,"tag":193,"props":1182,"children":1183},{},[1184],{"type":47,"value":1185},"General\u002Funknown error",{"type":41,"tag":171,"props":1187,"children":1188},{},[1189,1198],{"type":41,"tag":193,"props":1190,"children":1191},{},[1192],{"type":41,"tag":65,"props":1193,"children":1195},{"className":1194},[],[1196],{"type":47,"value":1197},"2",{"type":41,"tag":193,"props":1199,"children":1200},{},[1201],{"type":47,"value":1202},"Validation error — bad flags, missing required arguments, or invalid config",{"type":41,"tag":171,"props":1204,"children":1205},{},[1206,1215],{"type":41,"tag":193,"props":1207,"children":1208},{},[1209],{"type":41,"tag":65,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":47,"value":1214},"3",{"type":41,"tag":193,"props":1216,"children":1217},{},[1218],{"type":47,"value":1219},"Cluster error — kubeconfig invalid, API unreachable, missing CRDs, no NVIDIA NICs",{"type":41,"tag":171,"props":1221,"children":1222},{},[1223,1232],{"type":41,"tag":193,"props":1224,"children":1225},{},[1226],{"type":41,"tag":65,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":47,"value":1231},"4",{"type":41,"tag":193,"props":1233,"children":1234},{},[1235],{"type":47,"value":1236},"Deployment error — apply failed",{"type":41,"tag":171,"props":1238,"children":1239},{},[1240,1249],{"type":41,"tag":193,"props":1241,"children":1242},{},[1243],{"type":41,"tag":65,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":47,"value":1248},"5",{"type":41,"tag":193,"props":1250,"children":1251},{},[1252],{"type":47,"value":1253},"Partial success — discovery ok but deploy failed",{"type":41,"tag":50,"props":1255,"children":1257},{"id":1256},"structured-error-output-json-mode",[1258],{"type":47,"value":1259},"Structured Error Output (JSON mode)",{"type":41,"tag":57,"props":1261,"children":1264},{"className":1262,"code":1263,"language":652,"meta":62,"style":62},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"success\": false,\n  \"phase\": \"discover\",\n  \"deployed\": false,\n  \"error\": {\n    \"code\": \"CLUSTER_ERROR\",\n    \"message\": \"cluster discovery failed\",\n    \"category\": \"cluster\",\n    \"transient\": true,\n    \"suggestion\": \"Check that kubeconfig is valid and the cluster is reachable\"\n  },\n  \"messages\": [...]\n}\n",[1265],{"type":41,"tag":65,"props":1266,"children":1267},{"__ignoreMap":62},[1268,1276,1305,1343,1367,1392,1429,1467,1505,1531,1566,1575,1612],{"type":41,"tag":69,"props":1269,"children":1270},{"class":71,"line":72},[1271],{"type":41,"tag":69,"props":1272,"children":1273},{"style":98},[1274],{"type":47,"value":1275},"{\n",{"type":41,"tag":69,"props":1277,"children":1278},{"class":71,"line":82},[1279,1284,1290,1295,1300],{"type":41,"tag":69,"props":1280,"children":1281},{"style":98},[1282],{"type":47,"value":1283},"  \"",{"type":41,"tag":69,"props":1285,"children":1287},{"style":1286},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1288],{"type":47,"value":1289},"success",{"type":41,"tag":69,"props":1291,"children":1292},{"style":98},[1293],{"type":47,"value":1294},"\"",{"type":41,"tag":69,"props":1296,"children":1297},{"style":98},[1298],{"type":47,"value":1299},":",{"type":41,"tag":69,"props":1301,"children":1302},{"style":98},[1303],{"type":47,"value":1304}," false,\n",{"type":41,"tag":69,"props":1306,"children":1307},{"class":71,"line":114},[1308,1312,1317,1321,1325,1330,1335,1339],{"type":41,"tag":69,"props":1309,"children":1310},{"style":98},[1311],{"type":47,"value":1283},{"type":41,"tag":69,"props":1313,"children":1314},{"style":1286},[1315],{"type":47,"value":1316},"phase",{"type":41,"tag":69,"props":1318,"children":1319},{"style":98},[1320],{"type":47,"value":1294},{"type":41,"tag":69,"props":1322,"children":1323},{"style":98},[1324],{"type":47,"value":1299},{"type":41,"tag":69,"props":1326,"children":1327},{"style":98},[1328],{"type":47,"value":1329}," \"",{"type":41,"tag":69,"props":1331,"children":1332},{"style":92},[1333],{"type":47,"value":1334},"discover",{"type":41,"tag":69,"props":1336,"children":1337},{"style":98},[1338],{"type":47,"value":1294},{"type":41,"tag":69,"props":1340,"children":1341},{"style":98},[1342],{"type":47,"value":864},{"type":41,"tag":69,"props":1344,"children":1345},{"class":71,"line":27},[1346,1350,1355,1359,1363],{"type":41,"tag":69,"props":1347,"children":1348},{"style":98},[1349],{"type":47,"value":1283},{"type":41,"tag":69,"props":1351,"children":1352},{"style":1286},[1353],{"type":47,"value":1354},"deployed",{"type":41,"tag":69,"props":1356,"children":1357},{"style":98},[1358],{"type":47,"value":1294},{"type":41,"tag":69,"props":1360,"children":1361},{"style":98},[1362],{"type":47,"value":1299},{"type":41,"tag":69,"props":1364,"children":1365},{"style":98},[1366],{"type":47,"value":1304},{"type":41,"tag":69,"props":1368,"children":1369},{"class":71,"line":132},[1370,1374,1379,1383,1387],{"type":41,"tag":69,"props":1371,"children":1372},{"style":98},[1373],{"type":47,"value":1283},{"type":41,"tag":69,"props":1375,"children":1376},{"style":1286},[1377],{"type":47,"value":1378},"error",{"type":41,"tag":69,"props":1380,"children":1381},{"style":98},[1382],{"type":47,"value":1294},{"type":41,"tag":69,"props":1384,"children":1385},{"style":98},[1386],{"type":47,"value":1299},{"type":41,"tag":69,"props":1388,"children":1389},{"style":98},[1390],{"type":47,"value":1391}," {\n",{"type":41,"tag":69,"props":1393,"children":1394},{"class":71,"line":1043},[1395,1400,1404,1408,1412,1416,1421,1425],{"type":41,"tag":69,"props":1396,"children":1397},{"style":98},[1398],{"type":47,"value":1399},"    \"",{"type":41,"tag":69,"props":1401,"children":1402},{"style":86},[1403],{"type":47,"value":65},{"type":41,"tag":69,"props":1405,"children":1406},{"style":98},[1407],{"type":47,"value":1294},{"type":41,"tag":69,"props":1409,"children":1410},{"style":98},[1411],{"type":47,"value":1299},{"type":41,"tag":69,"props":1413,"children":1414},{"style":98},[1415],{"type":47,"value":1329},{"type":41,"tag":69,"props":1417,"children":1418},{"style":92},[1419],{"type":47,"value":1420},"CLUSTER_ERROR",{"type":41,"tag":69,"props":1422,"children":1423},{"style":98},[1424],{"type":47,"value":1294},{"type":41,"tag":69,"props":1426,"children":1427},{"style":98},[1428],{"type":47,"value":864},{"type":41,"tag":69,"props":1430,"children":1432},{"class":71,"line":1431},7,[1433,1437,1442,1446,1450,1454,1459,1463],{"type":41,"tag":69,"props":1434,"children":1435},{"style":98},[1436],{"type":47,"value":1399},{"type":41,"tag":69,"props":1438,"children":1439},{"style":86},[1440],{"type":47,"value":1441},"message",{"type":41,"tag":69,"props":1443,"children":1444},{"style":98},[1445],{"type":47,"value":1294},{"type":41,"tag":69,"props":1447,"children":1448},{"style":98},[1449],{"type":47,"value":1299},{"type":41,"tag":69,"props":1451,"children":1452},{"style":98},[1453],{"type":47,"value":1329},{"type":41,"tag":69,"props":1455,"children":1456},{"style":92},[1457],{"type":47,"value":1458},"cluster discovery failed",{"type":41,"tag":69,"props":1460,"children":1461},{"style":98},[1462],{"type":47,"value":1294},{"type":41,"tag":69,"props":1464,"children":1465},{"style":98},[1466],{"type":47,"value":864},{"type":41,"tag":69,"props":1468,"children":1470},{"class":71,"line":1469},8,[1471,1475,1480,1484,1488,1492,1497,1501],{"type":41,"tag":69,"props":1472,"children":1473},{"style":98},[1474],{"type":47,"value":1399},{"type":41,"tag":69,"props":1476,"children":1477},{"style":86},[1478],{"type":47,"value":1479},"category",{"type":41,"tag":69,"props":1481,"children":1482},{"style":98},[1483],{"type":47,"value":1294},{"type":41,"tag":69,"props":1485,"children":1486},{"style":98},[1487],{"type":47,"value":1299},{"type":41,"tag":69,"props":1489,"children":1490},{"style":98},[1491],{"type":47,"value":1329},{"type":41,"tag":69,"props":1493,"children":1494},{"style":92},[1495],{"type":47,"value":1496},"cluster",{"type":41,"tag":69,"props":1498,"children":1499},{"style":98},[1500],{"type":47,"value":1294},{"type":41,"tag":69,"props":1502,"children":1503},{"style":98},[1504],{"type":47,"value":864},{"type":41,"tag":69,"props":1506,"children":1508},{"class":71,"line":1507},9,[1509,1513,1518,1522,1526],{"type":41,"tag":69,"props":1510,"children":1511},{"style":98},[1512],{"type":47,"value":1399},{"type":41,"tag":69,"props":1514,"children":1515},{"style":86},[1516],{"type":47,"value":1517},"transient",{"type":41,"tag":69,"props":1519,"children":1520},{"style":98},[1521],{"type":47,"value":1294},{"type":41,"tag":69,"props":1523,"children":1524},{"style":98},[1525],{"type":47,"value":1299},{"type":41,"tag":69,"props":1527,"children":1528},{"style":98},[1529],{"type":47,"value":1530}," true,\n",{"type":41,"tag":69,"props":1532,"children":1534},{"class":71,"line":1533},10,[1535,1539,1544,1548,1552,1556,1561],{"type":41,"tag":69,"props":1536,"children":1537},{"style":98},[1538],{"type":47,"value":1399},{"type":41,"tag":69,"props":1540,"children":1541},{"style":86},[1542],{"type":47,"value":1543},"suggestion",{"type":41,"tag":69,"props":1545,"children":1546},{"style":98},[1547],{"type":47,"value":1294},{"type":41,"tag":69,"props":1549,"children":1550},{"style":98},[1551],{"type":47,"value":1299},{"type":41,"tag":69,"props":1553,"children":1554},{"style":98},[1555],{"type":47,"value":1329},{"type":41,"tag":69,"props":1557,"children":1558},{"style":92},[1559],{"type":47,"value":1560},"Check that kubeconfig is valid and the cluster is reachable",{"type":41,"tag":69,"props":1562,"children":1563},{"style":98},[1564],{"type":47,"value":1565},"\"\n",{"type":41,"tag":69,"props":1567,"children":1569},{"class":71,"line":1568},11,[1570],{"type":41,"tag":69,"props":1571,"children":1572},{"style":98},[1573],{"type":47,"value":1574},"  },\n",{"type":41,"tag":69,"props":1576,"children":1578},{"class":71,"line":1577},12,[1579,1583,1588,1592,1596,1601,1607],{"type":41,"tag":69,"props":1580,"children":1581},{"style":98},[1582],{"type":47,"value":1283},{"type":41,"tag":69,"props":1584,"children":1585},{"style":1286},[1586],{"type":47,"value":1587},"messages",{"type":41,"tag":69,"props":1589,"children":1590},{"style":98},[1591],{"type":47,"value":1294},{"type":41,"tag":69,"props":1593,"children":1594},{"style":98},[1595],{"type":47,"value":1299},{"type":41,"tag":69,"props":1597,"children":1598},{"style":98},[1599],{"type":47,"value":1600}," [",{"type":41,"tag":69,"props":1602,"children":1604},{"style":1603},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1605],{"type":47,"value":1606},"...",{"type":41,"tag":69,"props":1608,"children":1609},{"style":98},[1610],{"type":47,"value":1611},"]\n",{"type":41,"tag":69,"props":1613,"children":1615},{"class":71,"line":1614},13,[1616],{"type":41,"tag":69,"props":1617,"children":1618},{"style":98},[1619],{"type":47,"value":1620},"}\n",{"type":41,"tag":267,"props":1622,"children":1623},{},[1624,1626,1632,1633,1638,1639,1645,1647,1652],{"type":47,"value":1625},"Error categories: ",{"type":41,"tag":65,"props":1627,"children":1629},{"className":1628},[],[1630],{"type":47,"value":1631},"validation",{"type":47,"value":872},{"type":41,"tag":65,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":47,"value":1496},{"type":47,"value":872},{"type":41,"tag":65,"props":1640,"children":1642},{"className":1641},[],[1643],{"type":47,"value":1644},"deployment",{"type":47,"value":1646},". The ",{"type":41,"tag":65,"props":1648,"children":1650},{"className":1649},[],[1651],{"type":47,"value":1517},{"type":47,"value":1653}," field\nhints whether retrying might help.",{"type":41,"tag":50,"props":1655,"children":1657},{"id":1656},"schema-discovery",[1658],{"type":47,"value":1659},"Schema Discovery",{"type":41,"tag":57,"props":1661,"children":1663},{"className":59,"code":1662,"language":61,"meta":62,"style":62},"# List all l8k capabilities as JSON\nl8k schema\n",[1664],{"type":41,"tag":65,"props":1665,"children":1666},{"__ignoreMap":62},[1667,1675],{"type":41,"tag":69,"props":1668,"children":1669},{"class":71,"line":72},[1670],{"type":41,"tag":69,"props":1671,"children":1672},{"style":76},[1673],{"type":47,"value":1674},"# List all l8k capabilities as JSON\n",{"type":41,"tag":69,"props":1676,"children":1677},{"class":71,"line":82},[1678,1682],{"type":41,"tag":69,"props":1679,"children":1680},{"style":86},[1681],{"type":47,"value":277},{"type":41,"tag":69,"props":1683,"children":1684},{"style":92},[1685],{"type":47,"value":1686}," schema\n",{"type":41,"tag":267,"props":1688,"children":1689},{},[1690,1692,1697],{"type":47,"value":1691},"Use ",{"type":41,"tag":65,"props":1693,"children":1695},{"className":1694},[],[1696],{"type":47,"value":518},{"type":47,"value":1698}," to programmatically discover available profiles, fabrics,\ndeployment types, flags, exit codes, and output formats.",{"type":41,"tag":50,"props":1700,"children":1702},{"id":1701},"security-rules",[1703],{"type":47,"value":1704},"Security Rules",{"type":41,"tag":349,"props":1706,"children":1707},{},[1708,1721,1734],{"type":41,"tag":300,"props":1709,"children":1710},{},[1711,1713,1719],{"type":47,"value":1712},"Confirm with the user before executing ",{"type":41,"tag":65,"props":1714,"children":1716},{"className":1715},[],[1717],{"type":47,"value":1718},"--deploy",{"type":47,"value":1720}," on a production cluster",{"type":41,"tag":300,"props":1722,"children":1723},{},[1724,1726,1732],{"type":47,"value":1725},"Prefer ",{"type":41,"tag":65,"props":1727,"children":1729},{"className":1728},[],[1730],{"type":47,"value":1731},"--dry-run",{"type":47,"value":1733}," for destructive operations",{"type":41,"tag":300,"props":1735,"children":1736},{},[1737],{"type":47,"value":1738},"Never expose kubeconfig contents in output",{"type":41,"tag":50,"props":1740,"children":1742},{"id":1741},"network-operator-namespace-resolution",[1743],{"type":47,"value":1744},"Network Operator Namespace Resolution",{"type":41,"tag":267,"props":1746,"children":1747},{},[1748,1750,1755,1756,1761,1762,1767,1769,1774,1776,1781],{"type":47,"value":1749},"Applies to ",{"type":41,"tag":65,"props":1751,"children":1753},{"className":1752},[],[1754],{"type":47,"value":442},{"type":47,"value":666},{"type":41,"tag":65,"props":1757,"children":1759},{"className":1758},[],[1760],{"type":47,"value":773},{"type":47,"value":666},{"type":41,"tag":65,"props":1763,"children":1765},{"className":1764},[],[1766],{"type":47,"value":780},{"type":47,"value":1768}," only. ",{"type":41,"tag":65,"props":1770,"children":1772},{"className":1771},[],[1773],{"type":47,"value":425},{"type":47,"value":1775},"\nmanages its own private namespace (",{"type":41,"tag":65,"props":1777,"children":1779},{"className":1778},[],[1780],{"type":47,"value":759},{"type":47,"value":1782},") and ignores this flag.",{"type":41,"tag":267,"props":1784,"children":1785},{},[1786,1788,1793,1794,1800,1802,1807,1808,1813,1815,1820,1822,1828],{"type":47,"value":1787},"Both ",{"type":41,"tag":65,"props":1789,"children":1791},{"className":1790},[],[1792],{"type":47,"value":739},{"type":47,"value":849},{"type":41,"tag":65,"props":1795,"children":1797},{"className":1796},[],[1798],{"type":47,"value":1799},"network-operator",{"type":47,"value":1801}," are common default namespaces\nfor an existing Network Operator install. If ",{"type":41,"tag":65,"props":1803,"children":1805},{"className":1804},[],[1806],{"type":47,"value":442},{"type":47,"value":666},{"type":41,"tag":65,"props":1809,"children":1811},{"className":1810},[],[1812],{"type":47,"value":773},{"type":47,"value":1814}," \u002F\n",{"type":41,"tag":65,"props":1816,"children":1818},{"className":1817},[],[1819],{"type":47,"value":780},{"type":47,"value":1821}," can't find Network Operator resources, retry with\n",{"type":41,"tag":65,"props":1823,"children":1825},{"className":1824},[],[1826],{"type":47,"value":1827},"--network-operator-namespace \u003Ccorrect-namespace>",{"type":47,"value":782},{"type":41,"tag":1830,"props":1831,"children":1832},"style",{},[1833],{"type":47,"value":1834},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1836,"total":1533},[1837,1851,1864,1880,1892,1906,1920],{"slug":1838,"name":1838,"fn":1839,"description":1840,"org":1841,"tags":1842,"stars":23,"repoUrl":24,"updatedAt":1850},"k8s-launch-kit-config","configure k8s-launch-kit clusters","Use this skill when the user needs help understanding, creating, or editing a k8s-launch-kit (l8k) configuration file (l8k-config.yaml or cluster-config.yaml). Activate for: config file questions, parameter tuning, subnet configuration, NV-IPAM setup, DOCA driver settings, maintenance concurrency, NIC configuration operator settings, changing MTU, VFs, resource names, or understanding what any config field does.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1843,1846,1848,1849],{"name":1844,"slug":1845,"type":15},"Configuration","configuration",{"name":1847,"slug":1644,"type":15},"Deployment",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:29:15.229216",{"slug":1852,"name":1852,"fn":1853,"description":1854,"org":1855,"tags":1856,"stars":23,"repoUrl":24,"updatedAt":1863},"k8s-launch-kit-deploy","deploy NVIDIA networking manifests to Kubernetes","Use this skill when the user wants to deploy generated NVIDIA networking manifests to a Kubernetes cluster using k8s-launch-kit (l8k). Activate for: applying manifests, deploying to cluster, the `l8k deploy` subcommand or the legacy --deploy flag on `l8k generate`, applying generated files, or any mention of pushing l8k output to a live cluster. Even if the user just says 'apply these' or 'push to cluster' after generating manifests, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1857,1858,1859,1862],{"name":1847,"slug":1644,"type":15},{"name":21,"slug":22,"type":15},{"name":1860,"slug":1861,"type":15},"Networking","networking",{"name":9,"slug":8,"type":15},"2026-07-14T05:31:50.114923",{"slug":1865,"name":1865,"fn":1866,"description":1867,"org":1868,"tags":1869,"stars":23,"repoUrl":24,"updatedAt":1879},"k8s-launch-kit-discover","discover Kubernetes cluster network hardware capabilities","Use this skill when the user wants to discover their Kubernetes cluster's network hardware capabilities using k8s-launch-kit (l8k). Activate for: cluster discovery, hardware detection, NIC detection, finding what GPUs or NICs are in a cluster, creating a cluster config file, or when the user says 'discover' in the context of l8k or NVIDIA networking.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1870,1873,1874,1875,1876],{"name":1871,"slug":1872,"type":15},"Hardware","hardware",{"name":21,"slug":22,"type":15},{"name":1860,"slug":1861,"type":15},{"name":9,"slug":8,"type":15},{"name":1877,"slug":1878,"type":15},"Operations","operations","2026-07-14T05:31:58.825512",{"slug":1881,"name":1881,"fn":1882,"description":1883,"org":1884,"tags":1885,"stars":23,"repoUrl":24,"updatedAt":1891},"k8s-launch-kit-dryrun","preview NVIDIA networking deployment changes","Use this skill when the user wants to preview what k8s-launch-kit (l8k) would deploy without making changes, or wants to safely validate their configuration before applying. Activate for: dry-run, preview, validation, 'what would happen if', testing configurations, schema discovery, checking generated manifests, or any cautious pre-deployment step. Also use when the user asks 'is my config valid' or 'show me what would be created' -- even without mentioning dry-run explicitly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1886,1887,1888,1889,1890],{"name":1844,"slug":1845,"type":15},{"name":1847,"slug":1644,"type":15},{"name":21,"slug":22,"type":15},{"name":1860,"slug":1861,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:31:56.325698",{"slug":1893,"name":1893,"fn":1894,"description":1895,"org":1896,"tags":1897,"stars":23,"repoUrl":24,"updatedAt":1905},"k8s-launch-kit-generate","generate Kubernetes manifests for NVIDIA networking","Use this skill when the user wants to generate Kubernetes YAML manifests for NVIDIA networking deployment using k8s-launch-kit (l8k). Activate for: manifest generation, profile selection, choosing between SR-IOV\u002Fhost-device\u002FRDMA-shared\u002FIPoIB\u002FMacVLAN\u002FSpectrum-X, creating deployment files, or when the user asks 'which profile should I use' or needs help choosing a network configuration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1898,1899,1900,1901,1902],{"name":1847,"slug":1644,"type":15},{"name":21,"slug":22,"type":15},{"name":1860,"slug":1861,"type":15},{"name":9,"slug":8,"type":15},{"name":1903,"slug":1904,"type":15},"YAML","yaml","2026-07-14T05:31:51.352013",{"slug":1907,"name":1907,"fn":1908,"description":1909,"org":1910,"tags":1911,"stars":23,"repoUrl":24,"updatedAt":1919},"k8s-launch-kit-pipeline","run end-to-end NVIDIA networking deployment pipelines","Use this skill when the user wants to run the full k8s-launch-kit (l8k) pipeline end-to-end: discover cluster hardware, select a profile, generate manifests, and deploy them all in one command. Also activate for CI\u002FCD integration, automation pipelines, 'one-liner', 'complete workflow', or end-to-end NVIDIA networking deployment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1912,1915,1916,1917,1918],{"name":1913,"slug":1914,"type":15},"Automation","automation",{"name":1847,"slug":1644,"type":15},{"name":21,"slug":22,"type":15},{"name":1860,"slug":1861,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:31:55.07782",{"slug":4,"name":4,"fn":5,"description":6,"org":1921,"tags":1922,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1923,1924,1925,1926],{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"items":1928,"total":2083},[1929,1947,1963,1974,1986,2000,2013,2027,2040,2051,2065,2074],{"slug":1930,"name":1930,"fn":1931,"description":1932,"org":1933,"tags":1934,"stars":1944,"repoUrl":1945,"updatedAt":1946},"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},[1935,1938,1941],{"name":1936,"slug":1937,"type":15},"Documentation","documentation",{"name":1939,"slug":1940,"type":15},"MCP","mcp",{"name":1942,"slug":1943,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1948,"name":1948,"fn":1949,"description":1950,"org":1951,"tags":1952,"stars":1960,"repoUrl":1961,"updatedAt":1962},"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},[1953,1956,1957],{"name":1954,"slug":1955,"type":15},"Containers","containers",{"name":1847,"slug":1644,"type":15},{"name":1958,"slug":1959,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1964,"name":1964,"fn":1965,"description":1966,"org":1967,"tags":1968,"stars":1960,"repoUrl":1961,"updatedAt":1973},"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},[1969,1972],{"name":1970,"slug":1971,"type":15},"CI\u002FCD","ci-cd",{"name":1847,"slug":1644,"type":15},"2026-07-14T05:25:59.97109",{"slug":1975,"name":1975,"fn":1976,"description":1977,"org":1978,"tags":1979,"stars":1960,"repoUrl":1961,"updatedAt":1985},"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},[1980,1981,1982],{"name":1970,"slug":1971,"type":15},{"name":1847,"slug":1644,"type":15},{"name":1983,"slug":1984,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1987,"name":1987,"fn":1988,"description":1989,"org":1990,"tags":1991,"stars":1960,"repoUrl":1961,"updatedAt":1999},"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},[1992,1995,1996],{"name":1993,"slug":1994,"type":15},"Debugging","debugging",{"name":1983,"slug":1984,"type":15},{"name":1997,"slug":1998,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2001,"name":2001,"fn":2002,"description":2003,"org":2004,"tags":2005,"stars":1960,"repoUrl":1961,"updatedAt":2012},"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},[2006,2009],{"name":2007,"slug":2008,"type":15},"Best Practices","best-practices",{"name":2010,"slug":2011,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2014,"name":2014,"fn":2015,"description":2016,"org":2017,"tags":2018,"stars":1960,"repoUrl":1961,"updatedAt":2026},"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},[2019,2022,2025],{"name":2020,"slug":2021,"type":15},"Machine Learning","machine-learning",{"name":2023,"slug":2024,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2028,"name":2028,"fn":2029,"description":2030,"org":2031,"tags":2032,"stars":1960,"repoUrl":1961,"updatedAt":2039},"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},[2033,2036],{"name":2034,"slug":2035,"type":15},"QA","qa",{"name":2037,"slug":2038,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":2041,"name":2041,"fn":2042,"description":2043,"org":2044,"tags":2045,"stars":1960,"repoUrl":1961,"updatedAt":2050},"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},[2046,2047],{"name":1847,"slug":1644,"type":15},{"name":2048,"slug":2049,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2052,"name":2052,"fn":2053,"description":2054,"org":2055,"tags":2056,"stars":1960,"repoUrl":1961,"updatedAt":2064},"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},[2057,2060,2061],{"name":2058,"slug":2059,"type":15},"Code Review","code-review",{"name":1983,"slug":1984,"type":15},{"name":2062,"slug":2063,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2066,"name":2066,"fn":2067,"description":2068,"org":2069,"tags":2070,"stars":1960,"repoUrl":1961,"updatedAt":2073},"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},[2071,2072],{"name":2034,"slug":2035,"type":15},{"name":2037,"slug":2038,"type":15},"2026-07-14T05:25:54.928983",{"slug":2075,"name":2075,"fn":2076,"description":2077,"org":2078,"tags":2079,"stars":1960,"repoUrl":1961,"updatedAt":2082},"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},[2080,2081],{"name":1913,"slug":1914,"type":15},{"name":1970,"slug":1971,"type":15},"2026-07-30T05:29:03.275638",496]