<< All versions

Skill v1.0.0

currentAutomated scan100/100
openonion/connectonion/co-slack
──Details
PublishedOctober 21, 2026 at 04:02 AM
Content Hashsha256:6983e87c33e1af80...
Git SHAe9bc54d1285d
──Files
Files (1 file, 2.9 KB)
SKILL.md2.9 KBactive
SKILL.md · 65 lines · 2.9 KB

version: "1.0.0" name: co-slack description: Read and answer Slack with co slack — what a channel said, a thread, a search across the workspace, and a reply in the right thread. Use for "what did #ops say today", "find the message about X and reply in its thread", "is the Slack bot set up", or any Slack channel, thread or message the user names. Experimental; routes to co slack --help.


Slack

co slack is the user's own Slack app. Read verbs ask Slack directly (Web API); inbox verbs (listen, receive, reply) only see what arrived while a listener ran. It is experimental: not yet run on a live workspace.

Read the help before the first command, and read every output, not just the exit code:

bash
co slack --help # every verb; the "Read the workspace" panel is channels, history, thread, search
co slack <verb> --help # flags and an example for that verb

Which command

the user wantsrun
set it up, or fix a tokenco auth slack
know whether it worksco slack check
which channels exist (ids, names)co slack channels
what a channel saidco slack history ops -n 50
a whole conversation under a messageco slack thread <channel>:<ts>
find a message by its wordsco slack search "words" --in ops --from alice
answer in a message's threadco slack send <channel> "text" --reply-to <channel>:<ts>

Add --json to any read verb for one object per line: id, chat, thread, at (UTC), sender, sender_name, text, and replies (history and thread).

"What did #ops say today?"

  1. co slack history ops -n 100 --json (a name, or '#ops' quoted: an

unquoted # is a shell comment).

  1. Keep the messages whose at falls on today in the user's timezone; the

plain view already prints local time.

  1. For any message with replies > 0 that matters, co slack thread <id>.
  2. Answer from what was said, citing who said it. Do not post anything.

"Find the message about X and reply in its thread"

  1. co slack search "X" -n 10 (narrow with --in / --from). Without

SLACK_USER_TOKEN it exits 1 and says so: fall back to co slack history <channel> on the likely channel, or tell the user to run co auth slack and paste the User OAuth Token.

  1. Read the thread before answering: co slack thread <id>.
  2. Show the user the reply and get their yes. Then

co slack send <channel> "reply" --reply-to <id>, using that message's chat and id. It prints the new message's id.

co slack reply <id> is for messages the inbox received; for an id from history, thread or search, use send --reply-to.

When it refuses

Every refusal ends with Next: and the command to run. The common ones: not_in_channel (invite the bot: /invite @<bot> in Slack), missing_scope (the error names the scope; the user adds it and reinstalls the app), and a rejected token (co auth slack). Do not retry a refusal unchanged.

All versions