From claude-commands
Audits Slack channel threads for untracked work items, checks each against GitHub issues/PRs, reports gaps, and optionally redrives dropped threads by posting status replies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-commands:slack-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scan one or more Slack channels for the last N hours, identify threads that contain actionable work items with no corresponding GH issue or PR, and report or redrive them.
Scan one or more Slack channels for the last N hours, identify threads that contain actionable work items with no corresponding GH issue or PR, and report or redrive them.
/slack-audit [--channel <#channel|channel_id>] [--hours <N>] [--fix] [--dry-run]
#worldai (C0AH3RY3DK6)24h--dry-run (default): print the gap report, no Slack posts--fix: post a status reply to each dropped thread and reply-to-channel to surface itAlways fan out parallel subagents for independent lookups. Do NOT do GH searches sequentially.
gh issue list --search calls (one per item, all in parallel)gh pr list --search calls in parallel with subagent BWhen running --fix: fan out parallel Slack posts (one per dropped thread), do not post sequentially.
Identity: Always post as the authenticated user ($USER via MCP Slack tool). Never post as a bot user.
Use mcp__slack__conversations_history for the target channel + time window.
mcp__slack__conversations_history(channel_id=<ID>, limit="48h")
Parse the CSV result (headers: MsgID,UserID,UserName,...,Text,Time,...).
Group messages by ThreadTs (empty ThreadTs = root message = its own thread).
For each thread, identify messages containing actionable intent signals:
| Signal | Examples |
|---|---|
| Imperative verb | "fix", "make", "create", "spawn", "investigate", "drive", "open PR", "file issue" |
| PR/issue reference | github.com/.../pull/N, #7NNN, /green, /es, /er |
| Status question | "what's the status", "is this done", "any update" |
| Explicit work | "AO worker", "dispatch", "bring to green", "/babysit" |
Skip threads that are purely status reports from bots (hermes, coderabbit, etc.) with no human reply.
For each extracted work item:
gh issue list --repo $GITHUB_REPOSITORY --search "<keywords>" (or agent-orchestrator if relevant)gh pr list --repo $GITHUB_REPOSITORY --search "<keywords>"Classify each thread:
| Status | Meaning |
|---|---|
TRACKED | Has open or recently merged GH issue/PR |
COMPLETED | Referenced PR/issue is merged/closed |
UNTRACKED | No GH issue or PR found |
NEEDS_REDRIVE | Has issue/PR but no recent activity (>48h stale) |
Print a table:
THREAD | STATUS | GH | LAST ACTIVITY
--------------------------------|-------------|-------------|---------------
keep-logging-in (Jun 14 00:06) | TRACKED | #7576 OPEN | just filed
collapsible filter (Jun 14 19:29)| TRACKED | #7203 OPEN | no PR yet
#684 send_message mis-route | NEEDS_REDRIVE| #684 OPEN | 20h stale
wiki-ingest campaign skill | UNTRACKED | none | -
RAG optimize-anything | UNTRACKED | none | -
For each UNTRACKED or NEEDS_REDRIVE thread:
Template for untracked item:
Following up: this thread has no GH issue or PR yet.
[Summary of what was asked]
Next: [proposed action — file issue / spawn worker / close as resolved]
Template for needs-redrive:
Re-driving: issue #N / PR #N has had no activity for >48h.
Current state: [open/CI-red/CR-changes-requested]
Next: [specific action]
Always use the user's identity ($USER via mcp__slack__conversations_add_message).
Never use bot tokens for these posts.
| Channel | ID | Purpose |
|---|---|---|
#worldai | C0AH3RY3DK6 | Main your-project.com work |
#jleechanclaw | C0AJ3SD5C79 | Hermes/OpenClaw infra work |
#agent-orchestrator | C0ALSKLU9KM | AO worker status |
~/.hermes/lib/slack_thread_lib.sh — slack_post <job> <text> [--channel C] [--force] [--no-thread]~/.hermes/src/orchestration/slack_catchup.py — channel history + per-channel cursor state~/.hermes/scripts/slack_history_to_memory.py — sync Slack history to memory markdownUse the MCP Slack tool (mcp__slack__conversations_history, mcp__slack__conversations_add_message) for in-session posting. Use slack_thread_lib.sh for cron/automation posting.
After any --fix run, call /learn to capture:
/repro or /green command that completed (has a bot success reply with ✅).npx claudepluginhub jleechanorg/claude-commands --plugin claude-commandsHandles Slack channel and thread messaging with context-aware session management. Reads messages, sends replies, searches channels/users, drafts, and schedules via Slack MCP tools.
Fetches yesterday's Linear issues and GitHub commits, then posts a formatted standup update (done/doing/blockers) to Slack.
Triages unresolved GitHub PR review threads via webform, summarizes reviewer feedback, and dispatches fixes through whip-start. Use after receiving PR reviews.