Agent skill · software engineering · aradotso

nanoclaw-ai-assistant

nanoclaw-ai-assistant — an agent skill for coding agents.

Why this skill is useful

Adds executable scripts for setting up and configuring a multi-channel AI assistant that integrates with various messaging platforms.

What it needs

Requires claude, docker, node.js installed locally. Requires anthropic account access. About 6k tokens when loaded. Last updated 2026-07-09. 70 stars on the source repository.

What this skill does

bash Fork and clone gh repo fork qwibitai/nanoclaw --clone cd nanoclaw Open Claude Code — it handles everything else claude /setup bash curl -fsSL https://nanoclaw.dev/install-docker-sandboxes.sh bash bash curl -fsSL https://nanoclaw.dev/install-docker-sandboxes-windows.sh bash bash Required ANTHROPICAPIKEY=youranthropicapikey Optional: use a custom/compatible model endpoint ANTHROPICBASEURL=https://your-api-endpoint.com ANTHROPICAUTHTOKEN=yourtokenhere Optional: override the trigger word (default: @Andy) TRIGGERWORD=@Andy Channels --> SQLite --> Polling loop --> Container (Claude Agent SDK) --> Response /setup # Full first-time setup /add-whatsapp # Add WhatsApp channel /add-telegram # Add Telegram channel /add-gmail # Add Gmail integration /customize # Guided customization wizard /convert-to-apple-container # Switch from Docker to Apple Container (macOS) /debug # Diagnose issues /clear # Compact conversation context (if skill installed) Inside claude prompt: /add-whatsapp /add-telegram /add-gmail typescript // src/channels/registry.ts — how channels register themselves import { ChannelRegistry } from './registry'; export interface Channel { name: string; poll(): Promise<IncomingMessage[]>; send(groupId: string, text: string): Promise<void>; } // Each channel file calls this at module load time ChannelRegistry.register(myChannel); typescript // src/channels/my-channel.ts import { ChannelRegistry } from './registry'; import type { Channel, IncomingMessage } from './types'; const myChannel: Channel = { name: 'my-channel', async poll(): Promise<IncomingMessage[]> { // Return new messages since last poll // Each message needs: { groupId, senderId, text, timestamp } if (!process.env.MYCHANNELTOKEN) return []; // ... fetch logic return []; }, async send(groupId: string, text: string): Promise<void> { // Send text back to the group/user // ... …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills aradotso/nanoclaw-ai-assistant

View the source on GitHub

Browse the @skills marketplace