Skip to content

Commit be0aad9

Browse files
Merge pull request #13 from NVIDIA-NeMo/nooa-skill-renames
Rename bundled skills to nooa
2 parents 306f2d6 + 0fafd2e commit be0aad9

16 files changed

Lines changed: 101 additions & 89 deletions

File tree

packages/nooa-cli/src/nooa_cli/commands/start_dev.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def _find_pid_on_port(port: int) -> str | None:
7070
type=click.Path(dir_okay=False),
7171
default=None,
7272
help="SQLite trace store path. Defaults to ~/.config/nooa/traces.db "
73-
"(or $NEMO_OO_TRACE_DB if set). Pass an explicit path to run a second viewer "
73+
"(or $NOOA_TRACE_DB if set). Pass an explicit path to run a second viewer "
7474
"side-by-side with the default one.",
7575
)
7676
def command(port: int, host: str, db_path_opt: str | None):
@@ -80,24 +80,27 @@ def command(port: int, host: str, db_path_opt: str | None):
8080

8181
from nooa.paths import get_user_dir
8282

83-
# Resolve the DB path with --db winning, then $NEMO_OO_TRACE_DB, then the
84-
# user-dir default. Set NEMO_OO_TRACE_DB unconditionally so the viewer
85-
# module picks it up at import time (it reads the env var at the top).
83+
# Resolve the DB path with --db winning, then $NOOA_TRACE_DB, then the
84+
# legacy $NEMO_OO_TRACE_DB, then the user-dir default. Set both env vars
85+
# unconditionally so the viewer module picks it up at import time.
8686
if db_path_opt:
8787
db_path = Path(db_path_opt).expanduser().resolve()
88+
elif "NOOA_TRACE_DB" in os.environ:
89+
db_path = Path(os.environ["NOOA_TRACE_DB"]).expanduser().resolve()
8890
elif "NEMO_OO_TRACE_DB" in os.environ:
8991
db_path = Path(os.environ["NEMO_OO_TRACE_DB"]).expanduser().resolve()
9092
else:
9193
db_path = get_user_dir("traces.db")
9294
db_path.parent.mkdir(parents=True, exist_ok=True)
95+
os.environ["NOOA_TRACE_DB"] = str(db_path)
9396
os.environ["NEMO_OO_TRACE_DB"] = str(db_path)
9497

9598
try:
9699
from nooa.viewer.main import app
97100
except ImportError:
98101
click.secho(
99102
"Error: viewer dependencies are not installed.\n"
100-
'Install them with: uv add "nemo-oo-agents[viewer]"',
103+
'Install them with: uv add "nooa[viewer]"',
101104
fg="red",
102105
err=True,
103106
)

