self-customize
Skill5 starsChanged 5 months agoMITView on GitHub
Customize your own agent — add capabilities, install packages, add MCP servers, edit code or CLAUDE.md. Use when the user asks you to add a feature, install a tool, or modify how you work. For non-trivial code changes, delegate to a builder agent via create_agent.
- Reads credentials
In this repository60 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- container/CLAUDE.mdCLAUDE.md
- add-amplifier-agentSkill
- add-atomic-chat-toolSkill
- add-codexSkill
- add-dashboardSkill
- add-deltachatSkill
- add-discordSkill
- add-emacsSkill
- add-gcal-toolSkill
- add-gchatSkill
- add-githubSkill
- add-gmail-toolSkill
- add-imessageSkill
- add-karpathy-llm-wikiSkill
- add-linearSkill
- add-macos-statusbarSkill
- add-matrixSkill
- add-mnemonSkill
- add-ollama-providerSkill
- add-ollama-toolSkill
- add-opencodeSkill
- add-parallelSkill
- add-resendSkill
- add-rtkSkill
- add-signalSkill
- add-slackSkill
- add-teamsSkill
- add-telegramSkill
- vercel-cliSkill
- add-vercelSkill
- add-webexSkill
- add-wechatSkill
- add-whatsapp-cloudSkill
- add-whatsappSkill
- clawSkill
- convert-to-apple-containerSkill
- customizeSkill
- debugSkill
- get-qodo-rulesSkill
- init-first-agentSkill
- init-onecliSkill
- manage-channelsSkill
- manage-mountsSkill
- migrate-from-openclawSkill
- migrate-from-v1Skill
- migrate-nanoclawSkill
- qodo-pr-resolverSkill
- setupSkill
- update-nanoclawSkill
- update-skillsSkill
- use-native-credential-proxySkill
- x-integrationSkill
- agent-browserSkill
- frontend-engineerSkill
- onecli-gatewaySkill
- slack-formattingSkill
- vercel-cliSkill
- welcomeSkill
- whatsapp-formattingSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 5 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 25
Call create_agent({ name: "Builder", instructions: "<builder prompt>" }) — the returned agent group ID is your builder
- Distinctive: line 66
Check mcp.so for an existing RSS MCP server
- Very specific: line 67
If one exists → add_mcp_server({ name: "rss", command: "npx", args: ["some-rss-mcp"] }) → admin approves → container restarts with the new …
- Distinctive: line 68
If nothing suitable exists → delegate to a builder agent:
- Distinctive: line 71
Wait for builder's report — new tool code is picked up on the next container start (bun runs TS directly)
- Very specific: line 77
Check what's available — which ffmpeg (likely not installed in base image)
- Distinctive: line 80
Wait for admin approval — on approve, the image is rebuilt and your container is restarted automatically
- Distinctive: line 81
Test the new capability once the container restarts
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Self-Customization
You can modify your own environment. Different kinds of changes have different workflows.
Decision Tree
What needs to change?
CLAUDE.local.mdor files in your workspace → Edit directly, no approval needed. Your workspace (/workspace/agent/) is persisted on the host. (Note: the composedCLAUDE.mditself is read-only and regenerated every spawn — write toCLAUDE.local.mdinstead.)- System package (apt) or global npm package →
install_packages. Requires admin approval. On approval, image rebuild + container restart happen automatically. - MCP server →
add_mcp_server. Requires admin approval. On approval, container restarts with the new server wired up (no rebuild — bun runs TS directly). - Your source code or Dockerfile → Delegate to a builder agent via
create_agent(see below). - A new specialist capability →
create_agentto spin up a dedicated agent for it.
Workflow: Code Changes via Builder Agent
For anything that requires editing source files (your own code, Dockerfile, etc.), do not edit directly — delegate to a builder agent. This gives the user a reviewable boundary and keeps your main session focused.
- Describe what you need changed in concrete terms (files, behavior, acceptance criteria)
- Call
create_agent({ name: "Builder", instructions: "<builder prompt>" })— the returned agent group ID is your builder - Call
send_to_agent({ agentGroupId, text: "<task description with specific files and changes>" }) - The builder works in its own container, makes the changes, and reports back
- You review the builder's summary and confirm with the user. Source-code edits inside
/app/srcare picked up automatically on the next container start — no rebuild step needed (bun runs TS directly). If the builder also installed packages, its owninstall_packagesapproval will have rebuilt the image.
Builder Agent Instructions (use as CLAUDE.md when creating)
You are a builder agent. Your job is to make precise, minimal code changes to NanoClaw source files when the main agent requests it.
## Rules
- **Minimal scope.** Only change what was requested. Do not refactor surrounding code, "improve" unrelated files, or add features not asked for.
- **Diff size limits.** Reject any change that exceeds 200 new lines or 150 modified lines in a single task. If the change is larger, push back and ask for it to be split into smaller tasks.
- **Read before writing.** Always read the target file fully before editing. Understand the existing patterns.
- **Test if possible.** If there are relevant tests, run them after your change.
- **Report back.** When done, use send_to_agent to tell the requesting agent: (a) what files you changed, (b) a summary of the changes, (c) any follow-up needed (rebuild, tests, migrations).
- **No silent failures.** If you can't complete the task, explain why — don't produce partial work without flagging it.
## Safety
- Never edit files outside the requested scope
- Never commit or push anything
- Never modify secrets, credentials, or .env files
- If a change would break existing tests, stop and reportDiff Size Limits — Why
A 50-line focused change is reviewable. A 500-line sweep is not. Hard limits force the agent to decompose work into reviewable chunks, which:
- Makes human approval meaningful (you can actually read 150 lines)
- Catches runaway edits early (if the first task hits the limit, the scope was wrong)
- Forces clear acceptance criteria per task
The limits are per builder task, not per session. A 500-line feature is fine as 4 sequential builder tasks of ~125 lines each, each with its own scope.
Example: Adding a New MCP Tool to Yourself
User: "Can you add a tool for reading RSS feeds?"
- Check mcp.so for an existing RSS MCP server
- If one exists →
add_mcp_server({ name: "rss", command: "npx", args: ["some-rss-mcp"] })→ admin approves → container restarts with the new server → done - If nothing suitable exists → delegate to a builder agent:
create_agent({ name: "RSS Tool Builder", instructions: "<builder prompt from above>" })send_to_agent({ agentGroupId, text: "Add an MCP tool 'read_rss' to container/agent-runner/src/mcp-tools/. It should fetch an RSS URL and return the latest N items. Register it in mcp-tools/index.ts. Target: <200 new lines." })- Wait for builder's report — new tool code is picked up on the next container start (bun runs TS directly)
Example: Installing a System Tool
User: "Can you transcribe audio?"
- Check what's available —
which ffmpeg(likely not installed in base image) - Decide approach:
@xenova/transformers(npm, workspace-local) orwhisper.cpp(apt + compile) - For persistent system tool:
install_packages({ apt: ["ffmpeg"], npm: ["@xenova/transformers"], reason: "Audio transcription for voice messages" }) - Wait for admin approval — on approve, the image is rebuilt and your container is restarted automatically
- Test the new capability once the container restarts
When NOT to Self-Customize
- The change is for a one-off task — just do it in your workspace, don't modify the container
- The request is ambiguous — ask the user what they actually need before spinning up builders or requesting installs
- You don't know if it will work — prototype in your workspace first (
pnpm installin/workspace/agent/), then promote to container-level install if it proves useful
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

