Claudeclaw add-reactions
Add WhatsApp emoji reaction support — receive, send, store, and search reactions.
install
source · Clone the upstream repo
git clone https://github.com/sbusso/claudeclaw
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sbusso/claudeclaw "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/add-reactions" ~/.claude/skills/sbusso-claudeclaw-add-reactions && rm -rf "$T"
manifest:
skills/add-reactions/SKILL.mdsource content
Add Reactions
This skill adds emoji reaction support to ClaudeClaw'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/claudeclaw-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:
(database migration forscripts/migrate-reactions.ts
table with composite PK and indexes)reactions
(forward-only emoji state machine for message lifecycle signaling, with persistence and retry)src/status-tracker.ts
(unit tests for StatusTracker)src/status-tracker.test.ts
(agent-facing documentation for theagent/skills/reactions/SKILL.md
MCP tool)react_to_message- Reaction support in
,src/orchestrator/db.ts
,src/channels/whatsapp.ts
,src/orchestrator/types.ts
,src/orchestrator/ipc.ts
,src/index.ts
, andsrc/group-queue.tsagent/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
Service name: Derived from the directory name:
(macOS) /com.claudeclaw.<dirname>(Linux). For example, if cwd isclaudeclaw-<dirname>, the service ismy-assistant. Determine the correct service name before running service commands below.com.claudeclaw.my-assistant
Linux:
systemctl --user restart claudeclaw
macOS:
launchctl kickstart -k gui/$(id -u)/com.claudeclaw
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 ClaudeClaw logs for
errorsFailed to process reaction - Verify the chat is registered
- Confirm the service is running
Migration fails
- Ensure
exists and is accessiblestore/messages.db - If "table reactions already exists", the migration already ran — skip it
Agent can't send reactions
- Check IPC logs for
— the agent can only react in its own group's chatUnauthorized IPC reaction attempt blocked - Verify WhatsApp is connected: check logs for connection status