skills/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ These are instructions *for coding agents about the framework* — not `nooa.Ski
88

99
| Skill | Use for |
1010
|---|---|
11-
| [`nemo-oo-agent-authoring`](nemo-oo-agent-authoring/SKILL.md) | Core authoring: Agent subclasses, generation methods (`...`), docstring prompts, structured output, strategies (CodeAct/Predict), visibility, orchestrators, subagents, LLM config, prompt debugging |
12-
| [`nemo-oo-codeact-advanced`](nemo-oo-codeact-advanced/SKILL.md) | Advanced strategy tuning: prefill (custom/disable/pre-ellipsis), loop guards, truncation tuning, code restrictions, execution internals, PredictConfig |
13-
| [`nemo-oo-agentdoc`](nemo-oo-agentdoc/SKILL.md) | Making types render beautiful docs for the LLM: `doc()`, `spec()`, `hidden`, `Annotated` descriptions, `pformat`/`pprint` tuning |
14-
| [`nemo-oo-context-and-state`](nemo-oo-context-and-state/SKILL.md) | Context blocks, event history and `EventQuery`, history summarization, persistence and memory |
15-
| [`nemo-oo-tools-and-skills`](nemo-oo-tools-and-skills/SKILL.md) | Methods as tools, built-in tools (Bash/File/Todo), MCP integration, agent skills (`Skill`/`TextSkill`), multimodal media |
16-
| [`nemo-oo-channels`](nemo-oo-channels/SKILL.md) | Reactive input: Channel/QueueManager, race() dispatch loops, spawn() background jobs, monitor/cron/tail producers |
17-
| [`nemo-oo-self-extending`](nemo-oo-self-extending/SKILL.md) | Agent-authored code: persistent skill libraries (self.libs), in-cell helpers and standalone @strategy sub-calls, @slash_command |
18-
| [`nemo-oo-middleware-hooks`](nemo-oo-middleware-hooks/SKILL.md) | Intercepting execution: middleware (`intercept()` guardrails/transforms/blocking), event observers (`on()`), InstrumentationHooks protocol |
19-
| [`nemo-oo-capturing-traces`](nemo-oo-capturing-traces/SKILL.md) | Capturing traces: auto-tracing, `enable_tracing` + exporters (jsonl/otlp/langfuse/journal), `@no_trace`, span model, env vars |
20-
| [`nemo-oo-trace-viewer`](nemo-oo-trace-viewer/SKILL.md) | Running and using the trace viewer (`nooa start-dev`): UI, import/export, REST API |
21-
| [`nemo-oo-trace-explorer`](nemo-oo-trace-explorer/SKILL.md) | Programmatic trace analysis: `trace-explorer` CLI, `TraceExplorer` library, thin client, experiment-level debugging |
11+
| [`nooa-agent-authoring`](nooa-agent-authoring/SKILL.md) | Core authoring: Agent subclasses, generation methods (`...`), docstring prompts, structured output, strategies (CodeAct/Predict), visibility, orchestrators, subagents, LLM config, prompt debugging |
12+
| [`nooa-codeact-advanced`](nooa-codeact-advanced/SKILL.md) | Advanced strategy tuning: prefill (custom/disable/pre-ellipsis), loop guards, truncation tuning, code restrictions, execution internals, PredictConfig |
13+
| [`nooa-agentdoc`](nooa-agentdoc/SKILL.md) | Making types render beautiful docs for the LLM: `doc()`, `spec()`, `hidden`, `Annotated` descriptions, `pformat`/`pprint` tuning |
14+
| [`nooa-context-and-state`](nooa-context-and-state/SKILL.md) | Context blocks, event history and `EventQuery`, history summarization, persistence and memory |
15+
| [`nooa-tools-and-skills`](nooa-tools-and-skills/SKILL.md) | Methods as tools, built-in tools (Bash/File/Todo), MCP integration, agent skills (`Skill`/`TextSkill`), multimodal media |
16+
| [`nooa-channels`](nooa-channels/SKILL.md) | Reactive input: Channel/QueueManager, race() dispatch loops, spawn() background jobs, monitor/cron/tail producers |
17+
| [`nooa-self-extending`](nooa-self-extending/SKILL.md) | Agent-authored code: persistent skill libraries (self.libs), in-cell helpers and standalone @strategy sub-calls, @slash_command |
18+
| [`nooa-middleware-hooks`](nooa-middleware-hooks/SKILL.md) | Intercepting execution: middleware (`intercept()` guardrails/transforms/blocking), event observers (`on()`), InstrumentationHooks protocol |
19+
| [`nooa-capturing-traces`](nooa-capturing-traces/SKILL.md) | Capturing traces: auto-tracing, `enable_tracing` + exporters (jsonl/otlp/langfuse/journal), `@no_trace`, span model, env vars |
20+
| [`nooa-trace-viewer`](nooa-trace-viewer/SKILL.md) | Running and using the trace viewer (`nooa start-dev`): UI, import/export, REST API |
21+
| [`nooa-trace-explorer`](nooa-trace-explorer/SKILL.md) | Programmatic trace analysis: `trace-explorer` CLI, `TraceExplorer` library, thin client, experiment-level debugging |
2222

2323
All content was verified against `src/nooa` at the time of writing; where the skills contradict older docs (e.g. `SkillManager`, `from agentdoc import ...`, `enable_tracing(trace_dir=...)`, "private methods aren't traced"), the skills reflect the code.
2424

@@ -29,11 +29,11 @@ Copy or symlink skill directories into the location your coding agent reads:
2929
```bash
3030
# Claude Code — all skills, user-global
3131
mkdir -p ~/.claude/skills
32-
cp -R skills/nemo-oo-* ~/.claude/skills/
32+
cp -R skills/nooa-* ~/.claude/skills/
3333

3434
# Or one skill into a project
3535
mkdir -p .claude/skills
36-
cp -R skills/nemo-oo-agent-authoring .claude/skills/
36+
cp -R skills/nooa-agent-authoring .claude/skills/
3737
```
3838

3939
Other hosts read from different directories (e.g. `.codex/skills/`, `.agents/skills/`).
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
name: nemo-oo-agent-authoring
2+
name: nooa-agent-authoring
33
description: Author agents with the NVIDIA OO Agents (nooa) framework. Use when writing or modifying an Agent subclass, agentic methods (ellipsis bodies), docstring prompts, structured output contracts, strategy selection (CodeAct/Predict), visibility control, orchestrators, or subagent composition.
4-
compatibility: Python >= 3.12, uv, nemo-oo-agents core package (CLI: nooa)
4+
compatibility: Python >= 3.12, uv, nooa package (CLI: nooa)
55
---
66

77
# Authoring NVIDIA OO Agents (nooa)
@@ -104,7 +104,7 @@ async def summarize(self, text: str) -> str:
104104
...
105105
```
106106

