From clab
Sends notifications to human supervisor via ntfy.sh for blockers, input needs, progress updates, or milestones. Supports fire-and-forget and polling for replies when blocked.
npx claudepluginhub butanium/claude-lab --plugin clabThis skill uses the workspace's default tool permissions.
When you need human input, hit a blocker, have significant findings to report, or achieved a milestone, send a notification via ntfy.sh.
Sends push notifications via Gotify server for long-running task completions, errors, or events using bash scripts with curl, jq, title, priority, and markdown support.
Configures Bark push, WeChat, and system notifications for Claude Code via .claude/claude-notification.local.md. Provides bash scripts for proactive task alerts.
Configures Bark push, WeChat, and system notifications for Claude Code projects. Enables persistent alerts and proactive sending via PowerShell scripts after tasks.
Share bugs, ideas, or general feedback.
When you need human input, hit a blocker, have significant findings to report, or achieved a milestone, send a notification via ntfy.sh.
curl -s -d "Your message here" "ntfy.sh/$CLAB_NTFY_TOPIC"
The CLAB_NTFY_TOPIC environment variable must be set. If it's not configured, ask the user to set it.
Keep messages concise but informative:
Example:
curl -s -d "exp003 complete: Found 3 attention heads with consistent activation patterns. Ready for colleague review." "ntfy.sh/$CLAB_NTFY_TOPIC"
By default, notifications are fire-and-forget. Send the message and continue working — do NOT wait for a reply unless you have nothing left to do.
If you've sent a notification because you're blocked and cannot make any further progress (e.g. you need a decision, or all tasks are done and you're awaiting next instructions):
while true; do msg=$(curl -s "ntfy.sh/$CLAB_NTFY_TOPIC/json?poll=1&since=10s" | tail -1 | python3 -c "import sys,json; print(json.load(sys.stdin).get('message',''))" 2>/dev/null); if [ -n "$msg" ]; then echo "Supervisor replied: $msg"; break; fi; sleep 10; done
Run this with run_in_background: true.