[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-nemo-relay-plugin-build":3,"mdc--q2ztve-key":52,"related-repo-nvidia-nemo-relay-plugin-build":1101,"related-org-nvidia-nemo-relay-plugin-build":1210},{"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":47,"sourceUrl":50,"mdContent":51},"nemo-relay-plugin-build","build and package NeMo Relay plugins","Use this skill when building or packaging reusable NeMo Relay runtime behavior as a configuration-activated plugin with deterministic validation and rollback-safe registration.",{"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,20],{"name":13,"slug":14,"type":15},"Configuration","configuration","tag",{"name":17,"slug":18,"type":15},"Plugin Development","plugin-development",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Engineering","engineering",75,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNeMo-Relay","2026-07-17T05:30:25.062802","Apache-2.0",41,[29,30,31,32,33,34,35,36,37,38,39,8,40,41,42,43,44,45,46],"agents","ai","atif","atof","claude-code","codex","deepagents","hermes-agent","langchain","langgraph","middleware","observability","openclaw","openinference","optimization","otel","runtime","security",{"repoUrl":24,"stars":23,"forks":27,"topics":48,"description":49},[29,30,31,32,33,34,35,36,37,38,39,8,40,41,42,43,44,45,46],"Multi-language agent runtime and library for execution scope management, lifecycle events, and middleware on tool and LLM calls.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNeMo-Relay\u002Ftree\u002FHEAD\u002Fskills\u002Fnemo-relay-plugin-build","---\nname: nemo-relay-plugin-build\ndescription: Use this skill when building or packaging reusable NeMo Relay runtime behavior as a configuration-activated plugin with deterministic validation and rollback-safe registration.\nlicense: Apache-2.0\nmetadata:\n  author: NVIDIA Corporation and Affiliates\n---\n\n# Build a Plugin\n\nUse this skill when a user wants to package reusable NeMo Relay runtime behavior\nbehind plugin configuration.\nKeep reusable plugin behavior separate from one-off application startup code.\n\n## Use This When\n\nUse this skill when the behavior should be activated by shared config and reused\nacross applications, teams, or process startup paths.\n\nCommon cases:\n\n- Register subscribers, guardrails, intercepts, or a small bundle of related\n  runtime behavior.\n- Validate operator-supplied config before changing runtime behavior.\n- Give reusable behavior a stable plugin `kind` and activation lifecycle.\n- Package behavior that should be enabled, disabled, or rolled out through\n  plugin config rather than repeated application startup code.\n\n## Do Not Use This When\n\nDo not build a plugin when a narrower NeMo Relay surface is enough:\n\n- One request or tenant needs temporary behavior -> use scope-local middleware.\n- The user only needs first-time scopes, tool calls, or LLM calls ->\n  `nemo-relay-instrument-calls`.\n- The user only needs to choose an exporter path ->\n  `nemo-relay-plugin-observability`.\n- The behavior depends on live callables, provider clients, file handles,\n  credentials, or framework objects inside config.\n\n## Embedded Plugin Model\n\n- Plugins package reusable process-level behavior.\n- A plugin exposes a stable `kind` string and receives component-local config\n  from a shared plugin document.\n- Plugin config must be JSON-compatible across Rust, Python, Node.js, files,\n  tests, and deployment systems.\n- Validation is deterministic and side-effect free. It inspects config and\n  returns structured diagnostics before runtime behavior changes.\n- Registration runs after validation and installs real behavior through\n  `PluginContext`, such as subscribers, guardrails, request intercepts,\n  execution intercepts, or stream execution intercepts.\n- `PluginContext` gives the plugin system enough ownership to qualify runtime\n  names and roll back partial setup when activation fails.\n- Disabled components should still validate when possible so operators can find\n  config problems before rollout.\n\n## Default Path\n\n1. Decide whether a plugin is actually needed. Prefer direct instrumentation or\n   scope-local behavior when the use case is not reusable process-level\n   behavior.\n2. Pick one first runtime surface: subscriber-oriented export, sanitize\n   guardrail, conditional guardrail, request intercept, execution intercept, or\n   stream execution intercept.\n3. Choose a stable plugin `kind` and the smallest JSON-compatible config shape.\n4. Define diagnostics for missing fields, unsupported values, unknown fields,\n   unsafe config, and invalid field combinations.\n5. Validate config before initialization. Validation must not open network\n   connections, create clients, register middleware, or mutate process state.\n6. If validation returns error diagnostics, return them and stop without\n   initialization or registration.\n7. Register runtime behavior through `PluginContext`, not by hand-registering\n   global behavior inside application startup.\n8. Test activation, disabled components, validation failures, and registration\n   failure rollback.\n9. Document how to enable the plugin, what config fields are supported, and how\n   to roll back the component.\n10. For a dynamic plugin that should provide structured fields in\n   `nemo-relay plugins edit`, declare the `config_schema` capability and\n   reference a local Draft 7 or Draft 2020-12 JSON Schema file from\n   `[config_schema].path` in `relay-plugin.toml`. Schema-less plugins remain\n   editable as raw JSON objects.\n\n## Config Shape\n\nThe top-level plugin document contains `version`, `components`, and `policy`.\nEach component supplies the plugin `kind`, `enabled`, and component-local\n`config`:\n\n```json\n{\n  \"version\": 1,\n  \"components\": [\n    {\n      \"kind\": \"redaction-policy\",\n      \"enabled\": true,\n      \"config\": {\n        \"preset\": \"strict\"\n      }\n    }\n  ],\n  \"policy\": {\n    \"unknown_component\": \"warn\",\n    \"unknown_field\": \"warn\",\n    \"unsupported_value\": \"error\"\n  }\n}\n```\n\nKeep business logic in plugin code, not in config. Use references to secrets or\nendpoints rather than embedding sensitive values.\n\n## Binding Pointers\n\n- Python: `nemo_relay.plugin`\n- Node.js: `nemo-relay-node\u002Fplugin`\n- Rust: `nemo_relay::plugin`\n- Go and raw FFI are source-first or advanced surfaces.\n\nUse the same canonical `snake_case` config keys across bindings and files. Node\nhelper functions can be `camelCase`, but plugin config objects remain\n`snake_case`.\n\n## Failure Modes To Avoid\n\n- Do not put callables, clients, credentials, framework objects, file handles,\n  or caches in plugin config.\n- Do not perform runtime registration during validation.\n- Do not skip validation for disabled components.\n- Do not register directly through global startup code when `PluginContext`\n  should own the runtime behavior.\n- Do not combine unrelated subscribers, request transforms, and policy checks\n  in the first plugin unless one config document clearly owns the bundle.\n- Do not export raw production payloads or secrets. Add telemetry sanitization\n  before data leaves the process.\n- Do not ignore partial activation failures. Roll back or surface a clear\n  diagnostic.\n\n## Validation Checklist\n\n- [ ] Stable plugin `kind` chosen.\n- [ ] Config shape is JSON-compatible and uses `snake_case`.\n- [ ] Required fields and unsupported values produce stable diagnostics.\n- [ ] Unknown fields follow the configured policy.\n- [ ] Disabled components still report config problems where possible.\n- [ ] Initialization installs behavior through `PluginContext`.\n- [ ] A forced registration failure does not leave partial runtime behavior\n      active.\n- [ ] Docs or examples show how to enable and roll back the plugin.\n- [ ] Dynamic plugins that need structured CLI editing package a valid local\n      JSON Schema and declare `config_schema` in `relay-plugin.toml`.\n\n## Use Another Skill When\n\n- You only need to wrap direct tool or LLM calls ->\n  `nemo-relay-instrument-calls`\n- You need to set up traces or exporters without packaging a plugin ->\n  `nemo-relay-plugin-observability`\n- You need to debug plugin activation, missing events, or load failures ->\n  `nemo-relay-debug-runtime-integration`\n",{"data":53,"body":56},{"name":4,"description":6,"license":26,"metadata":54},{"author":55},"NVIDIA Corporation and Affiliates",{"type":57,"children":58},"root",[59,68,74,81,86,91,125,131,136,174,180,238,244,344,350,401,798,803,809,850,877,883,928,934,1055,1061,1095],{"type":60,"tag":61,"props":62,"children":64},"element","h1",{"id":63},"build-a-plugin",[65],{"type":66,"value":67},"text","Build a Plugin",{"type":60,"tag":69,"props":70,"children":71},"p",{},[72],{"type":66,"value":73},"Use this skill when a user wants to package reusable NeMo Relay runtime behavior\nbehind plugin configuration.\nKeep reusable plugin behavior separate from one-off application startup code.",{"type":60,"tag":75,"props":76,"children":78},"h2",{"id":77},"use-this-when",[79],{"type":66,"value":80},"Use This When",{"type":60,"tag":69,"props":82,"children":83},{},[84],{"type":66,"value":85},"Use this skill when the behavior should be activated by shared config and reused\nacross applications, teams, or process startup paths.",{"type":60,"tag":69,"props":87,"children":88},{},[89],{"type":66,"value":90},"Common cases:",{"type":60,"tag":92,"props":93,"children":94},"ul",{},[95,101,106,120],{"type":60,"tag":96,"props":97,"children":98},"li",{},[99],{"type":66,"value":100},"Register subscribers, guardrails, intercepts, or a small bundle of related\nruntime behavior.",{"type":60,"tag":96,"props":102,"children":103},{},[104],{"type":66,"value":105},"Validate operator-supplied config before changing runtime behavior.",{"type":60,"tag":96,"props":107,"children":108},{},[109,111,118],{"type":66,"value":110},"Give reusable behavior a stable plugin ",{"type":60,"tag":112,"props":113,"children":115},"code",{"className":114},[],[116],{"type":66,"value":117},"kind",{"type":66,"value":119}," and activation lifecycle.",{"type":60,"tag":96,"props":121,"children":122},{},[123],{"type":66,"value":124},"Package behavior that should be enabled, disabled, or rolled out through\nplugin config rather than repeated application startup code.",{"type":60,"tag":75,"props":126,"children":128},{"id":127},"do-not-use-this-when",[129],{"type":66,"value":130},"Do Not Use This When",{"type":60,"tag":69,"props":132,"children":133},{},[134],{"type":66,"value":135},"Do not build a plugin when a narrower NeMo Relay surface is enough:",{"type":60,"tag":92,"props":137,"children":138},{},[139,144,157,169],{"type":60,"tag":96,"props":140,"children":141},{},[142],{"type":66,"value":143},"One request or tenant needs temporary behavior -> use scope-local middleware.",{"type":60,"tag":96,"props":145,"children":146},{},[147,149,155],{"type":66,"value":148},"The user only needs first-time scopes, tool calls, or LLM calls ->\n",{"type":60,"tag":112,"props":150,"children":152},{"className":151},[],[153],{"type":66,"value":154},"nemo-relay-instrument-calls",{"type":66,"value":156},".",{"type":60,"tag":96,"props":158,"children":159},{},[160,162,168],{"type":66,"value":161},"The user only needs to choose an exporter path ->\n",{"type":60,"tag":112,"props":163,"children":165},{"className":164},[],[166],{"type":66,"value":167},"nemo-relay-plugin-observability",{"type":66,"value":156},{"type":60,"tag":96,"props":170,"children":171},{},[172],{"type":66,"value":173},"The behavior depends on live callables, provider clients, file handles,\ncredentials, or framework objects inside config.",{"type":60,"tag":75,"props":175,"children":177},{"id":176},"embedded-plugin-model",[178],{"type":66,"value":179},"Embedded Plugin Model",{"type":60,"tag":92,"props":181,"children":182},{},[183,188,200,205,210,223,233],{"type":60,"tag":96,"props":184,"children":185},{},[186],{"type":66,"value":187},"Plugins package reusable process-level behavior.",{"type":60,"tag":96,"props":189,"children":190},{},[191,193,198],{"type":66,"value":192},"A plugin exposes a stable ",{"type":60,"tag":112,"props":194,"children":196},{"className":195},[],[197],{"type":66,"value":117},{"type":66,"value":199}," string and receives component-local config\nfrom a shared plugin document.",{"type":60,"tag":96,"props":201,"children":202},{},[203],{"type":66,"value":204},"Plugin config must be JSON-compatible across Rust, Python, Node.js, files,\ntests, and deployment systems.",{"type":60,"tag":96,"props":206,"children":207},{},[208],{"type":66,"value":209},"Validation is deterministic and side-effect free. It inspects config and\nreturns structured diagnostics before runtime behavior changes.",{"type":60,"tag":96,"props":211,"children":212},{},[213,215,221],{"type":66,"value":214},"Registration runs after validation and installs real behavior through\n",{"type":60,"tag":112,"props":216,"children":218},{"className":217},[],[219],{"type":66,"value":220},"PluginContext",{"type":66,"value":222},", such as subscribers, guardrails, request intercepts,\nexecution intercepts, or stream execution intercepts.",{"type":60,"tag":96,"props":224,"children":225},{},[226,231],{"type":60,"tag":112,"props":227,"children":229},{"className":228},[],[230],{"type":66,"value":220},{"type":66,"value":232}," gives the plugin system enough ownership to qualify runtime\nnames and roll back partial setup when activation fails.",{"type":60,"tag":96,"props":234,"children":235},{},[236],{"type":66,"value":237},"Disabled components should still validate when possible so operators can find\nconfig problems before rollout.",{"type":60,"tag":75,"props":239,"children":241},{"id":240},"default-path",[242],{"type":66,"value":243},"Default Path",{"type":60,"tag":245,"props":246,"children":247},"ol",{},[248,253,258,270,275,280,285,297,302,307],{"type":60,"tag":96,"props":249,"children":250},{},[251],{"type":66,"value":252},"Decide whether a plugin is actually needed. Prefer direct instrumentation or\nscope-local behavior when the use case is not reusable process-level\nbehavior.",{"type":60,"tag":96,"props":254,"children":255},{},[256],{"type":66,"value":257},"Pick one first runtime surface: subscriber-oriented export, sanitize\nguardrail, conditional guardrail, request intercept, execution intercept, or\nstream execution intercept.",{"type":60,"tag":96,"props":259,"children":260},{},[261,263,268],{"type":66,"value":262},"Choose a stable plugin ",{"type":60,"tag":112,"props":264,"children":266},{"className":265},[],[267],{"type":66,"value":117},{"type":66,"value":269}," and the smallest JSON-compatible config shape.",{"type":60,"tag":96,"props":271,"children":272},{},[273],{"type":66,"value":274},"Define diagnostics for missing fields, unsupported values, unknown fields,\nunsafe config, and invalid field combinations.",{"type":60,"tag":96,"props":276,"children":277},{},[278],{"type":66,"value":279},"Validate config before initialization. Validation must not open network\nconnections, create clients, register middleware, or mutate process state.",{"type":60,"tag":96,"props":281,"children":282},{},[283],{"type":66,"value":284},"If validation returns error diagnostics, return them and stop without\ninitialization or registration.",{"type":60,"tag":96,"props":286,"children":287},{},[288,290,295],{"type":66,"value":289},"Register runtime behavior through ",{"type":60,"tag":112,"props":291,"children":293},{"className":292},[],[294],{"type":66,"value":220},{"type":66,"value":296},", not by hand-registering\nglobal behavior inside application startup.",{"type":60,"tag":96,"props":298,"children":299},{},[300],{"type":66,"value":301},"Test activation, disabled components, validation failures, and registration\nfailure rollback.",{"type":60,"tag":96,"props":303,"children":304},{},[305],{"type":66,"value":306},"Document how to enable the plugin, what config fields are supported, and how\nto roll back the component.",{"type":60,"tag":96,"props":308,"children":309},{},[310,312,318,320,326,328,334,336,342],{"type":66,"value":311},"For a dynamic plugin that should provide structured fields in\n",{"type":60,"tag":112,"props":313,"children":315},{"className":314},[],[316],{"type":66,"value":317},"nemo-relay plugins edit",{"type":66,"value":319},", declare the ",{"type":60,"tag":112,"props":321,"children":323},{"className":322},[],[324],{"type":66,"value":325},"config_schema",{"type":66,"value":327}," capability and\nreference a local Draft 7 or Draft 2020-12 JSON Schema file from\n",{"type":60,"tag":112,"props":329,"children":331},{"className":330},[],[332],{"type":66,"value":333},"[config_schema].path",{"type":66,"value":335}," in ",{"type":60,"tag":112,"props":337,"children":339},{"className":338},[],[340],{"type":66,"value":341},"relay-plugin.toml",{"type":66,"value":343},". Schema-less plugins remain\neditable as raw JSON objects.",{"type":60,"tag":75,"props":345,"children":347},{"id":346},"config-shape",[348],{"type":66,"value":349},"Config Shape",{"type":60,"tag":69,"props":351,"children":352},{},[353,355,361,363,369,371,377,379,384,385,391,393,399],{"type":66,"value":354},"The top-level plugin document contains ",{"type":60,"tag":112,"props":356,"children":358},{"className":357},[],[359],{"type":66,"value":360},"version",{"type":66,"value":362},", ",{"type":60,"tag":112,"props":364,"children":366},{"className":365},[],[367],{"type":66,"value":368},"components",{"type":66,"value":370},", and ",{"type":60,"tag":112,"props":372,"children":374},{"className":373},[],[375],{"type":66,"value":376},"policy",{"type":66,"value":378},".\nEach component supplies the plugin ",{"type":60,"tag":112,"props":380,"children":382},{"className":381},[],[383],{"type":66,"value":117},{"type":66,"value":362},{"type":60,"tag":112,"props":386,"children":388},{"className":387},[],[389],{"type":66,"value":390},"enabled",{"type":66,"value":392},", and component-local\n",{"type":60,"tag":112,"props":394,"children":396},{"className":395},[],[397],{"type":66,"value":398},"config",{"type":66,"value":400},":",{"type":60,"tag":402,"props":403,"children":408},"pre",{"className":404,"code":405,"language":406,"meta":407,"style":407},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"version\": 1,\n  \"components\": [\n    {\n      \"kind\": \"redaction-policy\",\n      \"enabled\": true,\n      \"config\": {\n        \"preset\": \"strict\"\n      }\n    }\n  ],\n  \"policy\": {\n    \"unknown_component\": \"warn\",\n    \"unknown_field\": \"warn\",\n    \"unsupported_value\": \"error\"\n  }\n}\n","json","",[409],{"type":60,"tag":112,"props":410,"children":411},{"__ignoreMap":407},[412,424,458,483,492,533,558,583,619,628,637,646,670,709,746,780,789],{"type":60,"tag":413,"props":414,"children":417},"span",{"class":415,"line":416},"line",1,[418],{"type":60,"tag":413,"props":419,"children":421},{"style":420},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[422],{"type":66,"value":423},"{\n",{"type":60,"tag":413,"props":425,"children":427},{"class":415,"line":426},2,[428,433,438,443,447,453],{"type":60,"tag":413,"props":429,"children":430},{"style":420},[431],{"type":66,"value":432},"  \"",{"type":60,"tag":413,"props":434,"children":436},{"style":435},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[437],{"type":66,"value":360},{"type":60,"tag":413,"props":439,"children":440},{"style":420},[441],{"type":66,"value":442},"\"",{"type":60,"tag":413,"props":444,"children":445},{"style":420},[446],{"type":66,"value":400},{"type":60,"tag":413,"props":448,"children":450},{"style":449},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[451],{"type":66,"value":452}," 1",{"type":60,"tag":413,"props":454,"children":455},{"style":420},[456],{"type":66,"value":457},",\n",{"type":60,"tag":413,"props":459,"children":461},{"class":415,"line":460},3,[462,466,470,474,478],{"type":60,"tag":413,"props":463,"children":464},{"style":420},[465],{"type":66,"value":432},{"type":60,"tag":413,"props":467,"children":468},{"style":435},[469],{"type":66,"value":368},{"type":60,"tag":413,"props":471,"children":472},{"style":420},[473],{"type":66,"value":442},{"type":60,"tag":413,"props":475,"children":476},{"style":420},[477],{"type":66,"value":400},{"type":60,"tag":413,"props":479,"children":480},{"style":420},[481],{"type":66,"value":482}," [\n",{"type":60,"tag":413,"props":484,"children":486},{"class":415,"line":485},4,[487],{"type":60,"tag":413,"props":488,"children":489},{"style":420},[490],{"type":66,"value":491},"    {\n",{"type":60,"tag":413,"props":493,"children":495},{"class":415,"line":494},5,[496,501,506,510,514,519,525,529],{"type":60,"tag":413,"props":497,"children":498},{"style":420},[499],{"type":66,"value":500},"      \"",{"type":60,"tag":413,"props":502,"children":504},{"style":503},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[505],{"type":66,"value":117},{"type":60,"tag":413,"props":507,"children":508},{"style":420},[509],{"type":66,"value":442},{"type":60,"tag":413,"props":511,"children":512},{"style":420},[513],{"type":66,"value":400},{"type":60,"tag":413,"props":515,"children":516},{"style":420},[517],{"type":66,"value":518}," \"",{"type":60,"tag":413,"props":520,"children":522},{"style":521},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[523],{"type":66,"value":524},"redaction-policy",{"type":60,"tag":413,"props":526,"children":527},{"style":420},[528],{"type":66,"value":442},{"type":60,"tag":413,"props":530,"children":531},{"style":420},[532],{"type":66,"value":457},{"type":60,"tag":413,"props":534,"children":536},{"class":415,"line":535},6,[537,541,545,549,553],{"type":60,"tag":413,"props":538,"children":539},{"style":420},[540],{"type":66,"value":500},{"type":60,"tag":413,"props":542,"children":543},{"style":503},[544],{"type":66,"value":390},{"type":60,"tag":413,"props":546,"children":547},{"style":420},[548],{"type":66,"value":442},{"type":60,"tag":413,"props":550,"children":551},{"style":420},[552],{"type":66,"value":400},{"type":60,"tag":413,"props":554,"children":555},{"style":420},[556],{"type":66,"value":557}," true,\n",{"type":60,"tag":413,"props":559,"children":561},{"class":415,"line":560},7,[562,566,570,574,578],{"type":60,"tag":413,"props":563,"children":564},{"style":420},[565],{"type":66,"value":500},{"type":60,"tag":413,"props":567,"children":568},{"style":503},[569],{"type":66,"value":398},{"type":60,"tag":413,"props":571,"children":572},{"style":420},[573],{"type":66,"value":442},{"type":60,"tag":413,"props":575,"children":576},{"style":420},[577],{"type":66,"value":400},{"type":60,"tag":413,"props":579,"children":580},{"style":420},[581],{"type":66,"value":582}," {\n",{"type":60,"tag":413,"props":584,"children":586},{"class":415,"line":585},8,[587,592,597,601,605,609,614],{"type":60,"tag":413,"props":588,"children":589},{"style":420},[590],{"type":66,"value":591},"        \"",{"type":60,"tag":413,"props":593,"children":594},{"style":449},[595],{"type":66,"value":596},"preset",{"type":60,"tag":413,"props":598,"children":599},{"style":420},[600],{"type":66,"value":442},{"type":60,"tag":413,"props":602,"children":603},{"style":420},[604],{"type":66,"value":400},{"type":60,"tag":413,"props":606,"children":607},{"style":420},[608],{"type":66,"value":518},{"type":60,"tag":413,"props":610,"children":611},{"style":521},[612],{"type":66,"value":613},"strict",{"type":60,"tag":413,"props":615,"children":616},{"style":420},[617],{"type":66,"value":618},"\"\n",{"type":60,"tag":413,"props":620,"children":622},{"class":415,"line":621},9,[623],{"type":60,"tag":413,"props":624,"children":625},{"style":420},[626],{"type":66,"value":627},"      }\n",{"type":60,"tag":413,"props":629,"children":631},{"class":415,"line":630},10,[632],{"type":60,"tag":413,"props":633,"children":634},{"style":420},[635],{"type":66,"value":636},"    }\n",{"type":60,"tag":413,"props":638,"children":640},{"class":415,"line":639},11,[641],{"type":60,"tag":413,"props":642,"children":643},{"style":420},[644],{"type":66,"value":645},"  ],\n",{"type":60,"tag":413,"props":647,"children":649},{"class":415,"line":648},12,[650,654,658,662,666],{"type":60,"tag":413,"props":651,"children":652},{"style":420},[653],{"type":66,"value":432},{"type":60,"tag":413,"props":655,"children":656},{"style":435},[657],{"type":66,"value":376},{"type":60,"tag":413,"props":659,"children":660},{"style":420},[661],{"type":66,"value":442},{"type":60,"tag":413,"props":663,"children":664},{"style":420},[665],{"type":66,"value":400},{"type":60,"tag":413,"props":667,"children":668},{"style":420},[669],{"type":66,"value":582},{"type":60,"tag":413,"props":671,"children":673},{"class":415,"line":672},13,[674,679,684,688,692,696,701,705],{"type":60,"tag":413,"props":675,"children":676},{"style":420},[677],{"type":66,"value":678},"    \"",{"type":60,"tag":413,"props":680,"children":681},{"style":503},[682],{"type":66,"value":683},"unknown_component",{"type":60,"tag":413,"props":685,"children":686},{"style":420},[687],{"type":66,"value":442},{"type":60,"tag":413,"props":689,"children":690},{"style":420},[691],{"type":66,"value":400},{"type":60,"tag":413,"props":693,"children":694},{"style":420},[695],{"type":66,"value":518},{"type":60,"tag":413,"props":697,"children":698},{"style":521},[699],{"type":66,"value":700},"warn",{"type":60,"tag":413,"props":702,"children":703},{"style":420},[704],{"type":66,"value":442},{"type":60,"tag":413,"props":706,"children":707},{"style":420},[708],{"type":66,"value":457},{"type":60,"tag":413,"props":710,"children":712},{"class":415,"line":711},14,[713,717,722,726,730,734,738,742],{"type":60,"tag":413,"props":714,"children":715},{"style":420},[716],{"type":66,"value":678},{"type":60,"tag":413,"props":718,"children":719},{"style":503},[720],{"type":66,"value":721},"unknown_field",{"type":60,"tag":413,"props":723,"children":724},{"style":420},[725],{"type":66,"value":442},{"type":60,"tag":413,"props":727,"children":728},{"style":420},[729],{"type":66,"value":400},{"type":60,"tag":413,"props":731,"children":732},{"style":420},[733],{"type":66,"value":518},{"type":60,"tag":413,"props":735,"children":736},{"style":521},[737],{"type":66,"value":700},{"type":60,"tag":413,"props":739,"children":740},{"style":420},[741],{"type":66,"value":442},{"type":60,"tag":413,"props":743,"children":744},{"style":420},[745],{"type":66,"value":457},{"type":60,"tag":413,"props":747,"children":749},{"class":415,"line":748},15,[750,754,759,763,767,771,776],{"type":60,"tag":413,"props":751,"children":752},{"style":420},[753],{"type":66,"value":678},{"type":60,"tag":413,"props":755,"children":756},{"style":503},[757],{"type":66,"value":758},"unsupported_value",{"type":60,"tag":413,"props":760,"children":761},{"style":420},[762],{"type":66,"value":442},{"type":60,"tag":413,"props":764,"children":765},{"style":420},[766],{"type":66,"value":400},{"type":60,"tag":413,"props":768,"children":769},{"style":420},[770],{"type":66,"value":518},{"type":60,"tag":413,"props":772,"children":773},{"style":521},[774],{"type":66,"value":775},"error",{"type":60,"tag":413,"props":777,"children":778},{"style":420},[779],{"type":66,"value":618},{"type":60,"tag":413,"props":781,"children":783},{"class":415,"line":782},16,[784],{"type":60,"tag":413,"props":785,"children":786},{"style":420},[787],{"type":66,"value":788},"  }\n",{"type":60,"tag":413,"props":790,"children":792},{"class":415,"line":791},17,[793],{"type":60,"tag":413,"props":794,"children":795},{"style":420},[796],{"type":66,"value":797},"}\n",{"type":60,"tag":69,"props":799,"children":800},{},[801],{"type":66,"value":802},"Keep business logic in plugin code, not in config. Use references to secrets or\nendpoints rather than embedding sensitive values.",{"type":60,"tag":75,"props":804,"children":806},{"id":805},"binding-pointers",[807],{"type":66,"value":808},"Binding Pointers",{"type":60,"tag":92,"props":810,"children":811},{},[812,823,834,845],{"type":60,"tag":96,"props":813,"children":814},{},[815,817],{"type":66,"value":816},"Python: ",{"type":60,"tag":112,"props":818,"children":820},{"className":819},[],[821],{"type":66,"value":822},"nemo_relay.plugin",{"type":60,"tag":96,"props":824,"children":825},{},[826,828],{"type":66,"value":827},"Node.js: ",{"type":60,"tag":112,"props":829,"children":831},{"className":830},[],[832],{"type":66,"value":833},"nemo-relay-node\u002Fplugin",{"type":60,"tag":96,"props":835,"children":836},{},[837,839],{"type":66,"value":838},"Rust: ",{"type":60,"tag":112,"props":840,"children":842},{"className":841},[],[843],{"type":66,"value":844},"nemo_relay::plugin",{"type":60,"tag":96,"props":846,"children":847},{},[848],{"type":66,"value":849},"Go and raw FFI are source-first or advanced surfaces.",{"type":60,"tag":69,"props":851,"children":852},{},[853,855,861,863,869,871,876],{"type":66,"value":854},"Use the same canonical ",{"type":60,"tag":112,"props":856,"children":858},{"className":857},[],[859],{"type":66,"value":860},"snake_case",{"type":66,"value":862}," config keys across bindings and files. Node\nhelper functions can be ",{"type":60,"tag":112,"props":864,"children":866},{"className":865},[],[867],{"type":66,"value":868},"camelCase",{"type":66,"value":870},", but plugin config objects remain\n",{"type":60,"tag":112,"props":872,"children":874},{"className":873},[],[875],{"type":66,"value":860},{"type":66,"value":156},{"type":60,"tag":75,"props":878,"children":880},{"id":879},"failure-modes-to-avoid",[881],{"type":66,"value":882},"Failure Modes To Avoid",{"type":60,"tag":92,"props":884,"children":885},{},[886,891,896,901,913,918,923],{"type":60,"tag":96,"props":887,"children":888},{},[889],{"type":66,"value":890},"Do not put callables, clients, credentials, framework objects, file handles,\nor caches in plugin config.",{"type":60,"tag":96,"props":892,"children":893},{},[894],{"type":66,"value":895},"Do not perform runtime registration during validation.",{"type":60,"tag":96,"props":897,"children":898},{},[899],{"type":66,"value":900},"Do not skip validation for disabled components.",{"type":60,"tag":96,"props":902,"children":903},{},[904,906,911],{"type":66,"value":905},"Do not register directly through global startup code when ",{"type":60,"tag":112,"props":907,"children":909},{"className":908},[],[910],{"type":66,"value":220},{"type":66,"value":912},"\nshould own the runtime behavior.",{"type":60,"tag":96,"props":914,"children":915},{},[916],{"type":66,"value":917},"Do not combine unrelated subscribers, request transforms, and policy checks\nin the first plugin unless one config document clearly owns the bundle.",{"type":60,"tag":96,"props":919,"children":920},{},[921],{"type":66,"value":922},"Do not export raw production payloads or secrets. Add telemetry sanitization\nbefore data leaves the process.",{"type":60,"tag":96,"props":924,"children":925},{},[926],{"type":66,"value":927},"Do not ignore partial activation failures. Roll back or surface a clear\ndiagnostic.",{"type":60,"tag":75,"props":929,"children":931},{"id":930},"validation-checklist",[932],{"type":66,"value":933},"Validation Checklist",{"type":60,"tag":92,"props":935,"children":938},{"className":936},[937],"contains-task-list",[939,959,974,983,992,1001,1016,1025,1034],{"type":60,"tag":96,"props":940,"children":943},{"className":941},[942],"task-list-item",[944,950,952,957],{"type":60,"tag":945,"props":946,"children":949},"input",{"disabled":947,"type":948},true,"checkbox",[],{"type":66,"value":951}," Stable plugin ",{"type":60,"tag":112,"props":953,"children":955},{"className":954},[],[956],{"type":66,"value":117},{"type":66,"value":958}," chosen.",{"type":60,"tag":96,"props":960,"children":962},{"className":961},[942],[963,966,968,973],{"type":60,"tag":945,"props":964,"children":965},{"disabled":947,"type":948},[],{"type":66,"value":967}," Config shape is JSON-compatible and uses ",{"type":60,"tag":112,"props":969,"children":971},{"className":970},[],[972],{"type":66,"value":860},{"type":66,"value":156},{"type":60,"tag":96,"props":975,"children":977},{"className":976},[942],[978,981],{"type":60,"tag":945,"props":979,"children":980},{"disabled":947,"type":948},[],{"type":66,"value":982}," Required fields and unsupported values produce stable diagnostics.",{"type":60,"tag":96,"props":984,"children":986},{"className":985},[942],[987,990],{"type":60,"tag":945,"props":988,"children":989},{"disabled":947,"type":948},[],{"type":66,"value":991}," Unknown fields follow the configured policy.",{"type":60,"tag":96,"props":993,"children":995},{"className":994},[942],[996,999],{"type":60,"tag":945,"props":997,"children":998},{"disabled":947,"type":948},[],{"type":66,"value":1000}," Disabled components still report config problems where possible.",{"type":60,"tag":96,"props":1002,"children":1004},{"className":1003},[942],[1005,1008,1010,1015],{"type":60,"tag":945,"props":1006,"children":1007},{"disabled":947,"type":948},[],{"type":66,"value":1009}," Initialization installs behavior through ",{"type":60,"tag":112,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":66,"value":220},{"type":66,"value":156},{"type":60,"tag":96,"props":1017,"children":1019},{"className":1018},[942],[1020,1023],{"type":60,"tag":945,"props":1021,"children":1022},{"disabled":947,"type":948},[],{"type":66,"value":1024}," A forced registration failure does not leave partial runtime behavior\nactive.",{"type":60,"tag":96,"props":1026,"children":1028},{"className":1027},[942],[1029,1032],{"type":60,"tag":945,"props":1030,"children":1031},{"disabled":947,"type":948},[],{"type":66,"value":1033}," Docs or examples show how to enable and roll back the plugin.",{"type":60,"tag":96,"props":1035,"children":1037},{"className":1036},[942],[1038,1041,1043,1048,1049,1054],{"type":60,"tag":945,"props":1039,"children":1040},{"disabled":947,"type":948},[],{"type":66,"value":1042}," Dynamic plugins that need structured CLI editing package a valid local\nJSON Schema and declare ",{"type":60,"tag":112,"props":1044,"children":1046},{"className":1045},[],[1047],{"type":66,"value":325},{"type":66,"value":335},{"type":60,"tag":112,"props":1050,"children":1052},{"className":1051},[],[1053],{"type":66,"value":341},{"type":66,"value":156},{"type":60,"tag":75,"props":1056,"children":1058},{"id":1057},"use-another-skill-when",[1059],{"type":66,"value":1060},"Use Another Skill When",{"type":60,"tag":92,"props":1062,"children":1063},{},[1064,1074,1084],{"type":60,"tag":96,"props":1065,"children":1066},{},[1067,1069],{"type":66,"value":1068},"You only need to wrap direct tool or LLM calls ->\n",{"type":60,"tag":112,"props":1070,"children":1072},{"className":1071},[],[1073],{"type":66,"value":154},{"type":60,"tag":96,"props":1075,"children":1076},{},[1077,1079],{"type":66,"value":1078},"You need to set up traces or exporters without packaging a plugin ->\n",{"type":60,"tag":112,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":66,"value":167},{"type":60,"tag":96,"props":1085,"children":1086},{},[1087,1089],{"type":66,"value":1088},"You need to debug plugin activation, missing events, or load failures ->\n",{"type":60,"tag":112,"props":1090,"children":1092},{"className":1091},[],[1093],{"type":66,"value":1094},"nemo-relay-debug-runtime-integration",{"type":60,"tag":1096,"props":1097,"children":1098},"style",{},[1099],{"type":66,"value":1100},"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":1102,"total":630},[1103,1116,1133,1152,1166,1179,1193],{"slug":1094,"name":1094,"fn":1104,"description":1105,"org":1106,"tags":1107,"stars":23,"repoUrl":24,"updatedAt":1115},"debug NeMo Relay runtime integrations","Use this skill when NeMo Relay is installed or imported but application-side runtime behavior is missing or incorrect, including load failures, inactive scopes, missing events, and plugin or adaptive wiring problems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1108,1111,1112,1114],{"name":1109,"slug":1110,"type":15},"Debugging","debugging",{"name":21,"slug":22,"type":15},{"name":1113,"slug":39,"type":15},"Middleware",{"name":9,"slug":8,"type":15},"2026-07-17T05:30:27.286964",{"slug":1117,"name":1117,"fn":1118,"description":1119,"org":1120,"tags":1121,"stars":23,"repoUrl":24,"updatedAt":1132},"nemo-relay-get-started","get started with NeMo Relay","Use this skill when first-time NeMo Relay users want to try Relay, choose the least-complex supported quick start, or verify initial value through the CLI, a maintained integration, or direct Python, Node.js, or Rust instrumentation before production setup.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1122,1125,1126,1129],{"name":1123,"slug":1124,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":1127,"slug":1128,"type":15},"Onboarding","onboarding",{"name":1130,"slug":1131,"type":15},"Python","python","2026-07-23T05:43:39.488827",{"slug":1134,"name":1134,"fn":1135,"description":1136,"org":1137,"tags":1138,"stars":23,"repoUrl":24,"updatedAt":1151},"nemo-relay-install","install NeMo Relay for various environments","Use this skill when choosing or running NeMo Relay installation for the CLI, Python, Node.js, Rust, OpenClaw, Hermes, or maintained framework integrations before runtime configuration or quick-start setup.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1139,1140,1143,1146,1147,1148],{"name":1123,"slug":1124,"type":15},{"name":1141,"slug":1142,"type":15},"Deployment","deployment",{"name":1144,"slug":1145,"type":15},"Node.js","nodejs",{"name":9,"slug":8,"type":15},{"name":1130,"slug":1131,"type":15},{"name":1149,"slug":1150,"type":15},"Rust","rust","2026-07-17T05:30:31.443244",{"slug":154,"name":154,"fn":1153,"description":1154,"org":1155,"tags":1156,"stars":23,"repoUrl":24,"updatedAt":1165},"instrument LLM calls with NeMo Relay","Use this skill when an application owns tool or LLM\u002Fprovider call sites and needs to wrap them with NeMo Relay scopes and managed execution APIs for lifecycle events, middleware, or guardrails.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1157,1160,1163,1164],{"name":1158,"slug":1159,"type":15},"Automation","automation",{"name":1161,"slug":1162,"type":15},"LLM","llm",{"name":1113,"slug":39,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:30:29.31214",{"slug":1167,"name":1167,"fn":1168,"description":1169,"org":1170,"tags":1171,"stars":23,"repoUrl":24,"updatedAt":1178},"nemo-relay-instrument-context-isolation","isolate NeMo Relay execution contexts","Use this skill when concurrent requests, async tasks, threads, workers, goroutines, or agents need independent NeMo Relay scope stacks and correct ancestry propagation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1172,1175,1176,1177],{"name":1173,"slug":1174,"type":15},"Concurrency","concurrency",{"name":21,"slug":22,"type":15},{"name":1113,"slug":39,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:30:33.080543",{"slug":1180,"name":1180,"fn":1181,"description":1182,"org":1183,"tags":1184,"stars":23,"repoUrl":24,"updatedAt":1192},"nemo-relay-instrument-typed-wrappers","instrument NeMo Relay typed wrappers","Use this skill when adding NeMo Relay typed wrappers, domain types, or provider codecs while preserving JSON middleware semantics and caller-visible behavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1185,1188,1190,1191],{"name":1186,"slug":1187,"type":15},"API Development","api-development",{"name":1189,"slug":406,"type":15},"JSON",{"name":1113,"slug":39,"type":15},{"name":9,"slug":8,"type":15},"2026-07-23T05:43:40.456621",{"slug":1194,"name":1194,"fn":1195,"description":1196,"org":1197,"tags":1198,"stars":23,"repoUrl":24,"updatedAt":1209},"nemo-relay-migrate-from-flow","migrate applications from NeMo Flow to Relay","Use this skill when migrating applications, examples, integrations, documentation, manifests, or repository code from NeMo Flow to NeMo Relay across Python, Rust, Node.js, Go, C FFI, CLI, configuration, and observability surfaces.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1199,1202,1205,1206,1207,1208],{"name":1200,"slug":1201,"type":15},"Go","go",{"name":1203,"slug":1204,"type":15},"Migration","migration",{"name":1144,"slug":1145,"type":15},{"name":9,"slug":8,"type":15},{"name":1130,"slug":1131,"type":15},{"name":1149,"slug":1150,"type":15},"2026-07-17T05:30:28.259456",{"items":1211,"total":1360},[1212,1230,1244,1255,1267,1279,1292,1304,1317,1328,1342,1351],{"slug":1213,"name":1213,"fn":1214,"description":1215,"org":1216,"tags":1217,"stars":1227,"repoUrl":1228,"updatedAt":1229},"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},[1218,1221,1224],{"name":1219,"slug":1220,"type":15},"Documentation","documentation",{"name":1222,"slug":1223,"type":15},"MCP","mcp",{"name":1225,"slug":1226,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1231,"name":1231,"fn":1232,"description":1233,"org":1234,"tags":1235,"stars":1241,"repoUrl":1242,"updatedAt":1243},"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},[1236,1239,1240],{"name":1237,"slug":1238,"type":15},"Containers","containers",{"name":1141,"slug":1142,"type":15},{"name":1130,"slug":1131,"type":15},17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1245,"name":1245,"fn":1246,"description":1247,"org":1248,"tags":1249,"stars":1241,"repoUrl":1242,"updatedAt":1254},"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},[1250,1253],{"name":1251,"slug":1252,"type":15},"CI\u002FCD","ci-cd",{"name":1141,"slug":1142,"type":15},"2026-07-14T05:25:59.97109",{"slug":1256,"name":1256,"fn":1257,"description":1258,"org":1259,"tags":1260,"stars":1241,"repoUrl":1242,"updatedAt":1266},"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},[1261,1262,1263],{"name":1251,"slug":1252,"type":15},{"name":1141,"slug":1142,"type":15},{"name":1264,"slug":1265,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1268,"name":1268,"fn":1269,"description":1270,"org":1271,"tags":1272,"stars":1241,"repoUrl":1242,"updatedAt":1278},"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},[1273,1274,1275],{"name":1109,"slug":1110,"type":15},{"name":1264,"slug":1265,"type":15},{"name":1276,"slug":1277,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1280,"name":1280,"fn":1281,"description":1282,"org":1283,"tags":1284,"stars":1241,"repoUrl":1242,"updatedAt":1291},"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},[1285,1288],{"name":1286,"slug":1287,"type":15},"Best Practices","best-practices",{"name":1289,"slug":1290,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1293,"name":1293,"fn":1294,"description":1295,"org":1296,"tags":1297,"stars":1241,"repoUrl":1242,"updatedAt":1303},"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},[1298,1301,1302],{"name":1299,"slug":1300,"type":15},"Machine Learning","machine-learning",{"name":1203,"slug":1204,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1305,"name":1305,"fn":1306,"description":1307,"org":1308,"tags":1309,"stars":1241,"repoUrl":1242,"updatedAt":1316},"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},[1310,1313],{"name":1311,"slug":1312,"type":15},"QA","qa",{"name":1314,"slug":1315,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1318,"name":1318,"fn":1319,"description":1320,"org":1321,"tags":1322,"stars":1241,"repoUrl":1242,"updatedAt":1327},"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},[1323,1324],{"name":1141,"slug":1142,"type":15},{"name":1325,"slug":1326,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1329,"name":1329,"fn":1330,"description":1331,"org":1332,"tags":1333,"stars":1241,"repoUrl":1242,"updatedAt":1341},"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},[1334,1337,1338],{"name":1335,"slug":1336,"type":15},"Code Review","code-review",{"name":1264,"slug":1265,"type":15},{"name":1339,"slug":1340,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1343,"name":1343,"fn":1344,"description":1345,"org":1346,"tags":1347,"stars":1241,"repoUrl":1242,"updatedAt":1350},"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},[1348,1349],{"name":1311,"slug":1312,"type":15},{"name":1314,"slug":1315,"type":15},"2026-07-14T05:25:54.928983",{"slug":1352,"name":1352,"fn":1353,"description":1354,"org":1355,"tags":1356,"stars":1241,"repoUrl":1242,"updatedAt":1359},"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},[1357,1358],{"name":1158,"slug":1159,"type":15},{"name":1251,"slug":1252,"type":15},"2026-07-30T05:29:03.275638",496]