Skip to content

feat(todo): add Slack To-dos support - #171

Open
y0usaf wants to merge 2 commits into
stablyai:mainfrom
y0usaf:feat/todos
Open

y0usaf wants to merge 2 commits into
stablyai:mainfrom
y0usaf:feat/todos

Conversation

@y0usaf

@y0usaf y0usaf commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Slack split the old Later tab into Saved and To-dos. agent-slack can save things with later, but it couldn't see or touch the To-dos list, so this adds a todo command:

agent-slack todo list [--all]
agent-slack todo add "Review the launch plan" --remind tomorrow
agent-slack todo add <message-url>
agent-slack todo complete|reopen|remove <id-or-url>
agent-slack todo remind <id-or-url> --in 3h

A text to-do's id is its Sa… id, and a message to-do's id is just the message URL.

There's no public To-dos API. The desktop client builds them on the same saved.* endpoints later already uses: saved.list with filter=todo (or todo_with_completed), saved.add with todo_state=to_do, saved.update for complete, reopen and reminders, and saved.delete for remove. A few things weren't obvious. A to-do whose date_due equals date_created has no reminder, so remind_at only shows up for real ones. date_due on saved.add sets the to-do's date, not a reminder, so add --remind does a follow-up saved.update. Same when you add a message that's already in Saved, since saved.add leaves it there.

Message to-dos go through fetchMessage, toCompactMessage and resolveChannelName, so they look the same as message get.

I ran every subcommand against a real workspace (text and message to-dos, moving a message out of Saved, bad input exiting 1), and test, typecheck, lint, format:check and build all pass. One thing I left alone: later list still shows messages that are now to-dos.

X: @realy0usaf

Slack replaced the Later tab with Saved and To-dos. Add a todo command (list, add, complete, reopen, remind, remove) over the saved.* endpoints the Slack client uses for To-dos, covering both plain-text to-dos and message to-dos.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant