Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill when building or packaging reusable NeMo Relay runtime behavior as a configuration-activated plugin with deterministic validation and rollback-safe registration.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 64% | 0% |
Use this skill when a user wants to package reusable NeMo Relay runtime behavior behind plugin configuration. Keep reusable plugin behavior separate from one-off application startup code.
Use this skill when the behavior should be activated by shared config and reused across applications, teams, or process startup paths.
Common cases:
runtime behavior.
kind and activation lifecycle.plugin config rather than repeated application startup code.
Do not build a plugin when a narrower NeMo Relay surface is enough:
nemo-relay-instrument-calls.
nemo-relay-plugin-observability.
credentials, or framework objects inside config.
kind string and receives component-local configfrom a shared plugin document.
tests, and deployment systems.
returns structured diagnostics before runtime behavior changes.
PluginContext, such as subscribers, guardrails, request intercepts, execution intercepts, or stream execution intercepts.
PluginContext gives the plugin system enough ownership to qualify runtimenames and roll back partial setup when activation fails.
config problems before rollout.
scope-local behavior when the use case is not reusable process-level behavior.
guardrail, conditional guardrail, request intercept, execution intercept, or stream execution intercept.
kind and the smallest JSON-compatible config shape.unsafe config, and invalid field combinations.
connections, create clients, register middleware, or mutate process state.
initialization or registration.
PluginContext, not by hand-registeringglobal behavior inside application startup.
failure rollback.
to roll back the component.
nemo-relay plugins edit, declare the config_schema capability and reference a local Draft 7 or Draft 2020-12 JSON Schema file from [config_schema].path in relay-plugin.toml. Schema-less plugins remain editable as raw JSON objects.
The top-level plugin document contains version, components, and policy. Each component supplies the plugin kind, enabled, and component-local config:
json{ "version": 1, "components": [ { "kind": "redaction-policy", "enabled": true, "config": { "preset": "strict" } } ], "policy": { "unknown_component": "warn", "unknown_field": "warn", "unsupported_value": "error" } }
Keep business logic in plugin code, not in config. Use references to secrets or endpoints rather than embedding sensitive values.
nemo_relay.pluginnemo-relay-node/pluginnemo_relay::pluginUse the same canonical snake_case config keys across bindings and files. Node helper functions can be camelCase, but plugin config objects remain snake_case.
or caches in plugin config.
PluginContextshould own the runtime behavior.
in the first plugin unless one config document clearly owns the bundle.
before data leaves the process.
diagnostic.
kind chosen.snake_case.PluginContext.active.
JSON Schema and declare config_schema in relay-plugin.toml.
nemo-relay-instrument-calls
nemo-relay-plugin-observability
nemo-relay-debug-runtime-integration
Other measured skills in the registry, with their headline benchmark lift.