Skip to main content

add-binding-feature

Add or change a public NeMo Relay runtime API across Rust and affected language bindings when no more specific maintainer skill owns the domain. Do not use for middleware additions, internal refactors, binding-local fixes, or docs-only changes.

소스 정보

저장소
NVIDIA/NeMo-Relay
최근 소스 활동
2026년 9월 8일 20:22
감지된 SKILL.md 언어
영어
스타
196
포크
86

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
add-binding-feature
description
Add or change a public NeMo Relay runtime API across Rust and affected language bindings when no more specific maintainer skill owns the domain. Do not use for middleware additions, internal refactors, binding-local fixes, or docs-only changes.
license
Apache-2.0
# Add a Binding Feature Use this skill when a change affects the public runtime surface and must stay in parity across the Rust core, FFI, and one or more bindings. Do not use this skill for: - Internal-only core refactors with no public API change - New middleware contracts, which use the middleware-specific workflow - Binding-local bug fixes that do not change shared behavior - Docs-only or example-only updates ## Implementation Order 1. **Core Rust** Implement the behavior first in `crates/core/src/api/` and related core modules such as `crates/core/src/api/runtime/`, `crates/core/src/codec/`, or `crates/core/src/json.rs`. 2. **FFI / shared C surface, when affected** Update `crates/ffi` and its generated header only when the capability is exposed through the C ABI or Go binding. 3. **Language-native bindings** Update each binding that exposes the capability; leave unrelated bindings unchanged. 4. **Language wrapper helpers** Update Python wrapper modules, Go shorthand packages, typed helpers, or adaptive/plugin helpers if the new behavior belongs there. 5. **Docs and examples** Update reference docs, language-binding docs, and examples when the public surface or expected usage changed. 6. **Validation** Follow the repository validation policy for the surfaces whose public or observable behavior changed. ## Naming Conventions | Layer | Convention | Example | |-------------|-------------------|--------------------------------------| | Rust | `snake_case` | `nemo_relay_tool_call` | | C FFI | `nemo_relay_` prefix | `nemo_relay_tool_call` | | Python | `snake_case` | `nemo_relay.tools.call` | | Go | `PascalCase` | `nemo_relay.ToolCall` | | Node.js | `camelCase` | `toolCall` | ## Parity Checklist - [ ] Core function with doc comment in `crates/core/src/api/` - [ ] Runtime callback/state, codec, JSON, or event/tool/LLM/scope types added in the relevant core module if needed - [ ] FFI wrapper and generated header updated if the C ABI changes - [ ] Python native binding, wrapper, docstring, and stubs updated if exposed - [ ] Go wrapper and shorthand package updated if the experimental Go surface exposes the capability - [ ] Node.js native binding and wrapper updated if exposed - [ ] Typed wrapper or adaptive/plugin helper surfaces updated when applicable - [ ] Meaningful tests added in every affected language surface - [ ] SPDX license header on any new files - [ ] Relevant pages under `docs/reference/` updated - [ ] `README.md`, `docs/getting-started/`, or binding-level READMEs updated if behavior differs by language - [ ] Relevant getting-started, README, or example docs updated if usage changed ## Decision Points Lock these before implementing: - Which bindings actually expose the new surface? - Is the change part of the plain JSON API, typed wrappers, adaptive/plugin helpers, or observability helpers? - Does the new API need manual lifecycle and managed execute variants, or only one of them? - Does the new behavior change event fields, metadata, or scope expectations? - If tool execution is affected, does every callback, continuation, managed return, and manual end surface use the canonical `ToolExecutionResult` contract and preserve its opaque annotation? - Are docs/examples required because the intended usage changed? ## Key References - Architecture: `docs/about-nemo-relay/architecture.mdx` - Reference index: `docs/reference/api/index.mdx` - Getting started and binding status: `README.md`, `docs/getting-started/quick-start/index.mdx`, `docs/reference/support-matrix.mdx` - Typed wrappers and codecs: `docs/integrate-into-frameworks/using-codecs.mdx`, `docs/integrate-into-frameworks/provider-codecs.mdx` - Adaptive config/plugins: `docs/configure-plugins/about.mdx`, `docs/build-plugins/about.mdx`, `docs/configure-plugins/adaptive/configuration.mdx` - Existing pattern: follow a surface already implemented across core, FFI, Python, Go, and Node.js rather than inventing a new shape
GitHub에서 보기