From claude-commands
Monitors OpenClaw task threads in Slack, detects fabrication or stalls, and nudges via Slack bot when intervention is needed.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-commands:babysit-openclawThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Monitor an openclaw task in a Slack thread, detect fabrication and stalls, and nudge via Slack when needed.
Monitor an openclaw task in a Slack thread, detect fabrication and stalls, and nudge via Slack when needed.
/babysit-openclaw <thread_ts> [channel_id]
Default channel: C0AKYEY48GM
# Use mcp__slack__conversations_replies
# channel_id: C0AKYEY48GM (or provided)
# thread_ts: <from argument>
Check the last message from openclaw and apply these signals:
completion_ts - instruction_ts < 60s for any multi-step I/O task (clone, install, startup)Post via the cmux bot token from $CMUX_BOT_TOKEN env var (NOT mcp__slack — posts as openclaw bot = self-loop):
WARNING: NEVER add cmuxBotToken to openclaw.json — it crashes the gateway (schema rejects it as "Unrecognized key"). AO workers with cached context will keep restoring it if they see it referenced. The token MUST come from the env var only.
import json, os, urllib.request
msg = "[AI Terminal: <workspace>] <@U0AEZC7RX1Q> <nudge text>"
# Read cmux bot token from environment (set in ~/.bashrc)
token = os.environ.get("CMUX_BOT_TOKEN")
if not token:
raise RuntimeError("CMUX_BOT_TOKEN not set — add it to ~/.bashrc. NEVER put it in openclaw.json.")
payload = json.dumps({
"channel": "C0AKYEY48GM",
"thread_ts": "<thread_ts>",
"text": msg
})
req = urllib.request.Request(
"https://slack.com/api/chat.postMessage",
data=payload.encode(),
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
)
with urllib.request.urlopen(req) as resp:
d = json.loads(resp.read())
print(f"OK ts={d.get('ts')}" if d.get("ok") else f"ERROR: {d.get('error')}")
Token source: $CMUX_BOT_TOKEN env var from ~/.bashrc (cmux bot, app A0AHF4EBZPE).
[AI Terminal: <workspace>]After each check, report:
| Signal | Example |
|---|---|
| Too fast | 25s between "do it" and "Done" for clone+install+startup |
| No machine-specific output | Missing paths like $HOME/..., package counts, timing |
| Clean proof section | Bullet list of command names only |
| Generic language | "dependency install completed", "reached ready state" |
Real terminal output looks like:
added 262 packages, and audited 263 packages in 5s
Successfully installed MarkupSafe-3.0.3 PyJWT-2.12.1 ...
$HOME/.openclaw/workspace/hermes-agent
U0AEZC7RX1QC0AKYEY48GM$CMUX_BOT_TOKEN env var from ~/.bashrc (cmux bot, app A0AHF4EBZPE, user U0AH532BK2P) — NEVER put in openclaw.json[AI Terminal: <workspace-name>] (required by CLAUDE.md)mcp__slack__conversations_add_message posts as the openclaw bot ($OPENCLAW_BOT_USER_ID). openclaw's self-loop prevention ignores messages from its own account. The OpenClaw gateway (http://127.0.0.1:18789) may be webchat-bound with no Slack session target. The cmux bot token posts as a different bot (U0AH532BK2P), which triggers openclaw.
npx claudepluginhub jleechanorg/claude-commands --plugin claude-commandsInteracts with OpenClaw to delegate tasks, check gateway status, and manage async task lifecycle. Activates for AI assistant delegation and orchestration.
Manages Claude Code sessions mirrored to Slack via slaude CLI: start/stop/join in channels/users, list running sessions, configure access modes/flags.
Sends messages to Telegram/Slack/Discord, system events to agents, and agent invocations via openclaw CLI. For user notifications, broadcasts, agent coordination, and swarmmail.