Recipes
Morning brief to Slack
Post a weekday morning brief by running Scout on a schedule and sending the
brief to #eng with slack.message.post.
What you'll build
- A
scheduletrigger at 7:00 AM on weekdays. - One
agentstep that writes a concise brief. - One
actionstep that posts the brief to Slack.
Prerequisites
- A connected Slack integration with access to
#eng. - An agent named Scout (
agt_scout). - Permission to run Slack message actions.
Build it
- In the app, open Build > Loops.
- Create a loop named
Morning brief. - Add a Schedule trigger for weekdays at
07:00. - Add an agent step and select Scout.
- Ask Scout for a markdown brief with project status, risks, and next actions.
- Add an action step and select
slack.message.post. - Set
channelto#eng. - Set
textto the saved brief output. - Create the loop as active.
Your loop now runs on the schedule and can also be started manually from the loop page.
Finished spec
schema_version: "1"
name: morning-brief
description: Write a weekday engineering brief and post it to Slack.
concurrency: queue
triggers:
- key: weekday-brief
name: Weekday brief
kind: schedule
enabled: true
config:
cron: "0 7 * * MON-FRI"
timezone: "America/New_York"
steps:
- key: write-brief
name: Write brief
kind: agent
config:
agent_id: agt_scout
instructions: |
Write a concise markdown morning brief for Acme's platform team.
Include project status, risks to watch, and the next three actions.
save_as: brief
- key: post-to-slack
name: Post to Slack
kind: action
config:
action_name: slack.message.post
parameters:
channel: "#eng"
text: "{{ .context.brief }}"Run it
Click Run on the loop page. A completed run should look like this:
run.started
step.started step=write-brief kind=agent
step.completed step=write-brief
step.started step=post-to-slack kind=action
action.called action_name=slack.message.post
action.completed action_name=slack.message.post
step.completed step=post-to-slack
run.completedThe Slack action returns the channel and timestamp:
{
"post-to-slack": {
"channel": "C0123ENG",
"timestamp": "1781190000.000100"
}
}If the run reaches failed, check whether Slack is connected and whether the
bot can post to #eng. The action error on the Timeline tab is the fastest
place to see the provider response.
Variations
- Use
slack.message.scheduleif Slack should schedule the post instead of Mobius scheduling the run. - Add
github.actions.list_runsbefore the agent step to include CI status. - Add an interaction step before posting if a lead should approve the brief.
Next
- Learn why scheduled runs halt in How Mobius works.
- Inspect Slack action behavior from actions.
- Add human review with interactions.