[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-nemo-relay-instrument-typed-wrappers":3,"mdc-nvsjgx-key":51,"related-repo-nvidia-nemo-relay-instrument-typed-wrappers":590,"related-org-nvidia-nemo-relay-instrument-typed-wrappers":694},{"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":46,"sourceUrl":49,"mdContent":50},"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},"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},"JSON","json","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"API Development","api-development",{"name":21,"slug":22,"type":15},"Middleware","middleware",75,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNeMo-Relay","2026-07-23T05:43:40.456621","Apache-2.0",41,[29,30,31,32,33,34,35,36,37,38,22,8,39,40,41,42,43,44,45],"agents","ai","atif","atof","claude-code","codex","deepagents","hermes-agent","langchain","langgraph","observability","openclaw","openinference","optimization","otel","runtime","security",{"repoUrl":24,"stars":23,"forks":27,"topics":47,"description":48},[29,30,31,32,33,34,35,36,37,38,22,8,39,40,41,42,43,44,45],"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-instrument-typed-wrappers","---\nname: nemo-relay-instrument-typed-wrappers\ndescription: Use this skill when adding NeMo Relay typed wrappers, domain types, or provider codecs while preserving JSON middleware semantics and caller-visible behavior.\nlicense: Apache-2.0\nmetadata:\n  author: NVIDIA Corporation and Affiliates\n---\n\n# Use Typed Wrappers And Codecs\n\nUse this skill when an application wants stronger domain types than raw JSON for\ntool or LLM integration.\nKeep typed boundaries explicit so middleware still sees predictable JSON.\n\n## Default Guidance\n\n- Prefer plain JSON first for initial adoption.\n- Reach for typed wrappers when the application already has stable domain models.\n- Keep in mind that middleware still operates on JSON, not typed objects.\n\n## Embedded Codec Model\n\n- A typed value codec is a pure boundary translator. It converts\n  application-facing values to JSON before NeMo Relay emits events or runs\n  middleware, then converts JSON back into the framework callback or caller type.\n- Python exposes `JsonPassthrough`, `DataclassCodec`, `PydanticCodec`, and\n  `BestEffortAnyCodec`. Node.js exposes `JsonPassthrough` plus custom\n  `Codec\u003CT>` implementations.\n- Use `BestEffortAnyCodec` only at boundaries where strict schemas are not\n  available. Prefer dataclass, Pydantic, or explicit Node.js codecs when the\n  framework owns a stable schema.\n- Provider codecs are different from typed value codecs: they normalize\n  provider-specific LLM requests and responses so middleware and subscribers can\n  inspect messages, tools, model names, generation parameters, and response\n  annotations.\n- Built-in provider codecs include `OpenAIChatCodec`, `OpenAIResponsesCodec`,\n  and `AnthropicMessagesCodec` in Python, Node.js, and Rust. Choose the\n  codec that matches the actual provider payload shape.\n- Response codecs annotate LLM end events with fields such as `id`, `model`,\n  `message`, `tool_calls`, `finish_reason`, `usage`, provider-specific data, and\n  extra unmodeled fields. They do not rewrite the caller-visible response.\n- Request codecs run before LLM request intercepts. Intercepts receive both the\n  raw `LLMRequest` and optional annotated request; `encode` merges annotated\n  edits back before execution intercepts and the provider callback run.\n- Built-in request codecs guarantee JSON-value identity for an unchanged\n  annotation. They compare edits with a decoded baseline and patch only changed\n  fields, preserving native representation details and unknown fields.\n- Use `instructions`, portable messages and components, and the tagged\n  `api_specific` request surface for normalized edits. Provider-only union\n  members use explicit `{ provider, kind, value }` native components. Reserve\n  top-level `extra` for unknown future fields.\n- The `nemo-relay` gateway always supplies matching request codecs on Anthropic\n  Messages, OpenAI Chat Completions, and OpenAI Responses generation routes.\n  On those routes, treat raw `request.content` as read-only and return body\n  edits through the annotated request. Header edits still use the raw request.\n\n## Key Rules\n\n- Typed wrappers are currently a first-class path for Python and Node.js; Rust\n  uses codec traits directly\n- Request\u002Fresponse conversion belongs in codecs\n- Intercepts and guardrails see JSON values after encoding\n- Changes made by middleware survive into the decode step\n\n## Choose A Codec\n\n- `JsonPassthrough` for JSON-native values\n- `DataclassCodec` or `PydanticCodec` in Python when the models already exist\n- Custom codecs for domain-specific wire shapes\n- `BestEffortAnyCodec` only when broad flexibility is worth the looser contract\n- Provider codecs for LLM provider payloads, not application domain objects\n  conversion\n\n## Validation Checklist\n\n- [ ] Codec output is JSON-compatible\n- [ ] Required fields survive `toJson`\u002F`fromJson` or `decode`\u002F`encode`\n- [ ] Middleware sees the expected serialized shape\n- [ ] Provider codecs preserve fields they do not understand\n- [ ] Response codec failures do not break the underlying LLM call\n- [ ] Request codec `encode` preserves original provider fields unless an\n  intercept intentionally changes them\n- [ ] Provider-native components belong to the codec's provider surface\n- [ ] Gateway generation intercepts do not mutate raw `request.content`\n\n## Related Skills\n\n- `nemo-relay-instrument-calls`\n- `nemo-relay-plugin-observability`\n- `nemo-relay-debug-runtime-integration`\n",{"data":52,"body":55},{"name":4,"description":6,"license":26,"metadata":53},{"author":54},"NVIDIA Corporation and Affiliates",{"type":56,"children":57},"root",[58,67,73,80,100,106,343,349,372,378,428,434,554,560],{"type":59,"tag":60,"props":61,"children":63},"element","h1",{"id":62},"use-typed-wrappers-and-codecs",[64],{"type":65,"value":66},"text","Use Typed Wrappers And Codecs",{"type":59,"tag":68,"props":69,"children":70},"p",{},[71],{"type":65,"value":72},"Use this skill when an application wants stronger domain types than raw JSON for\ntool or LLM integration.\nKeep typed boundaries explicit so middleware still sees predictable JSON.",{"type":59,"tag":74,"props":75,"children":77},"h2",{"id":76},"default-guidance",[78],{"type":65,"value":79},"Default Guidance",{"type":59,"tag":81,"props":82,"children":83},"ul",{},[84,90,95],{"type":59,"tag":85,"props":86,"children":87},"li",{},[88],{"type":65,"value":89},"Prefer plain JSON first for initial adoption.",{"type":59,"tag":85,"props":91,"children":92},{},[93],{"type":65,"value":94},"Reach for typed wrappers when the application already has stable domain models.",{"type":59,"tag":85,"props":96,"children":97},{},[98],{"type":65,"value":99},"Keep in mind that middleware still operates on JSON, not typed objects.",{"type":59,"tag":74,"props":101,"children":103},{"id":102},"embedded-codec-model",[104],{"type":65,"value":105},"Embedded Codec Model",{"type":59,"tag":81,"props":107,"children":108},{},[109,114,166,178,183,211,260,281,286,322],{"type":59,"tag":85,"props":110,"children":111},{},[112],{"type":65,"value":113},"A typed value codec is a pure boundary translator. It converts\napplication-facing values to JSON before NeMo Relay emits events or runs\nmiddleware, then converts JSON back into the framework callback or caller type.",{"type":59,"tag":85,"props":115,"children":116},{},[117,119,126,128,134,135,141,143,149,151,156,158,164],{"type":65,"value":118},"Python exposes ",{"type":59,"tag":120,"props":121,"children":123},"code",{"className":122},[],[124],{"type":65,"value":125},"JsonPassthrough",{"type":65,"value":127},", ",{"type":59,"tag":120,"props":129,"children":131},{"className":130},[],[132],{"type":65,"value":133},"DataclassCodec",{"type":65,"value":127},{"type":59,"tag":120,"props":136,"children":138},{"className":137},[],[139],{"type":65,"value":140},"PydanticCodec",{"type":65,"value":142},", and\n",{"type":59,"tag":120,"props":144,"children":146},{"className":145},[],[147],{"type":65,"value":148},"BestEffortAnyCodec",{"type":65,"value":150},". Node.js exposes ",{"type":59,"tag":120,"props":152,"children":154},{"className":153},[],[155],{"type":65,"value":125},{"type":65,"value":157}," plus custom\n",{"type":59,"tag":120,"props":159,"children":161},{"className":160},[],[162],{"type":65,"value":163},"Codec\u003CT>",{"type":65,"value":165}," implementations.",{"type":59,"tag":85,"props":167,"children":168},{},[169,171,176],{"type":65,"value":170},"Use ",{"type":59,"tag":120,"props":172,"children":174},{"className":173},[],[175],{"type":65,"value":148},{"type":65,"value":177}," only at boundaries where strict schemas are not\navailable. Prefer dataclass, Pydantic, or explicit Node.js codecs when the\nframework owns a stable schema.",{"type":59,"tag":85,"props":179,"children":180},{},[181],{"type":65,"value":182},"Provider codecs are different from typed value codecs: they normalize\nprovider-specific LLM requests and responses so middleware and subscribers can\ninspect messages, tools, model names, generation parameters, and response\nannotations.",{"type":59,"tag":85,"props":184,"children":185},{},[186,188,194,195,201,203,209],{"type":65,"value":187},"Built-in provider codecs include ",{"type":59,"tag":120,"props":189,"children":191},{"className":190},[],[192],{"type":65,"value":193},"OpenAIChatCodec",{"type":65,"value":127},{"type":59,"tag":120,"props":196,"children":198},{"className":197},[],[199],{"type":65,"value":200},"OpenAIResponsesCodec",{"type":65,"value":202},",\nand ",{"type":59,"tag":120,"props":204,"children":206},{"className":205},[],[207],{"type":65,"value":208},"AnthropicMessagesCodec",{"type":65,"value":210}," in Python, Node.js, and Rust. Choose the\ncodec that matches the actual provider payload shape.",{"type":59,"tag":85,"props":212,"children":213},{},[214,216,222,223,229,231,237,238,244,245,251,252,258],{"type":65,"value":215},"Response codecs annotate LLM end events with fields such as ",{"type":59,"tag":120,"props":217,"children":219},{"className":218},[],[220],{"type":65,"value":221},"id",{"type":65,"value":127},{"type":59,"tag":120,"props":224,"children":226},{"className":225},[],[227],{"type":65,"value":228},"model",{"type":65,"value":230},",\n",{"type":59,"tag":120,"props":232,"children":234},{"className":233},[],[235],{"type":65,"value":236},"message",{"type":65,"value":127},{"type":59,"tag":120,"props":239,"children":241},{"className":240},[],[242],{"type":65,"value":243},"tool_calls",{"type":65,"value":127},{"type":59,"tag":120,"props":246,"children":248},{"className":247},[],[249],{"type":65,"value":250},"finish_reason",{"type":65,"value":127},{"type":59,"tag":120,"props":253,"children":255},{"className":254},[],[256],{"type":65,"value":257},"usage",{"type":65,"value":259},", provider-specific data, and\nextra unmodeled fields. They do not rewrite the caller-visible response.",{"type":59,"tag":85,"props":261,"children":262},{},[263,265,271,273,279],{"type":65,"value":264},"Request codecs run before LLM request intercepts. Intercepts receive both the\nraw ",{"type":59,"tag":120,"props":266,"children":268},{"className":267},[],[269],{"type":65,"value":270},"LLMRequest",{"type":65,"value":272}," and optional annotated request; ",{"type":59,"tag":120,"props":274,"children":276},{"className":275},[],[277],{"type":65,"value":278},"encode",{"type":65,"value":280}," merges annotated\nedits back before execution intercepts and the provider callback run.",{"type":59,"tag":85,"props":282,"children":283},{},[284],{"type":65,"value":285},"Built-in request codecs guarantee JSON-value identity for an unchanged\nannotation. They compare edits with a decoded baseline and patch only changed\nfields, preserving native representation details and unknown fields.",{"type":59,"tag":85,"props":287,"children":288},{},[289,290,296,298,304,306,312,314,320],{"type":65,"value":170},{"type":59,"tag":120,"props":291,"children":293},{"className":292},[],[294],{"type":65,"value":295},"instructions",{"type":65,"value":297},", portable messages and components, and the tagged\n",{"type":59,"tag":120,"props":299,"children":301},{"className":300},[],[302],{"type":65,"value":303},"api_specific",{"type":65,"value":305}," request surface for normalized edits. Provider-only union\nmembers use explicit ",{"type":59,"tag":120,"props":307,"children":309},{"className":308},[],[310],{"type":65,"value":311},"{ provider, kind, value }",{"type":65,"value":313}," native components. Reserve\ntop-level ",{"type":59,"tag":120,"props":315,"children":317},{"className":316},[],[318],{"type":65,"value":319},"extra",{"type":65,"value":321}," for unknown future fields.",{"type":59,"tag":85,"props":323,"children":324},{},[325,327,333,335,341],{"type":65,"value":326},"The ",{"type":59,"tag":120,"props":328,"children":330},{"className":329},[],[331],{"type":65,"value":332},"nemo-relay",{"type":65,"value":334}," gateway always supplies matching request codecs on Anthropic\nMessages, OpenAI Chat Completions, and OpenAI Responses generation routes.\nOn those routes, treat raw ",{"type":59,"tag":120,"props":336,"children":338},{"className":337},[],[339],{"type":65,"value":340},"request.content",{"type":65,"value":342}," as read-only and return body\nedits through the annotated request. Header edits still use the raw request.",{"type":59,"tag":74,"props":344,"children":346},{"id":345},"key-rules",[347],{"type":65,"value":348},"Key Rules",{"type":59,"tag":81,"props":350,"children":351},{},[352,357,362,367],{"type":59,"tag":85,"props":353,"children":354},{},[355],{"type":65,"value":356},"Typed wrappers are currently a first-class path for Python and Node.js; Rust\nuses codec traits directly",{"type":59,"tag":85,"props":358,"children":359},{},[360],{"type":65,"value":361},"Request\u002Fresponse conversion belongs in codecs",{"type":59,"tag":85,"props":363,"children":364},{},[365],{"type":65,"value":366},"Intercepts and guardrails see JSON values after encoding",{"type":59,"tag":85,"props":368,"children":369},{},[370],{"type":65,"value":371},"Changes made by middleware survive into the decode step",{"type":59,"tag":74,"props":373,"children":375},{"id":374},"choose-a-codec",[376],{"type":65,"value":377},"Choose A Codec",{"type":59,"tag":81,"props":379,"children":380},{},[381,391,408,413,423],{"type":59,"tag":85,"props":382,"children":383},{},[384,389],{"type":59,"tag":120,"props":385,"children":387},{"className":386},[],[388],{"type":65,"value":125},{"type":65,"value":390}," for JSON-native values",{"type":59,"tag":85,"props":392,"children":393},{},[394,399,401,406],{"type":59,"tag":120,"props":395,"children":397},{"className":396},[],[398],{"type":65,"value":133},{"type":65,"value":400}," or ",{"type":59,"tag":120,"props":402,"children":404},{"className":403},[],[405],{"type":65,"value":140},{"type":65,"value":407}," in Python when the models already exist",{"type":59,"tag":85,"props":409,"children":410},{},[411],{"type":65,"value":412},"Custom codecs for domain-specific wire shapes",{"type":59,"tag":85,"props":414,"children":415},{},[416,421],{"type":59,"tag":120,"props":417,"children":419},{"className":418},[],[420],{"type":65,"value":148},{"type":65,"value":422}," only when broad flexibility is worth the looser contract",{"type":59,"tag":85,"props":424,"children":425},{},[426],{"type":65,"value":427},"Provider codecs for LLM provider payloads, not application domain objects\nconversion",{"type":59,"tag":74,"props":429,"children":431},{"id":430},"validation-checklist",[432],{"type":65,"value":433},"Validation Checklist",{"type":59,"tag":81,"props":435,"children":438},{"className":436},[437],"contains-task-list",[439,452,488,497,506,515,531,540],{"type":59,"tag":85,"props":440,"children":443},{"className":441},[442],"task-list-item",[444,450],{"type":59,"tag":445,"props":446,"children":449},"input",{"disabled":447,"type":448},true,"checkbox",[],{"type":65,"value":451}," Codec output is JSON-compatible",{"type":59,"tag":85,"props":453,"children":455},{"className":454},[442],[456,459,461,467,469,475,476,482,483],{"type":59,"tag":445,"props":457,"children":458},{"disabled":447,"type":448},[],{"type":65,"value":460}," Required fields survive ",{"type":59,"tag":120,"props":462,"children":464},{"className":463},[],[465],{"type":65,"value":466},"toJson",{"type":65,"value":468},"\u002F",{"type":59,"tag":120,"props":470,"children":472},{"className":471},[],[473],{"type":65,"value":474},"fromJson",{"type":65,"value":400},{"type":59,"tag":120,"props":477,"children":479},{"className":478},[],[480],{"type":65,"value":481},"decode",{"type":65,"value":468},{"type":59,"tag":120,"props":484,"children":486},{"className":485},[],[487],{"type":65,"value":278},{"type":59,"tag":85,"props":489,"children":491},{"className":490},[442],[492,495],{"type":59,"tag":445,"props":493,"children":494},{"disabled":447,"type":448},[],{"type":65,"value":496}," Middleware sees the expected serialized shape",{"type":59,"tag":85,"props":498,"children":500},{"className":499},[442],[501,504],{"type":59,"tag":445,"props":502,"children":503},{"disabled":447,"type":448},[],{"type":65,"value":505}," Provider codecs preserve fields they do not understand",{"type":59,"tag":85,"props":507,"children":509},{"className":508},[442],[510,513],{"type":59,"tag":445,"props":511,"children":512},{"disabled":447,"type":448},[],{"type":65,"value":514}," Response codec failures do not break the underlying LLM call",{"type":59,"tag":85,"props":516,"children":518},{"className":517},[442],[519,522,524,529],{"type":59,"tag":445,"props":520,"children":521},{"disabled":447,"type":448},[],{"type":65,"value":523}," Request codec ",{"type":59,"tag":120,"props":525,"children":527},{"className":526},[],[528],{"type":65,"value":278},{"type":65,"value":530}," preserves original provider fields unless an\nintercept intentionally changes them",{"type":59,"tag":85,"props":532,"children":534},{"className":533},[442],[535,538],{"type":59,"tag":445,"props":536,"children":537},{"disabled":447,"type":448},[],{"type":65,"value":539}," Provider-native components belong to the codec's provider surface",{"type":59,"tag":85,"props":541,"children":543},{"className":542},[442],[544,547,549],{"type":59,"tag":445,"props":545,"children":546},{"disabled":447,"type":448},[],{"type":65,"value":548}," Gateway generation intercepts do not mutate raw ",{"type":59,"tag":120,"props":550,"children":552},{"className":551},[],[553],{"type":65,"value":340},{"type":59,"tag":74,"props":555,"children":557},{"id":556},"related-skills",[558],{"type":65,"value":559},"Related Skills",{"type":59,"tag":81,"props":561,"children":562},{},[563,572,581],{"type":59,"tag":85,"props":564,"children":565},{},[566],{"type":59,"tag":120,"props":567,"children":569},{"className":568},[],[570],{"type":65,"value":571},"nemo-relay-instrument-calls",{"type":59,"tag":85,"props":573,"children":574},{},[575],{"type":59,"tag":120,"props":576,"children":578},{"className":577},[],[579],{"type":65,"value":580},"nemo-relay-plugin-observability",{"type":59,"tag":85,"props":582,"children":583},{},[584],{"type":59,"tag":120,"props":585,"children":587},{"className":586},[],[588],{"type":65,"value":589},"nemo-relay-debug-runtime-integration",{"items":591,"total":693},[592,606,623,642,656,669,676],{"slug":589,"name":589,"fn":593,"description":594,"org":595,"tags":596,"stars":23,"repoUrl":24,"updatedAt":605},"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},[597,600,603,604],{"name":598,"slug":599,"type":15},"Debugging","debugging",{"name":601,"slug":602,"type":15},"Engineering","engineering",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:30:27.286964",{"slug":607,"name":607,"fn":608,"description":609,"org":610,"tags":611,"stars":23,"repoUrl":24,"updatedAt":622},"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},[612,615,616,619],{"name":613,"slug":614,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":617,"slug":618,"type":15},"Onboarding","onboarding",{"name":620,"slug":621,"type":15},"Python","python","2026-07-23T05:43:39.488827",{"slug":624,"name":624,"fn":625,"description":626,"org":627,"tags":628,"stars":23,"repoUrl":24,"updatedAt":641},"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},[629,630,633,636,637,638],{"name":613,"slug":614,"type":15},{"name":631,"slug":632,"type":15},"Deployment","deployment",{"name":634,"slug":635,"type":15},"Node.js","nodejs",{"name":9,"slug":8,"type":15},{"name":620,"slug":621,"type":15},{"name":639,"slug":640,"type":15},"Rust","rust","2026-07-17T05:30:31.443244",{"slug":571,"name":571,"fn":643,"description":644,"org":645,"tags":646,"stars":23,"repoUrl":24,"updatedAt":655},"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},[647,650,653,654],{"name":648,"slug":649,"type":15},"Automation","automation",{"name":651,"slug":652,"type":15},"LLM","llm",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:30:29.31214",{"slug":657,"name":657,"fn":658,"description":659,"org":660,"tags":661,"stars":23,"repoUrl":24,"updatedAt":668},"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},[662,665,666,667],{"name":663,"slug":664,"type":15},"Concurrency","concurrency",{"name":601,"slug":602,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:30:33.080543",{"slug":4,"name":4,"fn":5,"description":6,"org":670,"tags":671,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[672,673,674,675],{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"slug":677,"name":677,"fn":678,"description":679,"org":680,"tags":681,"stars":23,"repoUrl":24,"updatedAt":692},"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},[682,685,688,689,690,691],{"name":683,"slug":684,"type":15},"Go","go",{"name":686,"slug":687,"type":15},"Migration","migration",{"name":634,"slug":635,"type":15},{"name":9,"slug":8,"type":15},{"name":620,"slug":621,"type":15},{"name":639,"slug":640,"type":15},"2026-07-17T05:30:28.259456",10,{"items":695,"total":844},[696,714,728,739,751,763,776,788,801,812,826,835],{"slug":697,"name":697,"fn":698,"description":699,"org":700,"tags":701,"stars":711,"repoUrl":712,"updatedAt":713},"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},[702,705,708],{"name":703,"slug":704,"type":15},"Documentation","documentation",{"name":706,"slug":707,"type":15},"MCP","mcp",{"name":709,"slug":710,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":715,"name":715,"fn":716,"description":717,"org":718,"tags":719,"stars":725,"repoUrl":726,"updatedAt":727},"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},[720,723,724],{"name":721,"slug":722,"type":15},"Containers","containers",{"name":631,"slug":632,"type":15},{"name":620,"slug":621,"type":15},17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":729,"name":729,"fn":730,"description":731,"org":732,"tags":733,"stars":725,"repoUrl":726,"updatedAt":738},"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},[734,737],{"name":735,"slug":736,"type":15},"CI\u002FCD","ci-cd",{"name":631,"slug":632,"type":15},"2026-07-14T05:25:59.97109",{"slug":740,"name":740,"fn":741,"description":742,"org":743,"tags":744,"stars":725,"repoUrl":726,"updatedAt":750},"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},[745,746,747],{"name":735,"slug":736,"type":15},{"name":631,"slug":632,"type":15},{"name":748,"slug":749,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":752,"name":752,"fn":753,"description":754,"org":755,"tags":756,"stars":725,"repoUrl":726,"updatedAt":762},"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},[757,758,759],{"name":598,"slug":599,"type":15},{"name":748,"slug":749,"type":15},{"name":760,"slug":761,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":764,"name":764,"fn":765,"description":766,"org":767,"tags":768,"stars":725,"repoUrl":726,"updatedAt":775},"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},[769,772],{"name":770,"slug":771,"type":15},"Best Practices","best-practices",{"name":773,"slug":774,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":777,"name":777,"fn":778,"description":779,"org":780,"tags":781,"stars":725,"repoUrl":726,"updatedAt":787},"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},[782,785,786],{"name":783,"slug":784,"type":15},"Machine Learning","machine-learning",{"name":686,"slug":687,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":789,"name":789,"fn":790,"description":791,"org":792,"tags":793,"stars":725,"repoUrl":726,"updatedAt":800},"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},[794,797],{"name":795,"slug":796,"type":15},"QA","qa",{"name":798,"slug":799,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":802,"name":802,"fn":803,"description":804,"org":805,"tags":806,"stars":725,"repoUrl":726,"updatedAt":811},"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},[807,808],{"name":631,"slug":632,"type":15},{"name":809,"slug":810,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":813,"name":813,"fn":814,"description":815,"org":816,"tags":817,"stars":725,"repoUrl":726,"updatedAt":825},"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},[818,821,822],{"name":819,"slug":820,"type":15},"Code Review","code-review",{"name":748,"slug":749,"type":15},{"name":823,"slug":824,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":827,"name":827,"fn":828,"description":829,"org":830,"tags":831,"stars":725,"repoUrl":726,"updatedAt":834},"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},[832,833],{"name":795,"slug":796,"type":15},{"name":798,"slug":799,"type":15},"2026-07-14T05:25:54.928983",{"slug":836,"name":836,"fn":837,"description":838,"org":839,"tags":840,"stars":725,"repoUrl":726,"updatedAt":843},"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},[841,842],{"name":648,"slug":649,"type":15},{"name":735,"slug":736,"type":15},"2026-07-30T05:29:03.275638",496]