with one click
watch-slack
Watch Slack
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Watch Slack
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Automate macOS apps via the accessibility tree using the agent-desktop CLI. Snapshot UI, click/type/select by element ref, manage windows, screenshot. Use when asked to control, drive, or automate a Mac app, read or act on on-screen UI, "snapshot an app", or "/agent-desktop".
Install and configure the agent-desktop CLI for macOS accessibility automation, honoring Eric's aube supply-chain hardening. Use when asked to install agent-desktop, fix "Native binary not found", or "/setup-agent-desktop".
Set up the Renaissance AR CLI tool. Use when user says "/setup-renaissance" or when renaissance commands fail with config errors.
Set up the unanet CLI tool for timesheet automation. Use when user says "/setup-unanet" or needs to configure Unanet credentials.
Set up the wengage CLI tool for checking school grades. Use when user says "/setup-wengage" or needs to configure Wengage credentials.
Check Accelerated Reader progress, quiz scores, reading goals, completed books, and search for AR books. Use when user asks about AR, reading progress, Allie's or Layla's books, quiz scores, book search, or says "/renaissance".
| name | watch-slack |
| description | Watch Slack |
| tools | Bash |
Surface Slack replies that are addressed to this Claude pane, so the user can
reply in the pane's :claude: notification thread to wake the agent.
slack-noti-listen untargeted. It
holds the one Slack Socket Mode connection and writes every #notifications
message โ pre-tagged with the pane it belongs to โ to a shared log
(~/.local/state/slack-noti/stream.log).watch-pane.sh) that tails that log
and emits only the lines tagged for the current pane, re-resolving the pane's
live session:window.pane on every line so tmux window moves just work.Why one shared listener: Slack delivers each Socket Mode event to only one connection sharing the app token. Running a listener per pane would make Slack round-robin events and starve panes. One socket, many local consumers.
Run ${CLAUDE_PLUGIN_ROOT}/scripts/watch-slack-service.sh status. If it reports
(not loaded) or there is no log, run
${CLAUDE_PLUGIN_ROOT}/scripts/watch-slack-service.sh install to generate the
plist, bootstrap it, and start it. Confirm the log shows connected.
If CLAUDE_PLUGIN_ROOT is not set, resolve the scripts relative to this
SKILL.md (../../scripts/).
The listener needs BOEHS_SLACK_NOTI_SOCKET_XAPP (Socket Mode app token) and,
for pane-targeted threads, BOEHS_SLACK_NOTI_BOT_XOXB (bot token). The service
injects these via fnox exec when fnox is available. See the README for setup.
Use the Monitor tool (persistent, long timeout) to run:
${CLAUDE_PLUGIN_ROOT}/scripts/watch-pane.sh
Each line the script emits is one event: a Slack reply addressed to this pane
(format [time] session:window.pane โคท who: text), or a socket reconnect/
disconnect notice. The script self-resolves the current pane from $TMUX_PANE,
so do not hardcode a pane id.
retrying / server asked to disconnect line is just the socket bouncing;
the service auto-reconnects. No action needed unless it loops.claude-notify) is what creates the :claude: threads.$TMUX_PANE id in the notify hook closes this; mention it if the
user moves panes often.watch-pane.sh against the same
shared log. They do not compete โ the single socket lives in the service.