chore(skills): add dynamic plugin maintainer guidance - #312
Conversation
WalkthroughAdds a new ChangesDynamic Plugin Agent Skills
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
1cdbe93 to
73b08c3
Compare
73b08c3 to
51efbf2
Compare
51efbf2 to
744b9f9
Compare
744b9f9 to
9989937
Compare
9989937 to
30b4f4f
Compare
30b4f4f to
0f7e347
Compare
0f7e347 to
baff0be
Compare
baff0be to
2281fc5
Compare
ae98192 to
29155fe
Compare
29155fe to
bb216ed
Compare
bb216ed to
2032bc5
Compare
2032bc5 to
848538c
Compare
848538c to
684dd54
Compare
684dd54 to
da53150
Compare
da53150 to
12e56bc
Compare
12e56bc to
b9ee757
Compare
b9ee757 to
8a3371f
Compare
1 similar comment
Signed-off-by: Will Killian <wkillian@nvidia.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agents/skills/maintain-dynamic-plugins/SKILL.md:
- Around line 12-14: The companion guidance in the skill’s instruction list is
missing maintain-ci, even though the skill covers CI workflow changes. Update
the guidance around the skill references so it includes maintain-ci alongside
the existing helpers, and make sure the documented companion set still points
users to the CI-specific runbook for permissions, pinned action SHAs, and cache
policy.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Enterprise
Run ID: dae54fc6-9f28-4cef-a88d-ff6504c1b755
📒 Files selected for processing (7)
.agents/skills/contribute-docs/SKILL.md.agents/skills/maintain-ci/SKILL.md.agents/skills/maintain-dynamic-plugins/SKILL.md.agents/skills/maintain-packaging/SKILL.md.agents/skills/test-python-binding/SKILL.md.agents/skills/test-rust-core/SKILL.md.agents/skills/validate-change/SKILL.md
📜 Review details
⚠️ CI failures not shown inline (2)
GitHub Actions: Build pull request / 12_Check _ Run.txt: chore(skills): add dynamic plugin maintainer guidance
Conclusion: failure
##[group]Run bail() {
�[36;1mbail() {�[0m
�[36;1m printf '::error::install-action: %s\n' "$*"�[0m
GitHub Actions: Build pull request / 0_pr-builder _ run.txt: chore(skills): add dynamic plugin maintainer guidance
Conclusion: failure
##[group]Run if grep -n -R -E 'alternative\-gh\-token\-secret\-name\:' ./.github; then
�[36;1mif grep -n -R -E 'alternative\-gh\-token\-secret\-name\:' ./.github; then�[0m
�[36;1m echo "::error::$ERROR_MSG"�[0m
🧰 Additional context used
📓 Path-based instructions (7)
.agents/skills/**
⚙️ CodeRabbit configuration file
.agents/skills/**:Maintainer Skills
This directory is the maintainer-only skill set for developing NeMo Relay
itself.Use these skills for repository work such as:
- Changing core or binding APIs
- Maintaining patches, packaging, CI, and docs
- Extending middleware or observability internals
- Validating library changes across bindings
Consumer-facing NeMo Relay usage skills live in the top-level
skills/
directory so they can be exported separately for integrators and end users.
Files:
.agents/skills/contribute-docs/SKILL.md.agents/skills/maintain-dynamic-plugins/SKILL.md.agents/skills/maintain-ci/SKILL.md.agents/skills/maintain-packaging/SKILL.md.agents/skills/test-rust-core/SKILL.md.agents/skills/test-python-binding/SKILL.md.agents/skills/validate-change/SKILL.md
.agents/skills/contribute-docs/**
⚙️ CodeRabbit configuration file
.agents/skills/contribute-docs/**: ---
name: contribute-docs
description: Contribute documentation or example changes that stay aligned with NeMo Relay public behavior
author: NVIDIA Corporation and Affiliates
license: Apache-2.0Contribute Docs Or Examples
Companion Guidance
Use
karpathy-guidelinesalongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.Use this skill for docs-only or example-heavy changes.
Rules
- Prefer the documented public API, not internal shortcuts
- Keep package names, repo references, and build commands current
- Update entry-point docs when examples or reading paths change
- Keep release-process and release-notes guidance in repo-maintainer docs such as
RELEASING.md, not as user-facing docs pages orCHANGELOG.md- Keep stable user-facing wrappers at
scripts/root in docs and examples;
only point at namespaced helper paths when documenting internal maintenance
work- In MDX files, top-of-file comments must use JSX comment delimiters:
{/*to open and*/}to close. Do not use HTML comments for MDX SPDX
headers.Checklist
README.mdordocs/index.mdupdated when entry points changed- Relevant getting-started or reference docs updated
- Example commands still match current package names and paths
- Relevant package or crate
README.mdfiles updated when examples or binding guidance changed- New or regenerated MDX files use
{/* ... */}for top-of-file SPDX comments- Release-policy docs still point to GitHub Releases as the only release-history source of truth
- Run
just docswhen the docs site changed;./scripts/build-docs.sh htmlremains the compatibility wrapperReferences
CONTRIBUTING.mdRELEASING.mddocs/contribute/testing-and-docs.mdreview-doc-style
Files:
.agents/skills/contribute-docs/SKILL.md
.agents/skills/maintain-ci/**
⚙️ CodeRabbit configuration file
.agents/skills/maintain-ci/**: ---
name: maintain-ci
description: Maintain and review NeMo Relay GitHub Actions workflows with explicit per-job permissions, pinned action SHAs, deterministic caching, reusable workflow permission boundaries, and local validation
author: NVIDIA Corporation and Affiliates
license: Apache-2.0Maintain GitHub Actions CI
Companion Guidance
Use
karpathy-guidelinesalongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.Use this skill when a change touches
.github/workflows/*.ymlor
.github/workflows/*.yaml, or when reviewing CI behavior for security,
reliability, or reproducibility.Standards
- Put
permissions:on each job that needs token access.- Avoid workflow-level permissions unless the repository intentionally centralizes
them and the inheritance tradeoff is documented.- Keep third-party actions pinned to full commit SHAs and preserve the readable
version comment after the SHA.- Prefer action-native or ecosystem-native caching over generic
actions/cache.- Use lockfiles or dependency manifests to drive cache invalidation.
- Keep deploy and publish permissions isolated to the jobs that need them.
- Read both caller and callee when a workflow uses
workflow_call.- Put release-tag validation in the earliest practical caller job when the
pipeline has tag-based publish behavior.- Keep release-tag policy aligned with
RELEASING.md: raw SemVer tags only,
no leadingv.Permission Model
contents: readis the default minimum for checkout-based build, test, docs,
and packaging jobs.pull-requests: readis required for PR metadata lookup jobs.pages: writeandid-token: writeshould be limited to Pages deployment
jobs and any caller that invokes them through a reusable workflow.- For reusable workflows, the caller must grant every permission the called
jobs require. The callee cannot ...
Files:
.agents/skills/maintain-ci/SKILL.md
.agents/skills/maintain-packaging/**
⚙️ CodeRabbit configuration file
.agents/skills/maintain-packaging/**: ---
name: maintain-packaging
description: Maintain NeMo Relay package metadata, module paths, generated artifacts, and release-facing build surfaces
author: NVIDIA Corporation and Affiliates
license: Apache-2.0Maintain Release And Packaging Surfaces
Companion Guidance
Use
karpathy-guidelinesalongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.Use this skill when a change affects how NeMo Relay is built, packaged, named, or
consumed outside the source tree.Audit Areas
- Rust
Cargo.tomlpackage names and workspace metadata- Python packaging in
pyproject.toml- Go module path in
go/nemo_relay/go.mod- Node workspace metadata in root
package.jsonandpackage-lock.json- Node package metadata in
crates/node/package.json- WebAssembly package naming and generated package expectations
- FFI header and library naming
- CI workflows, install commands, and example commands
- Release tags, release-note surfaces, and registry-facing version translation
Checklist
- Package names, import paths, and module names are internally consistent
- Generated artifacts still land where downstream consumers expect
- Docs and examples use the current install/import/build commands
- CI references the same package names as local workflows
- Public packaging changes are reflected in release-facing docs
- Release tags still use raw SemVer without a leading
v- Release history and release notes still point to GitHub Releases, not
CHANGELOG.mdor docs pagesReferences
pyproject.tomlgo/nemo_relay/go.modpackage.jsonpackage-lock.jsoncrates/node/package.jsonRELEASING.md.github/workflows/ci_pipe.yml.github/workflows/ci.yaml.gitlab-ci.yml
Files:
.agents/skills/maintain-packaging/SKILL.md
.agents/skills/test-rust-core/**
⚙️ CodeRabbit configuration file
.agents/skills/test-rust-core/**: ---
name: test-rust-core
description: Build and test the NeMo Relay Rust core and adaptive crates; use this for crates/core, crates/adaptive, or shared runtime semantics changes
author: NVIDIA Corporation and Affiliates
license: Apache-2.0Build And Test Rust Core
Companion Guidance
Use
karpathy-guidelinesalongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.Use this skill when a change is primarily in
crates/core,crates/adaptive,
or shared Rust runtime semantics.Default Path
- Run
cargo fmt --all.- Run
just test-rust.- Run
cargo clippy --workspace --all-targets -- -D warnings.- Because this skill covers
crates/core,crates/adaptive, or shared runtime
semantics, expand to the full binding matrix withvalidate-change.Use narrower crate tests as a local debug loop, not as the final validation
story for a Rust change.Common Commands
# Shared-runtime build/test wrapper just test-rust # Required Rust format pass cargo fmt --all # Required Rust lint pass cargo clippy --workspace --all-targets -- -D warnings # Core runtime only cargo test -p nemo-relay # Adaptive crate when touched cargo test -p nemo-relay-adaptive # Compile sweep just build-rust # Shared-semantics or broad runtime changes just ci=true test-rustWhen To Escalate
- If a public API, event shape, middleware behavior, plugin semantics, or any
crates/core/crates/adaptivebehavior changed, also usevalidate-change.- If the change is isolated to one binding wrapper on top of unchanged Rust
semantics, prefer that binding's build/test skill instead.References
Cargo.tomlcrates/core/Cargo.tomlcrates/adaptive/Cargo.tomlcrates/core/README.mdcrates/adaptive/README.mddocs/contribute/testing-and-docs.mdvalidate-change
Files:
.agents/skills/test-rust-core/SKILL.md
.agents/skills/test-python-binding/**
⚙️ CodeRabbit configuration file
.agents/skills/test-python-binding/**: ---
name: test-python-binding
description: Build and test the NeMo Relay Python binding; use this for python/nemo_relay or crates/python changes
author: NVIDIA Corporation and Affiliates
license: Apache-2.0Build And Test Python Binding
Companion Guidance
Use
karpathy-guidelinesalongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.Use this skill when the change is primarily in
python/nemo_relay,
python/tests,crates/python, or Python-facing docs/examples.Default Path
- Format changed Python wrapper and test files with
uv run ruff format python.- Run focused
pytestfirst when you know the affected area.- Run the full Python suite with
just test-pythonbefore review.- If any Rust files changed as part of the Python work, also run
cargo fmt --all,just test-rust, and
cargo clippy --workspace --all-targets -- -D warnings.- Use
just build-pythonwhen you want an explicit build-only pass.- If the native Rust bridge changed, add the Rust crate tests for
nemo-relay-python.Python Test Style
- Pytest is used to run tests.
- Do not add
@pytest.mark.asyncioto any test. Async tests are automatically detected and run by the async runner; the decorator is unnecessary clutter.- Do not add a
-> Nonereturn type annotation to test functions. This is not a common convention in pytest and adds unnecessary verbosity.- When mocking a class, do not define a new class. Use
unittest.mock.MagicMockorunittest.mock.AsyncMock, with thespecconstructor argument when necessary.- The name of the mocked class should be prefixed with
mock, notfake.- Prefer pytest fixtures over helper methods.
- Do not repeat fixtures, if a fixture is needed in multiple test files, place it in a
conftest.pyfile.- When creating a fixture follow this pattern:
`@pytest.fixture`(name=...
Files:
.agents/skills/test-python-binding/SKILL.md
.agents/skills/validate-change/**
⚙️ CodeRabbit configuration file
.agents/skills/validate-change/**: ---
name: validate-change
description: Choose and run the right NeMo Relay validation matrix for a change instead of using one fixed test list
author: NVIDIA Corporation and Affiliates
license: Apache-2.0Validate a Change
Companion Guidance
Use
karpathy-guidelinesalongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.Use this skill to choose the smallest validation set that still covers the
surfaces touched by a change.Mandatory Rules
- Format changed files with the language-native formatter before the final
lint/test pass.- If any Rust code changed, always run
just test-rust.- If any Rust code changed, also run
cargo fmt --all.- If any Rust code changed, also run
cargo clippy --workspace --all-targets -- -D warnings.- If
crates/coreorcrates/adaptivechanged, run the full matrix across Rust,
Python, Go, Node.js, and WebAssembly.- If a language surface changed, always run that language's test target even when
Rust core did not change.- If code changes alter APIs, bindings, commands, paths, packaging behavior,
observability/adaptive semantics, or documented best practices, update any
dependent maintainer or consumer skills in the same branch.- During iteration, prefer
uv run pre-commit run --files <changed files...>.- Before review or handoff, run
uv run pre-commit run --all-files.Start With The Change Shape
- Core runtime or shared semantics changed
Usetest-rust-core. This always includesjust test-rust,
cargo fmt --all,cargo clippy --workspace --all-targets -- -D warnings,
and the full matrix across Rust, Python, Go, Node.js, and WebAssembly.- Python-only wrapper or binding change
Usetest-python-binding.- Go binding change
Usetest-go-binding.- Node.js binding change
Usetest-node-binding.- WebAssembly binding change
Use `tes...
Files:
.agents/skills/validate-change/SKILL.md
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:53:33.722Z
Learning: Prefer the documented public API, not internal shortcuts
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: 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.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Treat plugin Relay compatibility as normal SemVer; use `>=0.5,<1.0` in examples unless a plugin intentionally declares a narrower range.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Native and worker plugins are trusted extensions; document that native plugins are in-process and unsandboxed, and worker plugins provide process isolation but not a security sandbox.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Manifest validation covers kind, compatibility, load contract, integrity, capability mismatch, and disabled-plugin behavior.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Native loader keeps libraries alive until registered callbacks are cleared and deregisters plugin kinds before unload.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Worker activation covers process launch, token auth, handshake, validation, declarative registration, proxy rollback, cancellation, and shutdown.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Rust and Python SDKs expose every supported registration surface.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Runtime helpers cover marks, scopes, continuations, and isolated scope stacks.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: `plugins list`, `plugins inspect`, and `plugins validate` report lifecycle and compatibility status without leaking secret config.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: Top-level `doctor` reports resolved dynamic plugin and host configuration status.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:00.453Z
Learning: When detailed dynamic plugin guides exist, keep Rust native, Python worker, and `grpc-v1` protocol details on separate pages.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:10.411Z
Learning: Keep WebAssembly package naming and generated package expectations consistent for downstream consumers.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:10.411Z
Learning: Keep FFI header names and native library names consistent across build and release surfaces.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:10.411Z
Learning: Keep `justfile` recipes for plugin crates and packages aligned with versioning, build, test, clean, and packaging behavior.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:10.411Z
Learning: Use raw SemVer for release tags, and translate package versions to valid PEP 440 only for Python wheels.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:10.411Z
Learning: Point release history and release notes to GitHub Releases instead of `CHANGELOG.md` or documentation pages.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:16.776Z
Learning: When you know the affected area, run focused `pytest` first before broader validation.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:23.982Z
Learning: Use narrower crate tests as a local debug loop, not as the final validation story for a Rust change.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:23.982Z
Learning: If a public API, event shape, middleware behavior, plugin semantics, or any `crates/core`/`crates/adaptive` behavior changed, also use `validate-change`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:23.982Z
Learning: If native dynamic plugins, gRPC workers, `nemo-relay-plugin`, `nemo-relay-worker`, `nemo-relay-worker-proto`, or `nemo-relay-types` changed, also use `maintain-dynamic-plugins`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:23.982Z
Learning: If the change is isolated to one binding wrapper on top of unchanged Rust semantics, prefer that binding's build/test skill instead.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: Use `karpathy-guidelines` alongside this skill for implementation or review work; keep changes scoped, surface assumptions, and define focused validation before editing.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: Format changed files with the language-native formatter before the final lint/test pass.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: If a language surface changed, always run that language's test target even when Rust core did not change.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: If dynamic plugin behavior changed, use `maintain-dynamic-plugins` and include the native SDK, worker protocol, Python SDK, docs, packaging, and Codecov surfaces in the validation plan.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: If code changes alter APIs, bindings, commands, paths, packaging behavior, observability/adaptive semantics, or documented best practices, update any dependent maintainer or consumer skills in the same branch.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: During iteration, prefer `uv run pre-commit run --files <changed files...>`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: Before review or handoff, run `uv run pre-commit run --all-files`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a core runtime or shared semantics change, use `test-rust-core`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a Python-only wrapper or binding change, use `test-python-binding`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a Go binding change, use `test-go-binding`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a Node.js binding change, use `test-node-binding`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a WebAssembly binding change, use `test-wasm-binding`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For an FFI surface change, use `test-ffi-surface`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a dynamic plugin loader, SDK, or protocol change, use `maintain-dynamic-plugins`; run the targeted plugin crates and `just test-python-plugin` first, then escalate to the core validation matrix when runtime behavior or `crates/core` changed.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a third-party integration or patch change, run `./scripts/apply-patches.sh --check` and the relevant integration tests; keep the root `./scripts/*.sh` wrappers for third-party flows and use the repository `justfile` entrypoints for build/test commands.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: For a docs-only change, run targeted checks only if commands, package names, or examples changed; use `just docs` for docs-site builds and `just docs-linkcheck` when links changed.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: Use the listed layer-specific skills: `test-rust-core`, `test-python-binding`, `test-go-binding`, `test-node-binding`, `test-wasm-binding`, `test-ffi-surface`, and `maintain-dynamic-plugins`.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: Use pre-commit in two modes: `uv run pre-commit run --files <changed files...>` during iteration and `uv run pre-commit run --all-files` before review or handoff.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: When matching Python files, Ruff runs on the selected files and `ty check . ...` may also run for the Python project.
Learnt from: CR
Repo: NVIDIA/NeMo-Relay
Timestamp: 2026-06-29T18:54:36.333Z
Learning: If the change is large or public-facing, verify that README and docs entry points still match current package names and paths; examples still run with the documented commands; any renamed public surfaces are reflected consistently in manifests and docs; and dynamic plugin examples use `compat.relay = ">=0.5,<1.0"` unless deliberately narrower.
🪛 LanguageTool
.agents/skills/test-python-binding/SKILL.md
[style] ~26-~26: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... when the Python worker SDK changed. 4. Run the full Python suite with `just test-p...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🔇 Additional comments (10)
.agents/skills/contribute-docs/SKILL.md (4)
29-31: LGTM!
44-45: LGTM!
54-54: LGTM!
32-33: 🎯 Functional CorrectnessKeep the broader
compat.relayguidance. The dynamic-plugin docs applycompat.relay = ">=0.5,<1.0"to examples generally, so this wording is fine.> Likely an incorrect or invalid review comment..agents/skills/test-rust-core/SKILL.md (2)
3-3: LGTM!Also applies to: 18-18, 67-69, 80-82
49-55: 🎯 Functional CorrectnessKeep this command as-is:
worker_plugin_integrationis declared incrates/core/Cargo.toml, socargo test -p nemo-relay --features worker-grpc --test native_plugin_integration --test worker_plugin_integrationalready covers both integration tests.> Likely an incorrect or invalid review comment..agents/skills/test-python-binding/SKILL.md (1)
3-3: LGTM!Also applies to: 18-32, 60-64, 77-79, 88-89, 99-103
.agents/skills/validate-change/SKILL.md (1)
31-33: LGTM!Also applies to: 56-59, 92-94, 130-130, 176-186
.agents/skills/maintain-ci/SKILL.md (1)
37-40: LGTM!Also applies to: 68-71, 82-82, 98-103
.agents/skills/maintain-packaging/SKILL.md (1)
24-32: LGTM!Also applies to: 42-45, 47-59
|
/merge |
Overview
Add focused maintainer Skills guidance for dynamic plugin development and route related validation, packaging, CI, Python, Rust, and documentation work to the right repository workflows.
Dependency: PR #310 should merge first because several Skills updates describe its Python worker SDK paths and commands: #310
Details
.agents/skills/maintain-dynamic-plugins/SKILL.md.just test-python-pluginrecipe.doctorfrompluginssubcommands, keep unmerged detailed-doc guidance conditional, and correct stale docs/workflow references..agents/skills/; it contains no runtime, SDK, workflow, packaging configuration, or docs-site content changes.Validation:
cargo test -p nemo-relay --features worker-grpc --test native_plugin_integration --test worker_plugin_integration --no-runuv run pre-commit run --files <seven changed SKILL.md files>uv run pre-commit run --all-filesWhere should the reviewer start?
Start with
.agents/skills/maintain-dynamic-plugins/SKILL.md, then review the routing additions in.agents/skills/validate-change/SKILL.md.Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)
Summary by CodeRabbit