agentleFS
qwibitaiqwibitai/nanoclaw/.claude/skills/customize/SKILL.md

customize

Skill31k starsChanged 9 days agoMITView on GitHub

Add new capabilities or modify NanoClaw behavior. Use when user wants to add channels (Telegram, Slack, email input), change triggers, add integrations, modify the router, or make any other customizations. This is an interactive skill that asks questions to understand what the user wants.

  • Reads credentials

We split this skill into the rules it gives an agent

12 rules. 0 are common, 5 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 32 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Should this channel reach an existing agent group or a new one?

    line 50
  2. Very specific:

    Run the matching install skill (/add-telegram, /add-slack, …).

    line 55
  3. Very specific:

    Run /manage-channels (or use ncl messaging-groups + ncl wirings) to create the messaging group, choose the isolation level, and wire it to …

    line 56
  4. Very specific:

    If a dedicated /add-<service>-tool skill exists, run it — it wires the MCP server and routes credentials through OneCLI so no raw keys …

    line 66
  5. Distinctive:

    Create the appropriate service files.

    line 97
  6. Very specific:

    Update paths in .env / config.

    line 98
  7. Distinctive:

    Always tell the user.

    line 103
  8. Very specific:

    Run from your NanoClaw project root:

    line 105
  9. Very specific:

    Run /add-telegram to install the adapter, wire its registration, and build.

    line 122
  10. Distinctive:

    Ask: "Should Telegram reach an existing agent group, or a new one?"

    line 123
  11. Distinctive:

    Ask: "Share an agent group with your other channels, or keep Telegram separate?"

    line 124
  12. Very specific:

    Run /manage-channels (or ncl messaging-groups create + ncl wirings create) to create the messaging group and wire it to the chosen agent …

    line 125

“Common” is measured: kept by at least 6 in 10 of the 32 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

NanoClaw Customization

This skill helps users add capabilities or modify behavior. Use AskUserQuestion to understand what they want before making changes.

Workflow

  1. Understand the request — Ask clarifying questions.
  2. Prefer a dedicated skill — If a skill covers the request, invoke it instead of editing core by hand:
    • Channels: /add-telegram, /add-slack, /add-discord, /add-whatsapp, /add-signal, /add-imessage, and the rest of the /add-<channel> family.
    • Wiring channels to agents and isolation levels: /manage-channels.
    • Container directory access: /manage-mounts.
    • Agent providers (non-default): /add-opencode, /add-codex, /add-ollama-provider.
    • MCP tools: /add-ollama-tool, /add-atomic-chat-tool.
  3. Plan the changes — Identify the v2 surface the change belongs to (entity model in the central DB, per-agent-group container config, per-group CLAUDE.md, or core code).
  4. Implement — Make the change on the right surface.
  5. Test guidance — Tell the user how to verify.

Entity Model

Customizations route through the v2 entity model: users → messaging groups → agent groups → sessions. A messaging group is one chat/channel on one platform; an agent group holds the workspace, personality, and container config; a wiring links a messaging group to an agent group with a session mode and trigger rules. Inspect and edit all of this with the ncl admin CLI. See docs/isolation-model.md for the three isolation levels.

Key Files

FilePurpose
src/index.tsEntry point: init DB, migrations, channel adapters, delivery polls, sweep, shutdown
src/router.tsInbound routing: messaging group → agent group → session → inbound.db → wake
src/delivery.tsPolls outbound.db, delivers via adapter, handles system actions
src/session-manager.tsResolves sessions; opens inbound.db / outbound.db; heartbeat path
src/container-runner.tsSpawns per-agent-group containers with session DB + outbox mounts, OneCLI ensureAgent
src/channels/Channel adapter infra (registry, Chat SDK bridge); specific adapters install from the channels branch
src/config.tsProcess-level config (assistant name, paths, timeouts) read from .env
data/v2.dbCentral DB: users, roles, agent_groups, messaging_groups, wirings, container_configs
data/v2-sessions/<session>/Per-session inbound.db (host→container) + outbound.db (container→host)
groups/<folder>/CLAUDE.mdPer-agent-group memory/persona and instructions

For ad-hoc DB queries, use pnpm exec tsx scripts/q.ts <db> "<sql>".

