Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
ec8bd67
fix(status): probe inference.local route for cloud providers in statu…
harjothkhara Jul 2, 2026
58e99ac
fix(dcode): route inference.local through managed proxy (#6204)
ericksoa Jul 2, 2026
2c447b7
fix(installer): skip unreachable running sandboxes in pre-upgrade bac…
laitingsheng Jul 2, 2026
12ec9fe
docs(skills): gate release tags on pre-tag docs (#6205)
miyoungc Jul 2, 2026
55f8fb9
fix(dcode): close proxy review gaps (#6206)
ericksoa Jul 2, 2026
8dcc563
docs: resolve maintainer docs gaps (#6213)
miyoungc Jul 2, 2026
e33c093
docs(release): require exact-SHA E2E evidence (#6208)
cv Jul 2, 2026
c15086c
docs: prepare v0.0.73 release notes (#6217)
cv Jul 2, 2026
2276b2e
docs: add agent install prompt path (#6216)
miyoungc Jul 3, 2026
470060d
feat(deepagents-code): add dcode status and allow OpenShell TLS key i…
laitingsheng Jul 3, 2026
dc96deb
chore(release): defer dcode status to v0.0.74 (#6223)
cv Jul 3, 2026
a4cd77d
feat(deepagents-code): restore dcode status after v0.0.73 (#6232)
cv Jul 3, 2026
d2dbd25
feat(cli): show a concrete example in the unknown sandbox action erro…
latenighthackathon Jul 3, 2026
8b307c0
fix(dcode): stop persisting LangSmith variables (#6219)
ericksoa Jul 3, 2026
1787a6b
fix(cli): validate Git signing format in developer doctor (#6168)
Dongni-Yang Jul 3, 2026
c7f9188
chore(openshell): upgrade supported version to 0.0.72 (#6020)
ericksoa Jul 3, 2026
293ddb2
fix(e2e): probe the allowed Telegram bot path in the messaging reacha…
latenighthackathon Jul 3, 2026
523e65d
fix(onboard): fail cleanly on unknown NEMOCLAW_AGENT instead of uncau…
jason-ma-nv Jul 3, 2026
0ffbbc1
fix(inference): add sandbox-scoped inference get/set commands (#5977)…
yimoj Jul 3, 2026
f09d538
fix(onboard): debounce transient sandbox Error during readiness wait …
yimoj Jul 3, 2026
2a68fbc
refactor(onboard): separate sandbox intent from effects (#6218)
cv Jul 3, 2026
0c785eb
fix(credentials): recover reset from attached-provider FailedPrecondi…
latenighthackathon Jul 3, 2026
b9f4283
fix(onboard): honour installer restore intent on non-interactive not-…
laitingsheng Jul 3, 2026
cde08d6
fix(onboard): surface escape hint on empty Brave Search API key input…
jason-ma-nv Jul 3, 2026
c7a4728
fix(snapshot): harden dcode exec probe boundary (#6215)
apurvvkumaria Jul 3, 2026
2023521
fix(onboard): persist enabled messaging channel policy presets (#5967…
yimoj Jul 3, 2026
9dcdd84
perf(e2e): extend trace timing artifacts to Vitest targets (#6153)
amata-human Jul 3, 2026
640b814
fix(uninstall): remove agent-alias CLI shims (nemohermes, nemo-deepag…
jason-ma-nv Jul 3, 2026
5a3008c
fix(dashboard): keep loopback dashboard URL on WSL2 (#6181)
laitingsheng Jul 3, 2026
56b9ef5
fix(cli): exit non-zero for user-error/startup surfaces riding oclif.…
yimoj Jul 3, 2026
ad33616
fix(sandbox): surface actionable recovery hint when destroy wipe fail…
Dongni-Yang Jul 3, 2026
d8e665c
fix(onboard): differentiate NXDOMAIN/REFUSED container DNS from unrea…
jason-ma-nv Jul 3, 2026
b779c26
ci(main): install deps before Hermes secret-boundary Vitest (#6143) (…
jason-ma-nv Jul 3, 2026
9e63c4a
fix(sandbox): let destroy --force clean up when the OpenShell gateway…
jason-ma-nv Jul 3, 2026
d13ef62
refactor(policy): move messaging policies into channels (#6129)
sandl99 Jul 3, 2026
8177e4e
docs: improve homepage and preview watcher (#6221)
miyoungc Jul 3, 2026
9c07e00
fix(cli): add update --fresh to reinstall when already up to date (#5…
jason-ma-nv Jul 3, 2026
22c0b72
fix(messaging): surface Telegram mention mode in channel status (#6220)
apurvvkumaria Jul 3, 2026
7f48dfc
fix(tunnel): register tunnel origin in gateway allowedOrigins on star…
TonyLuo-NV Jul 3, 2026
9e583ed
fix(cli): detect messaging credential conflict before rebuild destroy…
jason-ma-nv Jul 3, 2026
f3c7648
perf(e2e): start hosted proofs in parallel (#6240)
cv Jul 3, 2026
eab87f0
perf(e2e): seed WhatsApp before channel lifecycle checks (#6241)
cv Jul 3, 2026
4d727e4
test(e2e): reuse hosted endpoint on inference switch (#6243)
sandl99 Jul 3, 2026
6092ad2
test(onboard): reject blank WhatsApp seed (#6244)
cv Jul 3, 2026
243a486
fix(status): make inference.local the authoritative inference health …
harjothkhara Jul 3, 2026
0c2f377
fix(contributor): keep devDependencies on npm install (#6248)
rluo8 Jul 3, 2026
9dc2cd5
fix: install package CLI alias shims (#6084)
WilliamK112 Jul 3, 2026
0aa22f6
perf(ci): reuse production images across runtime E2Es (#6242)
cv Jul 3, 2026
919b30a
feat(sandbox): surface policy-denial breadcrumb on failed exec (#5978…
yimoj Jul 3, 2026
2c4bf19
fix(rebuild): validate DCode recreation before deletion (#6214)
cv Jul 3, 2026
489e521
feat(onboard): add Tavily web search providers (#6165)
cv Jul 3, 2026
3bd1731
feat(contributor): add one-command developer onboarding (#6200)
apurvvkumaria Jul 3, 2026
fdf1d58
fix(dcode): harden managed runtime boundaries (#6082)
mdrxy Jul 3, 2026
cc532e5
fix(ci): reword E2E target results heading (#6255)
cv Jul 3, 2026
bddbb3e
feat(mcp): add OpenShell-managed MCP servers (#5876)
ericksoa Jul 3, 2026
2deab9e
fix(agent): enforce terminal-agent version during onboarding (#6193) …
jason-ma-nv Jul 3, 2026
8aeb719
fix(tunnel): release NemoClaw gateway port on stop (#5968) (#5988)
yimoj Jul 3, 2026
dd4c335
perf(onboard): build sandbox image with BuildKit + no-silent-progress…
yimoj Jul 3, 2026
abc5855
feat(bench): add agent-runnable value benchmark harness (#5604) (#5649)
abhi-0906 Jul 3, 2026
874296d
fix(onboard): color preflight WARN/ERROR check lines (#6004) (#6017)
jason-ma-nv Jul 4, 2026
8bfc315
perf(cli): reuse validated sandbox base images (#6254)
cv Jul 4, 2026
3f89cd0
chore(tooling): remove redundant Makefile (#6262)
cv Jul 4, 2026
94fb805
feat(ci): add onboard performance budget signal (#5686)
amata-human Jul 4, 2026
7875bd3
fix(onboard): harden BuildKit prebuild validation (#6265)
cv Jul 4, 2026
1efef0a
fix(mcp): harden DCode rebuild handoff (#6260)
cv Jul 4, 2026
6f5ccbc
fix(inference): mark the Windows-ARM N1X iGPU compute-constrained (#6…
latenighthackathon Jul 4, 2026
6bc3e02
ci(hooks): streamline local PR verification (#6270)
cv Jul 4, 2026
06b78aa
feat(agents): add progressive tool disclosure (#6251)
ericksoa Jul 4, 2026
3a05b54
docs: prepare v0.0.74 release notes (#6274)
ericksoa Jul 4, 2026
1162e89
chore(openclaw): upgrade to 2026.6.10 and harden runtime integration …
ericksoa Jul 4, 2026
ba1ca29
chore(deps): bump docker/build-push-action from 7.2.0 to 7.3.0 (#6154)
dependabot[bot] Jul 4, 2026
61cfcd6
fix(policy): warn on contributor approval overlap (#6233)
apurvvkumaria Jul 4, 2026
002ac62
perf(test): reduce onboarding subprocess isolation (#6276)
cv Jul 4, 2026
7044a03
perf(test): reduce subprocess isolation in rebuild and setup tests (#…
cv Jul 5, 2026
34ac134
perf(test): reduce sandbox lifecycle subprocess isolation (#6280)
cv Jul 5, 2026
fce5e7e
ci(release): label merged PRs with release targets (#6281)
cv Jul 5, 2026
f1135d3
perf(test): reduce messaging and gateway setup overhead (#6282)
cv Jul 5, 2026
1cae159
fix(release): grant PR label write permission (#6284)
cv Jul 5, 2026
e67c901
perf(test): reduce CLI dispatch process isolation (#6285)
cv Jul 5, 2026
8770d06
perf(test): narrow gateway drift preflight graph (#6286)
cv Jul 6, 2026
9ebc888
ci(coverage): ratchet CLI thresholds (#6288)
cv Jul 6, 2026
f0d2549
fix(mcp): reconcile Hermes runtime state (#6261)
ericksoa Jul 6, 2026
7d3aada
perf(test): reduce CommonJS loader churn (#6299)
cv Jul 6, 2026
022c394
fix(inference): keep /v1 base URL for OpenAI-only agents on Anthropic…
Dongni-Yang Jul 6, 2026
748a788
fix(onboard): make local docker-driver gateway JWT non-expiring (#6304)
laitingsheng Jul 6, 2026
dc2ae9f
perf(test): reduce provider-selection process isolation (#6336)
cv Jul 6, 2026
5443538
fix(hermes): use OpenAI frontend for custom Anthropic (#6335)
apurvvkumaria Jul 6, 2026
113fcaf
docs(commands): fix broken plugin link and drop hardcoded agent versi…
yimoj Jul 6, 2026
48e680b
fix(onboard): preserve fresh DCode routing on re-onboard (#6332)
apurvvkumaria Jul 6, 2026
34f504e
fix(sandbox): recover gateway-orphaned sandboxes during in-place upgr…
laitingsheng Jul 6, 2026
0682ebc
perf(test): run policy and messaging tests in-process (#6339)
cv Jul 6, 2026
2d1eaf1
test: backfill mockable coverage for live-only behavior + guard again…
prekshivyas Jul 6, 2026
b9524ca
fix(hermes): accept pinned base platform digest (#6318)
chengjiew Jul 6, 2026
92f883a
perf(test): reduce layer boundary fixture scans (#6322)
HOYALIM Jul 6, 2026
05a8504
perf(test): remove mocked recovery waits (#6342)
cv Jul 6, 2026
05f8522
fix(openclaw): restore local CLI pairing path (#6291)
ericksoa Jul 6, 2026
ed6338e
perf(test): run channel preset tests in-process (#6345)
cv Jul 6, 2026
b15eb2d
test(e2e): register e2e-live source require hook and surface cloud-on…
prekshivyas Jul 6, 2026
b435598
perf(test): run policy picker tests in-process (#6360)
cv Jul 7, 2026
9107740
fix(rebuild): restore gateway state during prepared recovery (#6370)
prekshivyas Jul 7, 2026
77e22a9
perf(test): batch e2e selector workflow checks (#6369)
cv Jul 7, 2026
7d50eb3
docs(release): add v0.0.75 release notes (#6371)
prekshivyas Jul 7, 2026
bd38b38
docs(release): correct v0.0.75 release notes (#6372)
ericksoa Jul 7, 2026
34ed8fd
fix(sessions): route sessions passthrough at the sandbox's own agent …
yanyunl1991 Jul 7, 2026
8a55bd5
perf(test): run MCP lifecycle checks in process (#6373)
cv Jul 7, 2026
af9743d
fix(installer): recover legacy sandboxes safely (#6362)
cv Jul 7, 2026
0d16f52
refactor(e2e): extract file snapshot and JSON state helpers (#6361)
jyaunches Jul 7, 2026
5563422
fix(cli): gc scans locally prebuilt sandbox image repo for orphans (#…
rluo8 Jul 7, 2026
6027d7b
fix(inference): validate custom Anthropic endpoint streaming during o…
TonyLuo-NV Jul 7, 2026
4fbd596
fix(onboard): drop uninstalled qqbot plugin from default openclaw.jso…
abhi-0906 Jul 7, 2026
0745c5c
fix(onboard): point onboard failures at --resume recovery (#6003) (#6…
abhi-0906 Jul 7, 2026
6e2946c
fix(inference): enable vLLM tool calls on generic-Linux Nemotron defa…
yanyunl1991 Jul 7, 2026
85e97d1
refactor(e2e): centralize command environment profiles (#6363)
jyaunches Jul 7, 2026
c3b5285
refactor(e2e): expose Docker prerequisites through Vitest fixtures (#…
jyaunches Jul 7, 2026
d3db55c
refactor(e2e): consolidate fake provider protocol utilities (#6368)
jyaunches Jul 7, 2026
9fe4cb3
refactor(e2e): add a typed target evidence API (#6359)
jyaunches Jul 7, 2026
977af0a
fix(hermes): append resumed one-shot turns (#6303)
chengjiew Jul 7, 2026
8efef33
fix(onboard): warn on arm64 NIM image compatibility (Fixes #5772) (#5…
deepujain Jul 7, 2026
5dc94b8
test(core): add isRecord unit tests for json-types (#5598)
atulya-singh Jul 7, 2026
1d536fd
refactor(e2e): centralize command result helpers (#6357)
jyaunches Jul 7, 2026
6451f70
perf(test): reduce rebuild and provider-selection process isolation (…
cv Jul 7, 2026
5a6f489
docs(commands): route Install OpenClaw Plugins link to published sect…
yimoj Jul 7, 2026
bdcfb1f
refactor(e2e): centralize live-test gating and repository paths (#6358)
jyaunches Jul 7, 2026
b300624
fix(cli): close non-terminal sandbox exec stdin by default (#5388)
HwangJohn Jul 7, 2026
6f02ede
perf(test): retire rebuild CommonJS loader seams (#6388)
cv Jul 7, 2026
6fa6f4b
test(e2e): reproduce Hermes shields cycle regression (#6398)
jyaunches Jul 7, 2026
7072f1b
fix(status): make inference route health authoritative
apurvvkumaria Jul 7, 2026
30bd2c8
merge(pr): retain #6203 contributor history
apurvvkumaria Jul 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
47 changes: 29 additions & 18 deletions .agents/skills/nemoclaw-contributor-create-pr/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,25 @@ Follow the shared [Git and GitHub Access Hard Stop](../_shared/git-github-hard-s

Before creating a PR, verify the branch.

1. **Not on main.** Never create PRs from main.
1. **Refresh the trusted base ref.**

```bash
git fetch --prune origin main
```

2. **Not on main.** Never create PRs from main.

```bash
git branch --show-current
```

2. **Branch has commits ahead of main.**
3. **Branch has commits ahead of `origin/main`.**

```bash
git log main..HEAD --oneline
git log origin/main..HEAD --oneline
```

3. **Working tree is clean.** Stage or stash any uncommitted changes first.
4. **Working tree is clean.** Stage or stash any uncommitted changes first.

```bash
git status
Expand All @@ -49,28 +55,32 @@ Use the checks that match the diff and the verification you already have.

If the commits were created normally and the branch was pushed normally, count the installed hooks as verification:

- `pre-commit` runs file fixers, formatters, linters, skill frontmatter validation, and changed-surface Vitest hooks.
- `pre-commit` runs cheap structural and file-local checks, including fixers, formatters, linters, and skill frontmatter validation.
- `commit-msg` runs commitlint.
- `pre-push` runs TypeScript build and type-check gates.
- `pre-push` runs path-scoped incremental type checks for affected CLI and plugin surfaces plus checked-JavaScript checks.

If hooks were skipped with `--no-verify`, were not installed, failed, or you cannot tell whether they ran, run a manual diff-scoped fallback before creating the PR:
If hooks were skipped with `--no-verify`, were not installed, failed, or you cannot tell whether they ran, use the single diff-scoped fallback that reproduces `pre-commit`, `commit-msg`, and `pre-push` checks:

```bash
npx prek run --from-ref main --to-ref HEAD
npm run check:diff
```

Use `npx prek run --all-files` only when you need a whole-repository baseline, such as changing hook configuration, formatter configuration, generated-check scripts, or other repo-wide validation behavior.
The fallback compares with the refreshed `origin/main` ref from Step 1.
Reserve `npm run check` for the whole-repository pre-commit and full CLI/plugin coverage baseline, such as when changing hook configuration, formatter configuration, generated-check scripts, or other repo-wide validation behavior.

### Targeted Tests

Run the smallest meaningful tests for changed behavior:
Run the smallest meaningful tests for changed behavior once per relevant change set, and record the command and result for the PR body:

- CLI or root `src/`, `bin/`, `scripts/`, or `test/` changes: `npx vitest run --project cli` or the directly affected test file.
- Plugin changes under `nemoclaw/src/`: `npx vitest run --project plugin` or the directly affected plugin test file.
- E2E support changes under `test/e2e/support/`: `npx vitest run --project e2e-support`.
- E2E workflow, artifact upload, trace timing, or fixture environment-boundary changes: run the directly affected `test/e2e/support/*workflow*.test.ts`, `test/e2e/support/upload-e2e-artifacts-workflow-boundary.test.ts`, `test/e2e/support/sanitize-trace-timing.test.ts`, and fixture boundary tests instead of relying on unrelated live target runs.
- Installer behavior changes: run the relevant installer integration project only when the local environment supports it.

Reserve full `npm test` for broad runtime changes, test harness changes, or cases where targeted coverage is hard to justify.
Do not rerun targeted tests solely because the normal hooks passed; rerun them after later edits or hook autofixes that can affect the tested behavior.
Reserve `npm test` for broad runtime changes, test harness changes, or cases where targeted coverage is hard to justify.
Reserve `npm run check` for repo-wide hook, formatter, generated-check, or coverage-baseline changes.
Do not run the full test suite for doc-only changes unless the docs change code samples or generated behavior in a way that needs runtime validation.

For doc-only changes, run the docs build before opening the PR:
Expand All @@ -94,7 +104,7 @@ If the push fails because of SSH, authentication, remote access, authorization,

## Step 4: Prepare DCO Declaration and Verify GitHub Commits

Before creating the PR, prepare the DCO declaration for the PR body and verify every commit in `main..HEAD`.
Before creating the PR, prepare the DCO declaration for the PR body and verify every commit in `origin/main..HEAD`.
This is a hard contributor self-serve gate.
Do not run `gh pr create` until the PR body will include the DCO declaration and every commit passes GitHub verification.

Expand All @@ -107,10 +117,10 @@ Do not run `gh pr create` until the PR body will include the DCO declaration and
```

2. **GitHub verification.** Each pushed commit must appear as verified in GitHub.
Check the commit SHAs from `main..HEAD` with the GitHub API before opening the PR.
Check the commit SHAs from `origin/main..HEAD` with the GitHub API before opening the PR.

```bash
for sha in $(git rev-list main..HEAD); do
for sha in $(git rev-list origin/main..HEAD); do
gh api "/repos/NVIDIA/NemoClaw/commits/$sha" --jq '.sha + " verified=" + (.commit.verification.verified | tostring) + " reason=" + .commit.verification.reason'
done
```
Expand Down Expand Up @@ -192,8 +202,8 @@ Follow these rules when filling in the template:
- **Related Issue:** Include `Fixes #NNN` or `Closes #NNN` if an issue exists. Remove the section entirely if there is no related issue.
- **Changes:** Bullet list of key changes. Be specific — reference file names, commands, or behaviors that changed.
- **Type of Change:** Check exactly one box. Use `[x]` for checked, `[ ]` for unchecked.
- **Quality Gates:** Check every line that applies to the diff. If tests/docs are not needed or existing coverage is sufficient, include the justification. If sensitive paths changed or a non-success CI check is accepted, record the authorized reviewer, maintainer-approved waiver, approval link, or follow-up issue.
- **Verification:** Check only the boxes for steps you actually ran and confirmed passing, or for Git hooks that passed during normal commit and push. Do not check boxes for steps you skipped or did not verify. The DCO declaration and GitHub verification checkbox is mandatory before PR creation because Step 4 must pass first. For doc-only changes, `npm test` is not required; leave it unchecked unless you ran it.
- **Quality Gates:** Check exactly one tests line and one docs line, then check every other line that applies to the diff. If tests/docs are not needed or existing coverage is sufficient, include the justification. If sensitive paths changed or a non-success CI check is accepted, record the authorized reviewer, maintainer-approved waiver, approval link, or follow-up issue.
- **Verification:** Check only the boxes backed by the requested command/result, justification, normal hook evidence, or fallback evidence. Do not check boxes for steps you skipped or did not verify. The DCO declaration and GitHub verification checkbox is mandatory before PR creation because Step 4 must pass first. For focused changes, leave the broad-gate line unchecked unless you actually ran the applicable command.
- **DCO Sign-Off:** Replace `{name}` and `{email}` with values from `git config user.name` and `git config user.email`.

## Step 7: Create the PR
Expand Down Expand Up @@ -244,8 +254,9 @@ Automated review: no actionable findings / addressed findings / waiting on user
- **Do not invent your own PR body format.** Use `.github/PULL_REQUEST_TEMPLATE.md` exactly.
- **Do not omit sections.** Even if a section is not applicable, keep it with the "Skip if..." comment.
- **Do not check boxes for steps you did not run.** If you did not run `npm run docs`, leave that box unchecked.
- **Do not rerun hook-covered checks by default.** Normal commit and push hooks are valid verification. Use `npx prek run --from-ref main --to-ref HEAD` as the fallback when hooks were skipped, missing, or uncertain.
- **Do not run the full test suite for doc-only changes by default.** Run the docs build instead, and leave `npm test` unchecked unless you actually ran it.
- **Do not rerun hook-covered checks by default.** Normal `pre-commit`, `commit-msg`, and `pre-push` hooks are valid verification. Use `npm run check:diff` once as the fallback when hooks were skipped, missing, or uncertain.
- **Do not run targeted tests more than once per unchanged relevant change set.** Record the passing command and result; rerun when subsequent edits or hook autofixes can affect that behavior.
- **Do not run broad gates for doc-only changes by default.** Run the docs build instead, and leave the broad-gate verification item unchecked unless you actually ran the applicable command.
- **Do not forget the DCO sign-off declaration in the PR body.** CI will reject the PR without it.
- **Do not create PRs with unverified commits.** GitHub must report every PR commit as `Verified` before the PR is opened.
- **Do not rely on maintainers to repair contributor signature history.** If force-push is not allowed and the branch contains an unverified commit, use a fresh branch and fresh PR.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,24 @@ Start with the manifest. Add core code only when the manifest vocabulary cannot

## Verification

Use the narrowest tests that cover the changed behavior:
Build one targeted Vitest invocation from only the files that cover the changed behavior.
Omit unaffected paths from this example, then run the resulting command once per relevant change set:

```bash
npm run build:cli
npm run typecheck:cli
npx vitest run src/lib/messaging/channels/manifests.test.ts src/lib/messaging/channels/metadata.test.ts src/lib/messaging/compiler/manifest-compiler.test.ts
npx vitest run src/lib/messaging/channels/<channel>/hooks
npx vitest run test/messaging-build-applier.test.ts
npx vitest run \
src/lib/messaging/channels/<channel> \
src/lib/messaging/channels/manifests.test.ts \
src/lib/messaging/channels/metadata.test.ts \
src/lib/messaging/compiler/manifest-compiler.test.ts \
test/messaging-build-applier.test.ts
```

Add channel-specific config render, hook, policy, and channel add/remove tests when those surfaces change.
Run `npm run docs` for documentation changes and `npx prek run --files <changed files>` before handoff. If broad hooks expose unrelated failures, report the failure with the targeted passing evidence.
Rerun the targeted command after later edits or hook autofixes that can affect the tested behavior.
Run `npm run docs` for documentation changes.
Commit and push normally so pre-commit handles cheap structural and file-local checks and pre-push runs the path-scoped type checks.
Treat successful hooks as verification and do not rerun their checks manually.
If `pre-commit`, `commit-msg`, or `pre-push` hooks were skipped or unavailable, run `npm run check:diff` once to reproduce those checks.
Refresh `origin/main` first.
Reserve `npm test` for broad runtime or test-harness changes.
Reserve `npm run check` for repo-wide validation or coverage-baseline changes.
93 changes: 93 additions & 0 deletions .agents/skills/nemoclaw-contributor-onboard/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
name: nemoclaw-contributor-onboard
description: Prepare a NemoClaw source checkout for compliant contribution through the repository's one-command setup and readiness doctor. Use when a new contributor asks to set up a development machine, prepare a checkout for a first PR, repair local contributor tooling, verify contributor readiness, launch the pinned coding agent, or decide whether optional runtime onboarding is needed. Trigger keywords - contributor setup, developer onboarding, first PR, dev setup, dev doctor, repair checkout, prepare development machine.
---

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->
<!-- SPDX-License-Identifier: Apache-2.0 -->

# Onboard a NemoClaw Contributor

Use the repository setup script as the executable source of truth.
Do not duplicate its dependency, build, hook, CLI-exposure, or readiness logic in agent commands.

## Establish Trust First

1. Read the root `AGENTS.md` and `CONTRIBUTING.md` completely.
2. Inspect the worktree and current branch without discarding or overwriting existing changes.
3. Refresh the trusted `origin/main` reference, then compare the entire checkout/worktree diff against that up-to-date base before executing any checkout-local code.
Include staged, unstaged, and untracked files; review lockfiles and all transitively executed source, not only the entry script or package manifests.
4. If any execution surface differs from trusted `origin/main`, review the diff and obtain explicit approval before running it.

## Route by Intent

- **Readiness only:** run `./scripts/dev-setup.sh --doctor` and never run setup, repair, CLI exposure, runtime onboarding, or the pinned agent.
Use `./scripts/dev-setup.sh --doctor --json` when a machine-readable report helps.
- **Initial checkout setup:** run `./scripts/dev-setup.sh` from the repository root.
- **Explicit repository repair:** run `./scripts/dev-setup.sh --repair` only when the user asks to repair or retry repository-local setup.
- **CLI exposure:** after explicit approval, run `./scripts/dev-setup.sh --expose-cli`.
- **Runtime onboarding:** after explicit approval, run `./scripts/dev-setup.sh --with-runtime`.

The default and repair modes may update repository-local dependencies, builds, hooks, and the root Python environment.
They must not create a gateway or sandbox or expose a host-visible `nemoclaw` command.
CLI exposure is an explicit opt-in that may use an npm link or a user-local shim.

## Handle User-Controlled Changes

Pause and obtain explicit approval before installing or changing host packages, starting or replacing a container runtime, accepting a license, generating or registering a signing key, changing GitHub state, or changing global Git configuration.

- Ask for contributor name and email only when the doctor reports that identity is missing.
- Prefer repository-local Git identity changes when the user approves them.
- Use `gh auth login -h github.com` for missing GitHub authentication and pause for browser or device authentication.
- Let the user choose and register a Git-supported commit-signing key.
- Follow `../_shared/git-github-hard-stop.md` for authentication, authorization, SSH, remote-access, or push failures.
- Never print tokens, credential values, private keys, or command output that may contain them.
- Never place secrets in command arguments, generated reports, or tracked files.

After an approved host, account, identity, or signing remediation, rerun `npm run dev:doctor` or `./scripts/dev-setup.sh --doctor` instead of rerunning setup.
Reserve setup and `--repair` for repository-local dependency, build, or hook repair.

## Decide on Runtime Onboarding

Ask whether the intended issue requires a live gateway or sandbox after source setup is ready.
Documentation work and isolated unit tests normally do not require runtime onboarding.

If runtime validation is required and the user approves it, run:

```bash
./scripts/dev-setup.sh --with-runtime
```

This delegates to interactive `nemoclaw onboard` and also opts into development CLI exposure as part of that approved flow.
Do not preselect third-party software acceptance, inference provider or model, credentials, sandbox name or resources, messaging integrations, or network policy unless the user already supplied those decisions.

## Launch the Pinned Agent Only on Request

When the user specifically asks to use the repository-pinned coding agent, run the doctor first.
If readiness fails, report the remediation and obtain authorization for the matching setup or repair mode rather than mutating the checkout automatically.
When readiness passes, run:

```bash
npm run agent
```

Pass user-supplied Pi arguments after `--`.
Do not install or invoke a global Pi binary.

## Prepare for the First PR

Before the contributor starts implementation, explain this workflow:

1. Create a feature branch from current `main`.
2. Use Conventional Commits in `<type>(<scope>): <description>` form.
3. Run tests targeted to the changed behavior and `npm run docs` for documentation changes.
4. Commit with configured signing so every pushed commit appears as `Verified` on GitHub.
5. Include `Signed-off-by: Name <email>` in the PR description for DCO compliance.
6. Follow `.github/PULL_REQUEST_TEMPLATE.md` and monitor required CI and automated review feedback.

Use `nemoclaw-contributor-create-pr` when the user asks to publish the changes.
Do not create a branch, commit, push, or PR unless the user's request includes that action.

## Report the Result

Summarize repository-local setup performed, doctor status, user-controlled remediations still needed, whether CLI exposure or runtime onboarding ran, and the next safe contributor action.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

interface:
display_name: "NemoClaw Contributor Setup"
short_description: "Prepare a checkout for a first PR"
default_prompt: "Use $nemoclaw-contributor-onboard to set up this machine as a NemoClaw contributor and prepare it for a first PR."
1 change: 1 addition & 0 deletions .agents/skills/nemoclaw-contributor-update-docs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Scan recent git history for commits that affect user-facing behavior and draft d
- Before a release, to catch any doc gaps.
- During daily release prep, before opening the release-note docs PR.
- Before cutting a release tag, so release-note docs land on the same release train.
- When maintainers run `/nemoclaw-contributor-update-docs for vX.Y.Z`, treat it as pre-tag release-prep docs for `vX.Y.Z` unless the tag already exists.
- After a release only when maintainers missed the pre-tag docs step and need a catch-up PR.
- When a contributor asks "what docs need updating?"

Expand Down
Loading
Loading