add-reactions
Add Reactions
This skill adds emoji reaction support to NanoClaw's WhatsApp channel: receive and store reactions, send reactions from the container agent via MCP tool, and query reaction history from SQLite.
Phase 1: Pre-flight
Check if already applied
Check if src/status-tracker.ts exists:
test -f src/status-tracker.ts && echo "Already applied" || echo "Not applied"
If already applied, skip to Phase 3 (Verify).
Phase 2: Apply Code Changes
Ensure WhatsApp fork remote
git remote -v
If whatsapp is missing, add it:
git remote add whatsapp https://github.com/qwibitai/nanoclaw-whatsapp.git
Merge the skill branch
git fetch whatsapp skill/reactions
git merge whatsapp/skill/reactions || {
git checkout --theirs package-lock.json
git add package-lock.json
git merge --continue
}
This adds:
scripts/migrate-reactions.ts(database migration forreactionstable with composite PK and indexes)src/status-tracker.ts(forward-only emoji state machine for message lifecycle signaling, with persistence and retry)src/status-tracker.test.ts(unit tests for StatusTracker)container/skills/reactions/SKILL.md(agent-facing documentation for thereact_to_messageMCP tool)- Reaction support in
src/db.ts,src/channels/whatsapp.ts,src/types.ts,src/ipc.ts,src/index.ts,src/group-queue.ts, andcontainer/agent-runner/src/ipc-mcp-stdio.ts
Run database migration
npx tsx scripts/migrate-reactions.ts
Validate code changes
npm test
npm run build
All tests must pass and build must be clean before proceeding.
Phase 3: Verify
Build and restart
npm run build
Linux:
systemctl --user restart nanoclaw
macOS:
launchctl kickstart -k gui/$(id -u)/com.nanoclaw
Test receiving reactions
- Send a message from your phone
- React to it with an emoji on WhatsApp
- Check the database:
sqlite3 store/messages.db "SELECT * FROM reactions ORDER BY timestamp DESC LIMIT 5;"
Test sending reactions
Ask the agent to react to a message via the react_to_message MCP tool. Check your phone — the reaction should appear on the message.
Troubleshooting
Reactions not appearing in database
- Check NanoClaw logs for
Failed to process reactionerrors - Verify the chat is registered
- Confirm the service is running
Migration fails
- Ensure
store/messages.dbexists and is accessible - If "table reactions already exists", the migration already ran — skip it
Agent can't send reactions
- Check IPC logs for
Unauthorized IPC reaction attempt blocked— the agent can only react in its own group's chat - Verify WhatsApp is connected: check logs for connection status
More from qwibitai/nanoclaw
debug
Debug container agent issues. Use when things aren't working, container fails, authentication problems, or to understand how the container system works. Covers logs, environment variables, mounts, and common issues.
20add-whatsapp
Add WhatsApp channel via native Baileys adapter. Direct connection — no Chat SDK bridge. Uses QR code or pairing code for authentication.
12add-telegram
Add Telegram channel integration via Chat SDK.
12update-nanoclaw
Efficiently bring upstream NanoClaw updates into a customized install, with preview, selective cherry-pick, and low token usage.
11customize
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.
10qodo-pr-resolver
Review and resolve PR issues with Qodo - get AI-powered code review issues and fix them interactively (GitHub, GitLab, Bitbucket, Azure DevOps)
10