maintain-dynamic-plugins

द्वारा nvidia

NeMo Relay डायनामिक प्लगइन लोडर, मैनिफेस्ट, रस्ट नेटिव SDK, gRPC वर्कर प्रोटोकॉल, पायथन वर्कर SDK, दस्तावेज़, परीक्षण और रिलीज़ वर्कफ़्लो कवरेज बनाए रखें

npx skills add https://github.com/nvidia/nemo-relay --skill maintain-dynamic-plugins

Maintain Dynamic Plugins

Use this skill for plugin.kind = "rust_dynamic", plugin.kind = "worker", nemo-relay-plugin, nemo-relay-worker, nemo-relay-worker-proto, nemo-relay-types, and the Python nemo-relay-plugin package.

Rules

  • Keep the stable boundary explicit: native plugins cross a C ABI; worker plugins cross grpc-v1.
  • Do not pass Rust runtime types, trait objects, futures, or allocator-owned strings across the native dynamic-library boundary.
  • Typed native middleware futures run on the SDK-owned Tokio executor. Keep subscribers synchronous and preserve raw synchronous ABI registrations.
  • Define closed worker transport structures in protobuf when generated clients must enforce their fields. Keep open application payloads lossless by using JsonValue or JsonEnvelope rather than google.protobuf.Value.
  • Keep relay-plugin.toml dynamic records separate from generic runtime components. Enabled dynamic records may synthesize internal component specs; disabled records stay inspectable but unloaded.
  • Relay 0.8 establishes the native API 1 and grpc-v1 canonical ToolExecutionResult baseline. Require every dynamic plugin to rebuild and declare a compat.relay range that excludes versions before 0.8. Recommend >=0.8.0,<1.0; open-ended or narrower 0.8-or-newer ranges are valid.
  • Treat compat.relay as the plugin author's compatibility assertion, not proof that an artifact was rebuilt. Do not add a legacy raw-result adapter.
  • Relay 0.8 retains the grpc-v1 identifier and nemo.relay.worker.v1 package while changing the tool-result protobuf types; every worker must regenerate its bindings and rebuild. Native ABI v4 permits append-only host-table extensions guarded by struct_size; existing fields must remain frozen at their original offsets. Incompatible native JSON, reordered or replaced native fields, or incompatible worker protobuf changes must bump native_api or worker_protocol.
  • Do not add tests under src; Rust tests belong in crate tests/ trees and Python SDK tests belong under python/tests.
  • Native and worker plugins are trusted extensions. Document that native plugins are in-process and unsandboxed; worker plugins provide process isolation but not a security sandbox.

Checklist

  • Manifest validation covers kind, compatibility, load contract, integrity, capability mismatch, and disabled-plugin behavior.
  • Native loader keeps libraries alive until registered callbacks are cleared and deregisters plugin kinds before unload.
  • Worker activation covers process launch, token auth, handshake, validation, declarative registration, proxy rollback, cancellation, and shutdown.
  • Rust and Python SDKs expose every supported registration surface.
  • Runtime helpers cover marks, scopes, continuations, and isolated scope stacks.
  • plugins list, plugins inspect, and plugins validate report lifecycle and compatibility status without leaking secret config.
  • Top-level doctor reports resolved dynamic plugin and host configuration status.
  • When detailed dynamic plugin guides exist, they keep Rust native, Python worker, and grpc-v1 protocol details on separate pages.
  • justfile, Codecov, and CI package/test workflows include new plugin crates and packages.

Validation

Choose checks by the changed layer:

  • Manifest or shared types: test the owning Rust crate.
  • Native loader or ABI: prepare plugin fixtures and run the focused native plugin integration test.
  • Worker protocol or host: test the worker crates and regenerate or test the Python worker SDK only when its protocol surface changes.
  • Shared runtime behavior: run the Rust suite and only binding suites whose observable plugin behavior changes.
  • Documentation or packaging: run their targeted checks only when changed.

Canonical surface suites prepare plugin fixtures. Before a raw focused native or worker integration test, run just build-test-plugin-fixtures; never compile fixtures inside an individual test case.

References

  • crates/core/src/plugin/dynamic/
  • crates/plugin
  • crates/worker
  • crates/worker-proto
  • crates/types
  • python/plugin
  • examples/rust-native-plugin
  • docs/build-plugins
  • examples/python-grpc-worker-plugin

nvidia की और Skills

fhir-basics
nvidia
एजेंटों को सिखाता है कि FHIR R4 APIs कैसे काम करते हैं, कौन से संसाधन उपलब्ध हैं, उन्हें खोज मापदंडों के साथ कैसे क्वेरी करें, और सभी प्रतिक्रिया प्रारूपों को सही ढंग से कैसे पार्स करें…
compileiq-validate-result
nvidia
खोज पूरी होने के बाद और किसी स्पीडअप का दावा करने या ACF भेजने से पहले उपयोग करें। dump_results CSV लोड करता है, शीर्ष-K उम्मीदवारों (एकल-उद्देश्य) को निकालता है…
changelog-audit
nvidia
रिलीज़ से पहले Warp CHANGELOG.md का ऑडिट करें: खोई हुई प्रविष्टियाँ पुनर्प्राप्त करें, उपयोगकर्ता प्रभाव के अनुसार क्रमबद्ध करें, प्रविष्टि भाषा को परिष्कृत करें, लाइन-रैप करें, और (रिलीज़-ब्रांच मोड) तुलना बढ़ाएँ…
dgx-diagnose
nvidia
सामान्य DGX Station GB300 समस्याओं का निदान करें — CUDA क्रैश, गलत-GPU लक्ष्यीकरण, vLLM/SGLang कंटेनर बग, MIG स्थिति समस्याएं, NVLink/Fabric Manager त्रुटियां,…
aicr-managing-openvex
nvidia
Use when adding, updating, or removing CVE/GHSA suppressions in `.openvex.json` — the OpenVEX document consumed by the daily image vulnerability scan workflow.…
aicr-creating-slide-decks
nvidia
किसी तकनीकी अवधारणा या कार्यप्रवाह के लिए स्व-निहित HTML स्लाइड डेक या दृश्य वार्ता-बिंदु (जैसे demos/*.html) बनाते समय उपयोग करें — पूर्ण-स्क्रीन दिखाया जाए या…
aicr-creating-guided-demos
nvidia
एक इंटरैक्टिव निर्देशित डेमो स्क्रिप्ट (demos/*.sh) तैयार करता है, लाइव या स्व-गति, Frame → Tell → Show → Close पैटर्न के साथ। "demo script", "guided… पर सक्रिय होता है।
aicr-analyzing-snapshots
nvidia
AICR स्नैपशॉट YAML फ़ाइल का विश्लेषण करते समय, क्लस्टर स्थिति की समीक्षा करते समय, प्रदाता विशेषताओं की तुलना करते समय, GPU/नेटवर्क टोपोलॉजी अंतर्दृष्टि निकालते समय, या... उपयोग करें।