107-
There are cases where `{param}` is appropriate — e.g. when prefill is disabled and you need custom rendering, or when you want to embed a short value directly in the instruction. For advanced prefill and truncation control, see `nemo-oo-codeact-advanced`.
107+
There are cases where `{param}` is appropriate — e.g. when prefill is disabled and you need custom rendering, or when you want to embed a short value directly in the instruction. For advanced prefill and truncation control, see `nooa-codeact-advanced`.
108108

109109
Template expansion is primarily for values the signature *can't* show: `{self.attr}` instance state and computed expressions like `{len(items)}`. Escape literal braces as `{{ }}`.
110110

@@ -158,7 +158,7 @@ async def implement(self, task: str) -> str: ...
158158

159159
**Constructors take `config=` only.** `PredictStrategy(max_retries=3)` and `CodeActStrategy(max_iterations=10)` are errors — wrap options in `PredictConfig(...)`/`CodeActConfig(...)`. Useful `CodeActConfig` fields: `max_iterations`, `max_retries`, `cell_timeout`, `max_tokens`, `temperature`, `max_consecutive_text_only`, `restrictions`.
160160

161-
`max_iterations` is a safety net, not the main tuning dial — decompose the task instead of raising the cap. For prefill control, truncation tuning, code restrictions, and the full config surface, see `nemo-oo-codeact-advanced`.
161+
`max_iterations` is a safety net, not the main tuning dial — decompose the task instead of raising the cap. For prefill control, truncation tuning, code restrictions, and the full config surface, see `nooa-codeact-advanced`.
162162

163163
**Reserved parameter:** naming an agentic method parameter `reasoning` raises `ValueError` at class creation (chain-of-thought is provided via the injected `reasoning()` builtin instead).
164164

@@ -196,8 +196,8 @@ class SearchAgent(Agent, llm=llm):
196196
- **Hide the entry-point agentic method** (`@hidden` on `run`/`respond`) when the LLM might recursively call itself through `doc(self)`.
197197
- Never hide a method the LLM must call as a tool.
198198
- Module-level imports are the LLM's execution namespace: if generated code needs `json.loads`, `import json # noqa: F401` at the top of the agent file.
199-
- `self.context` / `self.events` are always present but hidden; expose with `spec(self, "context", hidden=False)` in `__init__` (see `nemo-oo-context-and-state`).
200-
- Making the visible surface render *well* — field descriptions, referenced-type expansion, `pformat` caps — is its own craft: see `nemo-oo-agentdoc`.
199+
- `self.context` / `self.events` are always present but hidden; expose with `spec(self, "context", hidden=False)` in `__init__` (see `nooa-context-and-state`).
200+
- Making the visible surface render *well* — field descriptions, referenced-type expansion, `pformat` caps — is its own craft: see `nooa-agentdoc`.
201201

202202
## Orchestration and decomposition
203203

