CtrlK
BlogDocsLog inGet started
Tessl Logo

drufball/slack

Slack workspace access. Surfaces new messages, active threads, and channel activity. Can also send messages and replies.

84

Quality

84%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files
name:
slack
description:
Access your Slack workspace. Run the check-in workflow to surface new messages, active threads, and channel activity for the daily note. Can also send messages and replies.
user-invocable:
Yes
metadata:
{"nanobot":{"emoji":"speech_balloon","requires":{"bins":["slack-cli"],"env":["SLACK_USER_TOKEN"]}}}

Slack

Access your Slack workspace. Use this skill to track conversations, surface decisions and announcements, feed activity into the daily note and KB, and send messages or replies when needed.

Setup

The slack-cli binary is included at ./scripts/slack-cli. Invoke it directly: ./scripts/slack-cli <command>

Check-in workflow

  1. Read recent daily notes — scan the last 2–3 daily notes in your knowledge base changelog/ for the "Channels checked" list in the Slack section. These are channels that were active recently; check them first.
  2. Find newly active channels — run slack-cli channels list --active-since <last-checkin> to catch any channels not already on the watchlist. This includes channels with new thread replies, not just new top-level messages.
  3. Fetch messages — for each channel worth checking, run slack-cli messages list --channel <id> --since <last-checkin>. Channels are automatically marked as read when messages are fetched.
  4. Fetch active threads — for any message where is_thread_root: true and has_new_replies: true, run slack-cli thread get --channel <id> --id <ts> to read the full thread. The thread is automatically marked as read.
  5. Analyse and summarise — identify decisions, open questions, announcements, and team activity worth surfacing. See analysing-discussions.md for how to do this well.
  6. Search for topics of interest — if there are open questions in the KB or daily note, use slack-cli search --query <topic> to find relevant conversations that may not have surfaced through the channel scan. See the CLI reference for search modifiers.
  7. Update daily note — add a ## Slack section with a deep link to every notable message or thread so the user can click in and read the full context.
  8. Flag launch announcements — if a launch post is detected, check whether the corresponding project in the knowledge base should be archived. Don't archive automatically — flag it in the daily note.

References

Sending messages

Sending messages requires the chat:write Slack OAuth scope, which is not available in all environments. If the scope is missing, the CLI will exit with a clear error — this means you don't have permission to send messages. Do not treat this as a fatal failure.

To send a message or reply, use slack-cli messages send:

# Post to a channel
slack-cli messages send --channel C012AB3CD --text "Your message here"

# Reply in a thread (use the parent message's ts as --thread-id)
slack-cli messages send --channel C012AB3CD --text "Reply text" --thread-id 1742463252.000001

Only send messages when explicitly asked by the user.

Guardrails

  • Only send messages when the user explicitly requests it. Default behaviour is read-only.
  • If a channel returns a not_in_channel error, skip it and note it in the daily note.
  • Respect rate limits — if you get 429s, back off and retry.
Workspace
drufball
Visibility
Public
Created
Last updated
Publish Source
CLI
Badge
drufball/slack badge