update-skills — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited update-skills (Agent Skill) and scored it 92/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 2 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Refresh the code carried by installed channel and provider skills. This does not re-run credential setup, change .env, alter wiring, or restart services.
Run from the NanoClaw project root. Use ordinary conversation for any choice; do not depend on a provider-specific question or skill-invocation tool.
Require a clean working tree:
git status --porcelainIf it is dirty, stop. Never mix a refresh with unrelated changes.
The default is every installed channel/provider. If the user asked for a subset, pass its comma-separated names. Otherwise use all:
pnpm exec tsx scripts/update-skills.ts --skills all
# Example subset: --skills slack,opencodeThe helper detects installed skills from the real channel/provider barrels. Provider skills refresh from their own payload/ in this checkout and need no remote; a provider first installed from the old providers branch is rewritten from the payload the same way. For channel skills it resolves the registry branch by checking configured remotes, so a fork whose origin is the user's repo and whose official source is upstream works without special handling. NANOCLAW_REGISTRY_REMOTE=<name> is an explicit override and is validated before use.
The command prints nanoclaw-skill-refresh/v1-shaped JSON fields with one result per selected skill and exits nonzero unless every selected skill was fully refreshed.
success is true and every status is refreshed.fallback, fetch error, or dependency error is blocking.
The refresh engine overwrites skill-owned registry files and advances exact dependency/CLI-manifest pins. It skips prompts, operator walkthroughs, .env writes, wiring, restarts, and ordinary build/test directives.
After a successful refresh:
pnpm run build
pnpm testIf files under container/agent-runner/src/ changed, also run:
pnpm exec tsc -p container/agent-runner/tsconfig.json --noEmitIf anything under container/ changed, update the install's agent image using the source mode already selected in .env:
if grep -q '^NANOCLAW_HARDENED_IMAGE=true$' .env 2>/dev/null; then
./container/build.sh pull
else
./container/build.sh
fiAny validation or image failure is blocking. Do not restart or report success.
Show the selected skills, the registry remote used for each branch, changed files, validation results, and any blocking error. If this was a standalone refresh and the service was running, restart it through the service mode that actually owns this install and verify data/ncl.sock plus bin/ncl groups list. When called inside /update-nanoclaw, leave restart and health checking to that transaction.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.