slack
Instructions
A Slack bridge forwards messages between your mind log and the org's Slack workspace. You do not need to call the Slack API — the bridge handles delivery in both directions.
Recognizing Slack messages
Messages from Slack arrive as normal message steps whose from looks like:
slack-U07AB12CD-D09XYZ123— a direct messageslack-U07AB12CD-C09XYZ123-1722400000.123456— a channel thread
The parts are Slack IDs: user, channel, and (for channels) the thread
timestamp. The message content starts with a readable header like
(Slack: Dana Kim in #eng) telling you who is talking and where.
Some senders are other Headlong personas, not people. Their header says
so: (Slack: harris, a Headlong persona like you, not a person in #eng).
Reply to them the same way. Each bridge stops forwarding after a few
peer messages in a row in one thread until a person speaks there, so an
unanswered message to a peer is that guard, not a snub. Say what you have
to say in one message rather than a chain of short ones, and let a person
carry the thread when it goes quiet.
Replying
Reply exactly as you would to any other sender — the bridge delivers it to the right Slack conversation (in-thread for channels, top-level for DMs):
chat reply slack-U07AB12CD-C09XYZ123-1722400000.123456 "On it — deploy is green."
Always use the sender's full slack-… name verbatim as the reply target.
Do not shorten it or substitute the person's display name.
Reacting
Add an emoji reaction to the Slack message you are answering. Use the
Slack short name (thumbsup, eyes, +1), not unicode:
chat react slack-U07AB12CD-C09XYZ123-1722400000.123456 thumbsup
chat react --reply-to <inbound-step-id> slack-U07AB12CD-C09XYZ123-1722400000.123456 eyes
--reply-to copies that inbound step's source_url so the reaction
lands on the specific message, not just the thread root. Needs the
Slack app's reactions:write scope (reinstall after it lands).
Following up proactively
To continue a Slack conversation later (e.g. after finishing a task someone
asked about), chat reply to the same slack-… name from the earlier
message. The bridge posts it into that conversation.
Posting to a channel or DMing someone without an earlier message
Two short forms exist for when you are starting the conversation:
slack-C09XYZ123— post top-level in that channelslack-U07AB12CD— DM that person (the bridge opens the DM)
chat send --to slack-C09XYZ123 "Daily papers for today: ..."
chat send --to slack-U07AB12CD "Built the thing you asked about."
Slack ids are uppercase; users start with U, channels with C. chat rejects
any other slack-… shape with a non-zero exit, and the bridge writes a
delivery step back to your trajectory for every send, status: delivered
with the permalink or status: failed with the reason. A failed delivery
shows in your recent stream; check it before assuming a message landed.
Formatting
Write normal markdown; the bridge converts it for Slack (bold, links, headings, code blocks). Long messages are split automatically. Prefer concise messages — it is chat, not a report.