/add-reactions
Add WhatsApp emoji reaction support — receive, send, store, and search reactions.
$ npx -y skills add sbusso/claudeclaw --skill add-reactions --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/add-reactions
Context preview
The summary Claude sees to decide when to auto-load this skill.
Add WhatsApp emoji reaction support — receive, send, store, and search reactions.
SKILL.md
add-reactions.SKILL.mdname: add-reactions
description: Add WhatsApp emoji reaction support — receive, send, store, and search reactions.
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:
- `scripts/migrate-reactions.ts` (database migration for `reactions` table 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)
- `agent/skills/reactions/SKILL.md` (agent-facing documentation for the `react_to_message` MCP tool)
- Reaction support in `src/orchestrator/db.ts`, `src/channels/whatsapp.ts`, `src/orchestrator/types.ts`, `src/orchestrator/ipc.ts`, `src/index.ts`, `src/group-queue.ts`, and `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
> **Service name:** Derived from the directory name: `com.claudeclaw.<dirname>` (macOS) / `claudeclaw-<dirname>` (Linux). For example, if cwd is `my-assistant`, the service is `com.claudeclaw.my-assistant`. Determine the correct service name before running service commands below.
Linux:
systemctl --user restart claudeclaw
macOS:
launchctl kickstart -k gui/$(id -u)/com.claudeclaw
Test receiving reactions
1. Send a message from your phone 2. React to it with an emoji on WhatsApp 3. 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 `Failed to process reaction` errors
- Verify the chat is registered
- Confirm the service is running
Migration fails
- Ensure `store/messages.db` exists 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
Read more
name: add-reactions description: Add WhatsApp emoji reaction support — receive, send, store, and search reactions.
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:
- `scripts/migrate-reactions.ts` (database migration for `reactions` table 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)
- `agent/skills/reactions/SKILL.md` (agent-facing documentation for the `react_to_message` MCP tool)
- Reaction support in `src/orchestrator/db.ts`, `src/channels/whatsapp.ts`, `src/orchestrator/types.ts`, `src/orchestrator/ipc.ts`, `src/index.ts`, `src/group-queue.ts`, and `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
> **Service name:** Derived from the directory name: `com.claudeclaw.<dirname>` (macOS) / `claudeclaw-<dirname>` (Linux). For example, if cwd is `my-assistant`, the service is `com.claudeclaw.my-assistant`. Determine the correct service name before running service commands below.
Linux:
systemctl --user restart claudeclaw
macOS:
launchctl kickstart -k gui/$(id -u)/com.claudeclaw
Test receiving reactions
1. Send a message from your phone 2. React to it with an emoji on WhatsApp 3. 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 `Failed to process reaction` errors
- Verify the chat is registered
- Confirm the service is running
Migration fails
- Ensure `store/messages.db` exists 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
Repo: sbusso/claudeclaw
Other skills on claudeclaw.
- /agent-browser
Browse the web for any task — research topics, read articles, interact with web apps, fill forms, take screenshots, extract data, and test web pages. Use whenever a browser would be useful, not just when the user explicitly asks.
Open skill - /add-compact
Add /compact command for manual context compaction. Solves context rot in long sessions by forwarding the SDK's built-in /compact slash command. Main-group or trusted sender only.
Open skill - /add-discord
Add Discord bot channel integration to ClaudeClaw.
Open skill - /add-gmail
Add Gmail integration to ClaudeClaw. Can be configured as a tool (agent reads/sends emails when triggered from WhatsApp) or as a full channel (emails can trigger the agent, schedule tasks, and receive replies). Guides through GCP OAuth setup and implements the integration.
Open skill - /add-image-vision
Add image vision to ClaudeClaw agents. Resizes and processes WhatsApp image attachments, then sends them to Claude as multimodal content blocks.
Open skill - /add-ollama-tool
Add Ollama MCP server so the container agent can call local models for cheaper/faster tasks like summarization, translation, or general queries.
Open skill

