NanoClaw is designed to stay small and minimal. Contributions should prioritize reducing code, not adding features.Documentation Index
Fetch the complete documentation index at: https://docs.nanoclaw.dev/llms.txt
Use this file to discover all available pages before exploring further.
Philosophy
NanoClaw is not a framework that tries to support every use case. It’s software that each user customizes to fit their exact needs. Instead of adding features to the codebase, we contribute skills that teach Claude Code how to transform a NanoClaw installation.What we accept
Source code changes
Accepted: Bug fixes
Accepted: Bug fixes
Accepted: Security fixes
Accepted: Security fixes
Accepted: Simplifications
Accepted: Simplifications
Accepted: Code reduction
Accepted: Code reduction
Not accepted: Features
Not accepted: Features
Not accepted: Enhancements
Not accepted: Enhancements
Not accepted: Compatibility
Not accepted: Compatibility
Contributing skills
A skill is a markdown file that teaches Claude Code how to transform or extend a NanoClaw installation. NanoClaw has four types of skills, each serving a different purpose.Skill types
Feature skills — add capabilities by merging askill/* branch. The SKILL.md contains setup instructions; the actual code lives on the branch.
main with no code changes.
container/skills/.
Writing a skill
For feature skills: make code changes on a branch
main and make your code changes directly:.env.example additions.For utility skills: create a self-contained directory
.claude/skills/{name}/ with a SKILL.md and supporting code files (e.g., in a scripts/ subfolder). Use ${CLAUDE_SKILL_DIR} to reference files in the skill directory. Put code in separate files, not inline in the SKILL.md.For operational skills: write SKILL.md
SKILL.md in .claude/skills/{name}/ on main. The skill should contain instructions Claude follows to execute a workflow.For container skills: add to container/skills/
container/skills/{name}/SKILL.md. Keep skills focused — the agent’s context window is shared across all container skills.Include context and rationale
Why skills instead of features?
Every user should have clean and minimal code that does exactly what they need. Skills let users selectively add features to their fork without inheriting code for features they don’t want.- With skills
- Without skills (traditional approach)
Skill guidelines
Feature skills contain source changes
Feature skills contain source changes
skill/* branches that contain all code changes for the integration — including modifications to src/, container/, package.json, etc. This is by design: the skill branch is the complete diff from main.Utility skills ship code alongside the SKILL.md but don’t modify source files — the code is self-contained in the skill directory. Operational skills are instruction-only.Skills should be reversible
Skills should be reversible
/remove-{feature} skill.Skills should be composable
Skills should be composable
Skills should preserve security
Skills should preserve security
Request for skills (RFS)
Skills we’d like to see contributed:Communication channels
/add-signal- Add Signal integration/add-matrix- Add Matrix integration/add-whatsapp-cloud-api- Add WhatsApp Cloud API (for business accounts)
Deployment
/deploy-railway- Deploy NanoClaw to Railway/deploy-fly- Deploy NanoClaw to Fly.io/deploy-vps- Deploy NanoClaw to a VPS with systemd
Integrations
/add-calendar- Google Calendar integration/add-todoist- Todoist integration/add-notion- Notion integration
Runtime
/convert-to-podman- Switch from Docker to Podman/add-windows-support- WSL2 support for Windows
Submitting a contribution
Make your changes
Code style
When contributing source code:- Follow existing TypeScript conventions
- Use meaningful variable names
- Add comments for non-obvious logic
- Keep functions small and focused
- Prefer explicit over implicit
Getting help
If you’re working on a contribution and need help:- Ask Claude Code: Describe what you’re trying to do. Claude can help write skills or refactor code.
- Join the Discord: Community Discord
- Open a draft PR: Start a discussion before the work is complete.
License
By contributing to NanoClaw, you agree that your contributions will be licensed under the MIT License.Related pages
- Security model - Understanding security boundaries
- IPC system - How agents communicate with the host
- Container runtime - Container execution details