@@ -223,10 +223,10 @@ enable_logging(level="DEBUG") # nooa.* logger hierarchy
223223
# kill -USR2 <pid> # dump traceback + all registered cells to debug_dump_<pid>.txt
224224
```
225225

226-
Most bugs are visible in the rendered prompt. For runtime behavior, capture traces and inspect them — see `nemo-oo-capturing-traces` and `nemo-oo-trace-explorer`.
226+
Most bugs are visible in the rendered prompt. For runtime behavior, capture traces and inspect them — see `nooa-capturing-traces` and `nooa-trace-explorer`.
227227

228228
## Where to look
229229

230230
- Guides: `docs/guides/prompt-mechanics.md`, `strategies.md`, `structured-output.md`, `writing-generation-methods.md`, `single-vs-multi-agent.md`.
231231
- Runnable examples: `examples/quickstart/01``15`.
232-
- Related skills: `nemo-oo-codeact-advanced`, `nemo-oo-context-and-state`, `nemo-oo-tools-and-skills`, `nemo-oo-agentdoc`, `nemo-oo-channels`, `nemo-oo-capturing-traces`, `nemo-oo-trace-viewer`, `nemo-oo-trace-explorer`.
232+
- Related skills: `nooa-codeact-advanced`, `nooa-context-and-state`, `nooa-tools-and-skills`, `nooa-agentdoc`, `nooa-channels`, `nooa-capturing-traces`, `nooa-trace-viewer`, `nooa-trace-explorer`.
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
name: nemo-oo-agentdoc
2+
name: nooa-agentdoc
33
description: Make NVIDIA OO agent types render beautiful documentation for the LLM — doc(), spec(), hidden, Annotated field descriptions, and pformat/pprint tuning. Use when designing Pydantic models/dataclasses the LLM will see, controlling what appears in doc(self), hiding internals, adding field descriptions, fixing noisy or missing type docs, or tuning value truncation.
4-
compatibility: nemo-oo-agents core package (agentdoc ships inside it — import from nooa.agentdoc)
4+
compatibility: nooa package (agentdoc ships inside it — import from nooa.agentdoc)
55
---
66

77
# agentdoc: Beautiful Docs for the LLM
@@ -139,7 +139,7 @@ dict(len=100, items={0: 0, 1: 1, ..., 99: 99})
139139

140140
- Classes with their own `__repr__` (pandas, numpy) are trusted and rendered via their repr (truncated head/tail if huge).
141141
- Implement `__instance_values__(self) -> dict[str, Any]` (the `SupportsInstanceValues` protocol) to control exactly which fields an instance renders — omitted keys are hidden.
142-
- These same knobs are what `TruncationConfig`'s `event_format`/`prefill_format` splat into `pformat` framework-wide — see `nemo-oo-codeact-advanced`.
142+
- These same knobs are what `TruncationConfig`'s `event_format`/`prefill_format` splat into `pformat` framework-wide — see `nooa-codeact-advanced`.
143143

144144
## Gotchas
145145

@@ -151,6 +151,6 @@ dict(len=100, items={0: 0, 1: 1, ..., 99: 99})
151151

152152
## Related skills
153153

154-
- `nemo-oo-agent-authoring` — visibility rules in the agent context (`doc(self)`, exec_globals).
155-
- `nemo-oo-codeact-advanced` — how prefill and truncation configs drive `pprint` of your parameters.
156-
- `nemo-oo-tools-and-skills` — skill docstring conventions (`doc(self.skill)` is the usage guide).
154+
- `nooa-agent-authoring` — visibility rules in the agent context (`doc(self)`, exec_globals).
155+
- `nooa-codeact-advanced` — how prefill and truncation configs drive `pprint` of your parameters.
156+
- `nooa-tools-and-skills` — skill docstring conventions (`doc(self.skill)` is the usage guide).
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
name: nemo-oo-capturing-traces
2+
name: nooa-capturing-traces
33
description: Capture execution traces from NVIDIA OO Agents. Use when instrumenting an agent run, writing traces to JSONL files, sending traces to the viewer or an OTLP/Langfuse/Phoenix backend, controlling which methods are traced, or when traces are mysteriously missing.
4-
compatibility: nemo-oo-agents core package; the [tracing] extra (opentelemetry + openinference) for exporters
4+
compatibility: nooa package; the [tracing] extra (opentelemetry + openinference) for exporters
55
---
66

77
# Capturing Traces
@@ -105,7 +105,7 @@ Files are OTLP JSON Lines: each line is one `{"resourceSpans": [...]}` object. T
105105

106106
## Pitfalls
107107

108-
- **Do NOT use** `from openinference_instrumentation_nemo_oo_agents import enable_tracing` or `enable_tracing(trace_dir=...)` — both appear in older docs/comments but do not exist. Tracing lives in `nooa.tracing`; `trace_dir` is an argument of `exporters.jsonl()`, and `enable_tracing()` returns `None`.
108+
- **Do NOT use** legacy OpenInference instrumentation imports or `enable_tracing(trace_dir=...)` — both appear in older docs/comments but do not exist. Tracing lives in `nooa.tracing`; `trace_dir` is an argument of `exporters.jsonl()`, and `enable_tracing()` returns `None`.
109109
- Auto-tracing is attempted once per process. If the viewer wasn't running when the first `Agent` was constructed, later agents won't retry — call `enable_tracing(...)` explicitly or restart with the viewer up.
110110
- For short scripts, call `flush_traces()` before exit; batch exporters flush on a ~1s schedule and a fast exit can drop the tail of a trace.
111111
- Logic that runs *outside* agent methods (module-level preprocessing, `main()` helpers) is invisible in traces. Keep interesting logic inside agent methods so failures leave trace evidence.
@@ -123,5 +123,5 @@ flush_traces()
123123

124124
## Related skills
125125

126-
- `nemo-oo-trace-viewer` — run the web viewer and browse captured traces.
127-
- `nemo-oo-trace-explorer` — programmatic/CLI trace analysis and root-cause debugging.
126+
- `nooa-trace-viewer` — run the web viewer and browse captured traces.
127+
- `nooa-trace-explorer` — programmatic/CLI trace analysis and root-cause debugging.
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
name: nemo-oo-channels
2+
name: nooa-channels
33
description: Reactive input for NVIDIA OO agents — Channel/QueueManager for queued and event-mode input, race() turn dispatch, spawn() background jobs with JobHandle, and the bundled producers (monitor a shell command, cron ticks, one-shot timers, file tails). Use when an agent must react to external input mid-run — user messages, CI output, timers, job completions — or when building an interactive/long-running agent loop.
4-
compatibility: nemo-oo-agents core package
4+
compatibility: nooa package
55
---
66

77
# Channels: Reactive Agent Input
@@ -76,11 +76,11 @@ qm.spawn(run_job(some_coro(), job_id="batch-7"), channel="jobs") # {"job_id":
7676
- `QueueManager` is hidden from the LLM by default; expose deliberately (`spec(self, "queue_manager", hidden=False)`) or, better, expose only the `reader` attributes and keep `put`/`spawn` on the Python side.
7777
- Registration order is priority order for `race()` — register the highest-priority channel (usually user messages) first.
7878
- Don't `await channel.get()` (producer object) from LLM code — give the LLM the `.reader`, whose `get(timeout=...)` can't deadlock a cell.
79-
- The dispatcher belongs in a pure-Python orchestrator method (`run()` above) — see "Orchestrators are pure Python" in `nemo-oo-agent-authoring`.
79+
- The dispatcher belongs in a pure-Python orchestrator method (`run()` above) — see "Orchestrators are pure Python" in `nooa-agent-authoring`.
8080
- `spawn()` requires the channel to already exist (`ValueError` otherwise).
8181

8282
## Related skills
8383

84-
- `nemo-oo-agent-authoring` — the orchestrator pattern the dispatch loop lives in.
85-
- `nemo-oo-context-and-state``QueueOutput`/`StreamEnd`/`JobError` are events; query them like any others.
86-
- `nemo-oo-middleware-hooks``on()` observers if you only need to react to recorded events, not consume input.
84+
- `nooa-agent-authoring` — the orchestrator pattern the dispatch loop lives in.
85+
- `nooa-context-and-state``QueueOutput`/`StreamEnd`/`JobError` are events; query them like any others.
86+
- `nooa-middleware-hooks``on()` observers if you only need to react to recorded events, not consume input.
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
2-
name: nemo-oo-codeact-advanced
2+
name: nooa-codeact-advanced
33
description: Advanced tuning of NVIDIA OO Agents strategies — CodeAct prefill (understanding, disabling, custom, pre-ellipsis code), loop guards (max_iterations, retries, text-only stop), truncation tuning (TruncationConfig/CaptureConfig/FormatConfig), code restrictions (RestrictionsConfig), execution environment internals, and PredictStrategy tuning (retries, param guards, output_serialization). Use when configuring CodeActConfig or PredictConfig beyond defaults, writing a custom prefill, restricting generated code, or debugging truncation/eviction behavior.
4-
compatibility: nemo-oo-agents core package
4+
compatibility: nooa package
55
---
66

77
# Advanced CodeAct (and Predict) Tuning
88

9-
The authoring basics are in `nemo-oo-agent-authoring`. This skill covers the deep configuration surface, verified against `strategies/codeact.py`, `strategies/prefill.py`, `strategies/predict.py`, and `config/`.
9+
The authoring basics are in `nooa-agent-authoring`. This skill covers the deep configuration surface, verified against `strategies/codeact.py`, `strategies/prefill.py`, `strategies/predict.py`, and `config/`.
1010

1111
## Config plumbing rules (read first)
1212

@@ -124,6 +124,6 @@ Single LLM turn, no tools, no code. The prompt is the docstring plus each parame
124124

125125
## Related skills
126126

127-
- `nemo-oo-agent-authoring` — the basics this builds on (strategy selection, contracts, visibility).
128-
- `nemo-oo-context-and-state` — the context blocks that truncation/eviction act on.
129-
- `nemo-oo-capturing-traces` / `nemo-oo-trace-explorer` — see every prefill cell, tool call, and validation retry in the trace.
127+
- `nooa-agent-authoring` — the basics this builds on (strategy selection, contracts, visibility).
128+
- `nooa-context-and-state` — the context blocks that truncation/eviction act on.
129+
- `nooa-capturing-traces` / `nooa-trace-explorer` — see every prefill cell, tool call, and validation retry in the trace.

0 commit comments

Comments
 (0)