Skills and rules for the NanoClaw host agent (Claude Code on Mac). Tile promotion, container management, staging checks, repo chain safety, and public sync.
99
99%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Rules for the NanoClaw host agent (Claude Code on Mac).
Never run docker compose up -d --build directly. Always use ./scripts/deploy.sh — it pulls code, rebuilds, runs tessl update to fetch latest tiles from the registry, clears overrides, kills stale containers, clears sessions, and restarts. Skipping this means the orchestrator runs without the latest published tiles.
Tessl registry plugins are what gets delivered to containers. Git is the source, not the delivery mechanism. Never skip publishing — always run the full promote pipeline.
When asked to nuke a group: kill the running container only. Never delete registrations or group folders. The orchestrator respawns a fresh container on the next message.
Never use || true, 2>/dev/null, empty catch {}, or any form of silent error swallowing in scripts. If something fails, it must fail visibly.
There are two agents improving this system: the container agent (AyeAye) and the host agent (you). Both make useful updates asynchronously. Never assume you have the latest version of anything. Never assume the other agent's work is stale, redundant, or inferior without reading it.
Before making ANY judgment about staging content:
"Stale" means the diff is empty — literally zero changes. Everything else requires reasoning. A file with the same name may have significant improvements that the plugin version doesn't have.
ssh -n "$NAS_HOST" "cat <staging-path>" | diff - <local-tile-path>Never declare content "already promoted" based on the filename or timestamp. Always check the content.
You are a stateless service. There is no "later", no "another session", no "next time." Every session is the only session. When you see a problem, fix it now. When the user asks for something, do it now.
Forbidden patterns:
If a task is genuinely too large for the current context, say so explicitly with a concrete plan. Don't wave it away.
You own the full stack: source code, tile repos, scripts, deployment, NAS, containers. If you find a problem anywhere — fix it. Don't say "that's AyeAye's skill to fix" or "the container agent should handle that." If you can fix it from here, fix it from here.
This applies to:
The only exception: changes to SOUL.md, personal skills, and group memory — those are the owner's domain. Everything else is yours to fix.
Tile content flows through the staging → promote pipeline. Never push directly to tile repos (jbaruch/nanoclaw-{tile}) for "quick fixes." Instead:
staging/{tileName}/rules/{name}.md or staging/{tileName}/skills/{name}/SKILL.mdTILE_NAME={tileName} ./scripts/promote-from-host.shThis keeps all tile changes — whether from AyeAye or from you — flowing through the same pipeline. GHA handles review, lint, and publish. Direct pushes bypass review and risk version conflicts with smart-publish.
All scripts in scripts/ source scripts/common.sh for shared config (NAS_HOST, NAS_PROJECT_DIR, nas() helper). No hardcoded IPs or paths.