CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/nanoclaw-host

Skills and rules for the NanoClaw host agent (Claude Code on Mac). Tile promotion, container management, staging checks, repo chain safety, and public sync.

77

Quality

97%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

orchestrator-dep-refresh.mdrules/

alwaysApply:
Yes

Orchestrator Dep Refresh

When this rule fires

Dockerfile.orchestrator installs npm packages directly from GitHub repos (e.g. RUN npm install -g jbaruch/reclaim-tripit-timezones-sync). When the upstream GitHub repo ships a new version, a default ./scripts/deploy.sh run does NOT pick it up — even though the script reports "deploy complete" and exits 0. The orchestrator silently keeps running the prior version of the dep.

Do not run docker compose build --no-cache --pull followed by up -d --build as a workaround. Use ./scripts/deploy.sh --no-cache per ## How to refresh below.

How to refresh

When an npm-from-GitHub dep in Dockerfile.orchestrator ships a new version, deploy with the --no-cache flag:

ssh nas "cd ~/nanoclaw && ./scripts/deploy.sh --no-cache"

The flag (1) propagates --no-cache --pull through container/build.sh for the agent-runner image, and (2) splits the orchestrator step into separate docker compose build --no-cache --pull nanoclaw and docker compose up -d --force-recreate --no-build nanoclaw calls — no second --build invocation that BuildKit can cache-confuse. Mutually exclusive with --tiles-only.

When NOT to use --no-cache

The default ./scripts/deploy.sh (no flags) is correct for every other deploy: source-code changes, tessl-tile updates, agent-runner Dockerfile changes that don't touch the GitHub-sourced npm install line. Use --no-cache ONLY when an npm-from-GitHub dep version is the actual change you're deploying.

Verify after refresh

Confirm the new dep version is installed in the running orchestrator before declaring the refresh complete. Substitute DEP_NAME with the package name:

DEP_NAME=reclaim-tripit-timezones-sync
ssh nas "docker exec nanoclaw npm list -g --depth=0 2>&1 | grep \"$DEP_NAME\""

If the version is unchanged from before the deploy, the cache wasn't actually busted — investigate before moving on.

rules

boyscout-host.md

copilot-nudge-after-10min.md

cross-tier-skill-state.md

dual-agent-coexistence.md

host-conventions.md

no-deferral.md

no-error-suppression.md

nuke-semantics.md

orchestrator-dep-refresh.md

overlay-tile-authoring.md

post-merge-publish-watch.md

repo-chain.md

staging-diff-protocol.md

tessl-version-floating.md

tile-content-pipeline.md

README.md

tile.json