원클릭으로
worker-troubleshooting
Use when worker endpoints fail, notifications are not sent, webhook auth breaks, or command routing regresses
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when worker endpoints fail, notifications are not sent, webhook auth breaks, or command routing regresses
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when deploying pigeon code changes across all machines after merging to main
Use when you need to understand worker architecture, endpoint flow, and command routing behavior before making changes
Use when you need to understand daemon route flow, storage model, worker connectivity, and command injection architecture before making changes
Use when you need to understand the OpenCode plugin event lifecycle, session state transitions, and daemon API contracts
Use when developing or refactoring OpenCode plugin handlers, tests, and daemon integration payloads
Use when you need to understand the swarm IPC subsystem — tables, routes, the per-target arbiter, the session→directory registry, and the wire envelope — before changing it
| name | worker-troubleshooting |
| description | Use when worker endpoints fail, notifications are not sent, webhook auth breaks, or command routing regresses |
Use this skill for diagnosing regressions in auth, notifications, webhook processing, or command delivery.
CCR_API_KEY)wrangler tail)curl -s https://ccr-router.jonathan-mohrbacher.workers.dev/health
Authenticated endpoint check:
curl -s -o /tmp/sessions.json -w "%{http_code}" \
-H "Authorization: Bearer $(cat /run/secrets/ccr_api_key)" \
"https://ccr-router.jonathan-mohrbacher.workers.dev/sessions"
Expected: HTTP 200.
401 on /sessions or /notifications/send
401 Unauthorized on webhook route
X-Telegram-Bot-Api-Secret-Token mismatch/notifications/send call to allowed chatcd ~/projects/pigeon/packages/worker
export CLOUDFLARE_API_TOKEN="$(cat /run/secrets/cloudflare_api_token)"
wrangler tail --format=pretty
/sessions (response uses session_id, machine_id)message.reply_to_message.message_id, or/cmd <token> <command>, orcmd:<token>:<action>machines table last_poll_at within 30s)For question notifications, the daemon embeds its token in button callback_data as cmd:TOKEN:q0, cmd:TOKEN:q1, etc. The worker extracts this token via extractTokenFromCallbackData() in notifications.ts and stores it in the messages table. This ensures button press lookups succeed.
If button presses return "Session expired":
extractTokenFromCallbackData() is parsing the replyMarkup correctly.messages table has the daemon token, not a worker-generated one.curl -s https://ccr-router.jonathan-mohrbacher.workers.dev/health
Expected: ok