Skip to content

docs: document automatic skill-load marks [3/3]#393

Draft
willkill07 wants to merge 3 commits into
NVIDIA:mainfrom
willkill07:wkk_relay-443-docs
Draft

docs: document automatic skill-load marks [3/3]#393
willkill07 wants to merge 3 commits into
NVIDIA:mainfrom
willkill07:wkk_relay-443-docs

Conversation

@willkill07

Copy link
Copy Markdown
Member

Overview

Documents RELAY-443 automatic skill-load marks across coding agents, framework integrations, exporters, and observability guidance. This is the third commit in a three-PR cumulative stack; all three PRs target upstream main as requested, so this PR temporarily includes the first two commits until they merge.

  • I confirm this contribution is my own work, or I have the right to submit it under this project's license.
  • I searched existing issues and open pull requests, and this does not duplicate existing work.

Details

  • Documents the observed and inferred event contracts, eager timing, tool parentage, deduplication, and complete-read requirement.
  • Covers Claude Code, Codex, Hermes, LangChain, LangGraph, Deep Agents, and OpenClaw behavior.
  • Explains OpenClaw privacy stripping and fallback handling.
  • Clarifies exporter behavior: ATOF preserves marks, ATIF omits point-in-time marks, and trace exporters use configured projection behavior.
  • Updates the observability consumer skill so future instrumentation guidance includes automatic skill-load marks.

Validation: just docs, documentation link checks, and uv run pre-commit run --all-files.

Breaking changes: none.

Where should the reviewer start?

Start with docs/about-nemo-relay/concepts/events.mdx, then review the host-specific CLI and integration pages.

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

  • Relates to: RELAY-443

Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
@willkill07 willkill07 requested review from a team and lvojtku as code owners July 8, 2026 23:43
@github-actions github-actions Bot added size:XL PR is extra large Documentation documentation-related lang:js PR changes/introduces Javascript/Typescript code lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code labels Jul 8, 2026
@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 03e7a353-043a-4350-aac0-3ea0d0a8495a

📥 Commits

Reviewing files that changed from the base of the PR and between 29403a7 and 27af737.

📒 Files selected for processing (34)
  • crates/cli/src/adapters/mod.rs
  • crates/cli/src/installer.rs
  • crates/cli/src/session.rs
  • crates/cli/tests/coverage/adapters_tests.rs
  • crates/cli/tests/coverage/installer_tests.rs
  • crates/cli/tests/coverage/session_tests.rs
  • crates/core/src/api/mod.rs
  • crates/core/src/api/skill_load.rs
  • crates/core/src/api/tool.rs
  • crates/core/tests/integration/api_surface_tests.rs
  • crates/core/tests/unit/atif_tests.rs
  • crates/core/tests/unit/skill_load_tests.rs
  • docs/about-nemo-relay/concepts/events.mdx
  • docs/nemo-relay-cli/claude-code.mdx
  • docs/nemo-relay-cli/codex.mdx
  • docs/nemo-relay-cli/hermes.mdx
  • docs/supported-integrations/about.mdx
  • docs/supported-integrations/deepagents.mdx
  • docs/supported-integrations/openclaw-plugin.mdx
  • integrations/coding-agents/claude-code/hooks/hooks.json
  • integrations/coding-agents/codex/hooks/hooks.json
  • integrations/openclaw/package.json
  • integrations/openclaw/src/hook-replay/skill-load.ts
  • integrations/openclaw/src/hook-replay/tool.ts
  • integrations/openclaw/src/hooks-backend.ts
  • integrations/openclaw/test/hooks-backend.test.ts
  • integrations/openclaw/test/live-smoke.test.ts
  • integrations/openclaw/test/skill-load.test.ts
  • integrations/openclaw/test/tool-replay.test.ts
  • python/tests/integrations/deepagents_tests/test_deepagents_integration.py
  • python/tests/integrations/langchain_tests/test_middleware.py
  • python/tests/integrations/langgraph_tests/test_langgraph_integration.py
  • python/tests/test_tools.py
  • skills/nemo-relay-setup-observability/SKILL.md
 ____________________________________________________________________________________________________________________________
< There is nothing quite so useless as doing with great efficiency something that should not be done at all. - Peter Drucker >
 ----------------------------------------------------------------------------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@willkill07 willkill07 added this to the 0.6 milestone Jul 8, 2026
@willkill07 willkill07 self-assigned this Jul 8, 2026
@willkill07 willkill07 marked this pull request as draft July 8, 2026 23:44
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

License Diff

Compared against origin/main.

Lockfile license changes

Lockfile License Changes

Rust

Added

  • None

Removed

  • None

Updated/Changed

  • None

Node

Added

  • None

Removed

  • None

Updated/Changed

  • None

Python

Added

  • None

Removed

  • None

Updated/Changed

  • None
Status output
[license-diff] selected languages: rust, node, python
[license-diff] generating current inventory
[license-diff] current: generating Rust inventory
[license-diff] current: Rust inventory complete (378 packages)
[license-diff] current: generating Node inventory
[license-diff] current: Node inventory complete (363 packages)
[license-diff] current: generating Python inventory
[license-diff] current: Python inventory complete (105 packages)
[license-diff] current inventory complete
[license-diff] checking out base ref origin/main into a temporary worktree
[license-diff] base: generating Rust inventory
[license-diff] base: Rust inventory complete (378 packages)
[license-diff] base: generating Node inventory
[license-diff] base: Node inventory complete (363 packages)
[license-diff] base: generating Python inventory
[license-diff] base: Python inventory complete (105 packages)
[license-diff] base inventory complete
[license-diff] removing temporary base worktree
[license-diff] comparing inventories
[license-diff] rendering Markdown output
[license-diff] done

| `before_message_write` | Records assistant turns for ordered LLM replay when provider timing can be paired later. |
| `after_tool_call` | Replays successful tool calls as tool spans; blocked tools emit marks. |
| `before_tool_call` | Runs conditional guardrails and eagerly starts stable-ID skill-read spans before default argument stripping. |
| `after_tool_call` | Completes successful tool spans; blocked tools emit marks. When no stable pre-tool call is available, original parameters provide the skill-load fallback. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This wording currently over-claims the stack behavior. In 392, the eager skill-read path returns before blockedToolDetails() runs, so an eager read_file that comes back blocked can close the tool span without emitting the existing openclaw.tool_blocked mark. I’d either preserve that mark path in code or narrow this doc to match the implementation.

@mnajafian-nv mnajafian-nv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work on documenting the skill-load contract across the host and integration surfaces. One docs consistency gap remains outside this diff: docs/nemo-relay-cli/basic-usage.mdx still lists the Claude Code and Codex hook bundles only through PreCompact, while this PR adds UserPromptExpansion to the host-specific docs. That leaves readers with conflicting answers depending on which page they open first. I’d update the top-level hook matrix in the same stack, or explicitly call out the follow-up if it is being deferred.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Documentation documentation-related lang:js PR changes/introduces Javascript/Typescript code lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code size:XL PR is extra large

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants