Slack Built-in Workflows¶
The Slack plugin currently ships two built-in workflows.
summarize-slack-target¶
Search for a person or channel, read recent Slack messages, and summarize them with AI.
Source workflow: plugins/titan-plugin-slack/titan_plugin_slack/workflows/summarize-slack-target.yaml
Default flow¶
slack.validate_connectionslack.select_targetslack.ensure_target_conversationslack.read_recent_messagesslack.ai_summarize_messages
Typical usage¶
- summarize a recent DM or channel without manually browsing the Slack UI
- search Slack once and pick either a person or a channel from the same result list
Scope constraints¶
- this workflow depends on conversation-history scopes and AI configuration
- it assumes one active Slack workspace binding for the current repository
- it searches both users and channels through
select_targetand does not offer a quick-pick shortcut for repository-configureddefault_channels(useselect_default_or_search_channel_targetdirectly in a custom workflow if that shortcut is needed)
Related public steps¶
validate_connectionselect_targetensure_target_conversationread_recent_messagesai_summarize_messages
post-message¶
Resolve a Slack target and post a message, meant to be called as a nested workflow: step from any other workflow (project, personal, or another plugin's).
Source workflow: plugins/titan-plugin-slack/titan_plugin_slack/workflows/post-message.yaml
Default flow¶
slack.validate_connectionslack.select_default_or_search_channel_targetslack.prepare_message_destinationslack.prompt_message_bodyslack.format_markdown_messageslack.post_message
Typical usage¶
Call it as a nested step, sharing ctx.data with the caller:
- id: post_summary_to_slack
name: "Post Summary to Slack"
workflow: "plugin:slack/post-message"
on_error: continue # treat this as an optional extra; a caller should never fail because of it
Before calling it, a caller can optionally set:
slack_message_text(str): already Slack-ready text (e.g. a prebuilt table). Used verbatim, never converted.slack_message_markdown(str): standard Markdown text. Converted to Slack mrkdwn byformat_markdown_message.slack_preferred_target(str): a person or channel name to auto-select with no prompt, when it resolves to exactly one match.
If neither slack_message_text nor slack_message_markdown is set, prompt_message_body asks the user to type a message interactively - that typed text is then converted the same way a caller-provided Markdown message would be.
Scope constraints¶
- always call it with
on_error: continueon the outerworkflow:step - it's designed to fail cleanly (missing Slack plugin, not configured, cancelled selection) without ever being the reason a caller workflow fails - this workflow depends on messaging scopes (
chat:write, etc.) and, forselect_default_or_search_channel_target's search fallback, conversation-listing scopes
Related public steps¶
validate_connectionselect_default_or_search_channel_targetprepare_message_destinationprompt_message_bodyformat_markdown_messagepost_message