add-anydoc
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word,…
Transactionally update a customized NanoClaw checkout from official upstream without exposing live mounted source, with fork-safe skill refresh, mutable-state snapshots, migration gates, exact-code upgrade markers, detected service restart, health verification, and automatic
$ npx -y skills add nanocoai/nanoclaw --skill update-nanoclaw --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/update-nanoclawContext preview
The summary Claude sees to decide when to auto-load this skill.
Transactionally update a customized NanoClaw checkout from official upstream without exposing live mounted source, with fork-safe skill refresh, mutable-state snapshots, migration gates, exact-code upgrade markers, detected service restart, health verification, and automatic
name: update-nanoclaw description: Transactionally update a customized NanoClaw checkout from official upstream without exposing live mounted source, with fork-safe skill refresh, mutable-state snapshots, migration gates, exact-code upgrade markers, detected service restart, health verification, and automatic local rollback. Use for routine merge, rebase, or selective upstream updates.
Update a customized install through an isolated, resumable transaction. The live checkout is not touched until the staged result has passed validation.
Use ordinary conversation for decisions and confirmations. Do not depend on Claude Code, Codex, OpenCode, or any provider-specific question/skill tool.
tests in a separate worktree.
changing source mounted into agent containers.
cutover. Sockets and other ephemeral special files are intentionally omitted.
mode; require process state, `data/ncl.sock`, and `bin/ncl groups list`.
process explicitly, update offline, then start it again manually.
the previous image, restart the previous service, and health-check it.
Confirm the live tree is clean:
git status --porcelain
Stop if it prints anything.
Use the official remote if one already exists. Otherwise add it as `upstream`:
if git remote get-url upstream >/dev/null 2>&1; then upstream_remote=upstream elif git remote get-url origin 2>/dev/null | grep -Eq '(^|[:/])nanocoai/nanoclaw(.git)?$'; then upstream_remote=origin else git remote add upstream https://github.com/nanocoai/nanoclaw.git upstream_remote=upstream fi git fetch "$upstream_remote" --prune
Select `main` when present, otherwise `master`:
if git show-ref --verify --quiet "refs/remotes/$upstream_remote/main"; then upstream_ref="$upstream_remote/main" elif git show-ref --verify --quiet "refs/remotes/$upstream_remote/master"; then upstream_ref="$upstream_remote/master" else echo "Official remote has neither main nor master" >&2 exit 1 fi
Materialize the newest controller from that ref. This is the self-update seam: an older local skill still executes the newest safety code before any mutation.
# pwd -P: on macOS mktemp returns a path through the /var symlink, and a # symlinked argv defeats Node's import.meta main-module guard — the controller # then exits 0 having done NOTHING. Canonicalize before use. controller_dir="$(cd "$(mktemp -d)" && pwd -P)" git archive "$upstream_ref" \ scripts/update-nanoclaw.ts scripts/update scripts/update-skills.ts \ scripts/skill-apply.ts scripts/skill-directives.ts src/install-slug.ts \ | tar -x -C "$controller_dir"
Default to `merge`. Use `rebase` only when the user explicitly wants linear history. Use `cherry-pick` only with an explicit comma-separated commit list.
pnpm exec tsx "$controller_dir/scripts/update-nanoclaw.ts" prepare \ --project-root "$PWD" --upstream-ref "$upstream_ref" --strategy merge
The JSON result is `nanoclaw-update/v1`. Record its `id`, `stageRoot`, backup branch/tag, changed files, and requirements. The live `HEAD` is still unchanged.
If `phase` is `conflict`, resolve conflicts only inside `stageRoot`, preserving intentional local customizations. Complete the merge/rebase/cherry-pick there, commit it, then run:
pnpm exec tsx "$stageRoot/scripts/update-nanoclaw.ts" resume \ --project-root "$PWD" --id "$id"
Show the user the upstream commits, changed-file buckets, requirements, and any resolved conflicts. To stop with no live mutation:
pnpm exec tsx "$stageRoot/scripts/update-nanoclaw.ts" abandon \ --project-root "$PWD" --id "$id"
pnpm exec tsx "$stageRoot/scripts/update-nanoclaw.ts" validate \ --project-root "$PWD" --id "$id"
Validation performs a fork-safe structured refresh of every installed channel and provider, commits refreshed payloads in the staging branch, installs frozen dependencies, runs the host build and full host tests, and runs the container dependency/typecheck leg when Bun is available. A provider skill that declares Bun dependencies does not require Bun on the host: refresh runs the exact Bun version pinned by `container/Dockerfile` through pnpm. Any selected skill refresh or validation failure blocks cutover and the completion stamp.
Fix only failures caused by the staged update, inside `stageRoot`, commit the fix, and re-run validation. Do not mutate the live checkout to repair staging.
Before downtime, show the exact changed files, required migrations, detected backup tag, and rollback command. Ask for one confirmation to begin cutover.
pnpm exec tsx "$stageRoot/scripts/update-nanoclaw.ts" cutover \ --project-root "$PWD" --id "$id"
Cutover stops the detected service, waits for this install's labeled agent containers to exit, snapshots mutable state, resets the live branch to the validated target, installs frozen dependencies, builds the host, and updates the agent image when `container/` changed. Hardened-image installs use `pull`; local-image installs build locally. The service remains s
A lightweight alternative to OpenClaw that runs in containers for security. Connects to WhatsApp, Telegram, Slack, Discord, Gmail and other messaging apps,, has memory, scheduled jobs, and runs directly on Anthropic's Agents SDK
Repo: nanocoai/nanoclaw
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word,…
Convert an attached Word document, presentation, spreadsheet, OpenDocument file, RTF, EPUB, CSV, or text-based PDF into local Markdown. Use when a message…
Add Atomic Chat MCP server so the container agent can call local models served by the Atomic Chat desktop app via its OpenAI-compatible API.
Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired…
Use Codex (OpenAI's codex app-server) as a full agent provider — planning, tool orchestration, MCP tools, server-side history, session resume — alongside or…
Add a monitoring dashboard to NanoClaw. Installs @nanoco/nanoclaw-dashboard and a pusher that sends periodic JSON snapshots.