Philosophy: Skills over features
From the NanoClaw README:
Skills over features. Instead of adding features (e.g. support for Telegram) to the codebase, contributors submit claude code skills like /add-telegram that transform your fork. You end up with clean code that does exactly what you need.
This approach means:
- The base NanoClaw codebase stays small (under 35k tokens)
- Each installation is customized to your exact needs
- No configuration sprawl or unused features
- The code remains understandable and modifiable
How skills work
Skills are located in.claude/skills/ and consist of:
- SKILL.md - Instructions for Claude Code on how to apply the skill
- Code packages - New files to add (e.g.,
add/src/channels/telegram.ts) - Intent files - Descriptions of how to merge changes into existing files (e.g.,
modify/src/index.ts.intent.md) - Dependencies - NPM packages to install
/add-telegram, Claude Code:
Asks configuration questions
Collects information like “Should Telegram replace WhatsApp or run alongside it?”
Applies code changes
Runs the skills engine via
npx tsx scripts/apply-skill.ts .claude/skills/add-telegramGuides setup
Walks you through platform-specific configuration (creating bot tokens, registering chats, etc.)
The skills engine
The skills engine performs deterministic code transformations:- Adds new files from the
add/directory - Three-way merges changes into existing files using intent descriptions
- Installs NPM dependencies
- Updates configuration files
- Records the application in state
Available integration skills
Messaging platforms
/add-telegram- Adds Telegram support via the grammy library/add-discord- Adds Discord support via discord.js/add-slack- Adds Slack support via @slack/bolt with Socket Mode
Services
/add-gmail- Adds Gmail integration (as a tool or full channel)
System
/convert-to-apple-container- Switches from Docker to Apple Container on macOS/add-voice-transcription- Adds voice message transcription for WhatsApp/add-telegram-swarm- Adds Agent Swarm support for Telegram teams
Managing skills
Check applied skills
View which skills have been applied to your installation:Removing a skill
Skills document their removal process in the SKILL.md file. For example, to remove Telegram:Revert code changes
Remove TelegramChannel imports and creation from
src/index.ts, revert config changes, etc.Each skill’s SKILL.md includes detailed removal instructions. Check the specific skill documentation for exact steps.
Creating your own skills
Skills are just directories in.claude/skills/ with a specific structure:
Skill structure
SKILL.md contains phases:- Phase 1: Pre-flight - Checks and questions
- Phase 2: Apply Code Changes - Run the skills engine
- Phase 3: Setup - Platform-specific configuration
- Phase 4: Registration - Register chats/channels
- Phase 5: Verify - Test the integration
Contributing skills
The NanoClaw philosophy: Don’t add features, add skills. If you want to contribute Slack support, don’t create a PR that adds Slack to the base codebase. Instead:- Create
.claude/skills/add-slack/SKILL.md - Include all code packages and intent files
- Submit a PR with just the skill directory
/add-slack to get clean Slack integration code in their fork.
Skills vs configuration files
NanoClaw deliberately avoids configuration files. From the README:Customization = code changes. No configuration sprawl. Want different behavior? Modify the code. The codebase is small enough that it’s safe to make changes.Skills extend this philosophy: instead of a config file with
integrations: [telegram, discord, slack], you apply skills that modify the source code directly. You end up with code that does exactly what you need, nothing more.
Skill state tracking
The.nanoclaw/state.yaml file tracks applied skills:
/update, the update process respects your applied skills and attempts to preserve your customizations.
Best practices
Next steps
Add Telegram
Add Telegram support to your installation
Add Discord
Add Discord support to your installation
Add Slack
Add Slack support to your installation
Add Gmail
Add Gmail integration to your installation