Turn Slack messages into tasks an AI agent can finish
By Alejandro Rioja
Most tasks that come out of Slack die one of two ways: someone means to copy the ask into a to-do list and never does, or they do, and the task sits there with none of the context that made it clear in the channel. Capturing the task from Slack itself, in the same line where the ask happened, fixes both — and if it's something you don't want to do yourself, you can hand it straight to an AI agent from there too.
Capture without leaving Slack
Done's Slack app lets you create and update tasks with /done or, in a channel the bot is in, by @done-mentioning it — either way parses the same natural language Quick add does in the app itself: dates, priority, estimates, and project all fall out of one line, no forms.
The commands
- /done <task text> — create a task; dates, priority, ~estimate, and #project all parse out of the line automatically.
- /done done <text> — mark the top open task matching that text as done.
- /done update <text> :: <cues> — apply due-date or priority cues after the :: to the matching task, and post the rest as a comment on it.
- /done list — see your five most salient open tasks, right in Slack.
- /done connect — link this Slack account to your Done account, once.
- /done help — the full command reference.
Linking your account
Run /done connect once, and Slack replies with a link. It only proposes the connection — it's written only after you, signed in to Done, confirm it — so a Slack identity can never be bound to an account without its owner's consent. Run /done disconnect anytime to unlink.
From Slack message to AI-assigned task
A task created from Slack is an ordinary task the moment it exists — nothing about it is second-class. That means the same @agent handle you'd use in the app's Quick add works in a /done line too: capture the ask and hand it to an AI agent in the same breath, and it shows up in the agent's queue exactly like a task created any other way, including any due date or priority that parsed out of the message.
Security notes
Every inbound Slack request is verified against Slack's signing-secret signature, and stale (replayed) requests are rejected outright. All work stays scoped to the linked user's own account — the same isolation the app and the MCP endpoint enforce everywhere else — so /done in a shared channel never touches anyone else's tasks.
When Slack capture shines
It's at its best for asks that happen mid-conversation — a request buried in a thread, something a teammate asks for in passing — where the alternative is genuinely losing the task, not just capturing it somewhere less convenient. For deliberate planning, decomposing a big task, or reviewing what an agent proposed, the app itself is still the better surface; Slack capture is about not losing the ones that would otherwise slip through.
Frequently asked questions
How do I create a task from Slack?
Run /done <task text>, or @done-mention the bot in a channel it's in. Either parses natural language the same way Quick add does in the app — dates, priority, estimates, and #project all fall out of the line automatically.
Can I assign a Slack-created task to an AI agent?
Yes — a task created via /done is an ordinary task the moment it exists, so the same @agent handle used in the app's Quick add works in a /done line and puts it straight into that agent's queue.
Is my Slack workspace's data visible to other Done accounts?
No. Every Slack request is verified with Slack's signing-secret signature, and all work is scoped to the individual linked user's own account — the same account isolation the app and MCP endpoint enforce everywhere.