Common Customization Patterns

Adding a New Input Channel (e.g., Telegram, Slack, Email)

Questions to ask:

  • Which channel? (Telegram, Slack, Discord, WhatsApp, Signal, email, etc.)
  • Should this channel reach an existing agent group or a new one?
  • What isolation level — share an agent group with other channels, or keep it separate?
  • Same trigger rules as other channels on that agent group, or different?

Implementation:

  1. Run the matching install skill (/add-telegram, /add-slack, …). It fetches the adapter from the channels branch, wires the registration import, installs the pinned package, and builds.
  2. Run /manage-channels (or use ncl messaging-groups + ncl wirings) to create the messaging group, choose the isolation level, and wire it to an agent group with a session mode and trigger rules.

Adding a New MCP Integration

Questions to ask:

  • What service? (Calendar, Notion, database, etc.)
  • What operations are needed? (read, write, both)
  • Which agent group should have access?

Implementation:

  • If a dedicated /add-<service>-tool skill exists, run it — it wires the MCP server and routes credentials through OneCLI so no raw keys reach the container.
  • Otherwise wire the MCP server into the agent group's container config with either --command <cmd> [--args <json-array>] [--env <json-object>] for stdio or --url <url> for Streamable HTTP (HTTPS, or plain HTTP for localhost / host.docker.internal): ncl groups config add-mcp-server --id <group-id> --name <name> .... Then run ncl groups restart --id <group-id> to take effect. From inside a container the agent uses the add_mcp_server self-mod tool, which requires one admin approval.

Changing Assistant Behavior

Questions to ask:

  • What aspect? (persona, response style, instructions)
  • Apply to one agent group or several?

Implementation:

  • Persona, instructions, and personality live per agent group in groups/<folder>/CLAUDE.md — edit that file for the target group.
  • Container runtime behavior (provider, model, packages, MCP servers) lives in the container_configs table: ncl groups config get/update --id <group-id>.

Adding New Commands

Questions to ask:

  • What should the command do?
  • Which agent group(s)?
  • Does it need new MCP tools?

Implementation:

  • The agent interprets requests naturally — add instructions to the agent group's groups/<folder>/CLAUDE.md.
  • For routing or trigger changes (which messages wake which agent group), update the wiring's trigger rules: ncl wirings update --id <wiring-id> ....

Changing Deployment

Questions to ask:

  • Target platform? (Linux server, different Mac)
  • Service manager? (launchd, systemd)

Implementation:

  1. Create the appropriate service files.
  2. Update paths in .env / config.
  3. Provide setup instructions.

After Changes

Always tell the user.

Run from your NanoClaw project root:

# Rebuild and restart
pnpm run build
source setup/lib/install-slug.sh
# macOS:
launchctl unload ~/Library/LaunchAgents/$(launchd_label).plist
launchctl load ~/Library/LaunchAgents/$(launchd_label).plist
# Linux:
# systemctl --user restart $(systemd_unit)

Example Interaction

User: "Add Telegram as an input channel"

  1. Run /add-telegram to install the adapter, wire its registration, and build.
  2. Ask: "Should Telegram reach an existing agent group, or a new one?"
  3. Ask: "Share an agent group with your other channels, or keep Telegram separate?"
  4. Run /manage-channels (or ncl messaging-groups create + ncl wirings create) to create the messaging group and wire it to the chosen agent group with a session mode and trigger rules.
  5. Tell the user how to authenticate and test.

Download now (ZIP)

Trending

Quiet since July.about the whole repository

Dec 2025: 0 mentionsJan 2026: 0 mentionsFeb 2026: 15 mentionsMar 2026: 42 mentionsApr 2026: 7 mentionsMay 2026: 12 mentionsJun 2026: 2 mentionsJul 2026: 1 mentionAug 2026: 0 mentionsSep 2026: 0 mentionsOct 2026: 0 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the qwibitai/nanoclaw repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about qwibitai/nanoclaw

The biggest 5 of 79 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 79

Talked about on GitHub, YouTube, Bluesky and Hacker News (79 times).

On GitHub · 50

45 more on GitHub

On YouTube · 22

17 more on YouTube

On Bluesky · 6

1 more on Bluesky

On Hacker News · 1

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

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.