Set up standing work
Scheduled jobs
Describe the schedule you want and the work Claude should do in one message:Watch channels
Ask Claude to watch named channels and post here when something matches a topic:Follow a pull request
Claude can subscribe to a single pull request and react when it updates. A subscription is the one way Claude reacts to GitHub events; it wakes on activity on that pull request, such as a comment, a failed check, or a merge. You can’t set up a routine from Slack that fires on other repository events, such as every new pull request.Routine recipes
Each recipe below sets up a complete routine with one message. Adapt the channel names, repositories, and times to your own, and name the timezone in each message, since schedules run in UTC.Daily standup summary
Claude posts a morning rollup of open threads and anything waiting on someone, before the team starts the day.Weekly channel digest
Claude posts one recap at the end of each week, so the channel has a single place to see what happened.Watch a pull request until it merges
Claude subscribes to a single pull request and posts as it moves through CI, review, and merge.Alert investigation when a monitor fires
Claude checks the alerting dashboard on a schedule and posts a first pass at diagnosis for anything new, so the investigation is underway before anyone asks. This recipe needs a monitoring connection such as Datadog or PagerDuty; Watch monitors and alerts has the full setup.Automatic triage for new requests
Claude answers, deduplicates, and routes requests as they arrive. This recipe is a standing role rather than a schedule; “remember for this channel” saves it to channel memory, so it applies to everyone’s threads.Where a routine posts its results
A routine you set up from inside a thread usually reports back in that thread each time it runs, for as long as the thread’s session lasts. To keep the results in the thread, ask Claude to report back there when you set the routine up. If you send@Claude !restart in the thread, the routine moves to the thread’s new session and keeps reporting there.
If the thread’s session gets stuck, the routine doesn’t move to the session that replaces it, and its later runs usually post at the channel’s top level instead. To bring the results back into a thread, disable the routine and set it up again from that thread.
For a routine you set up at the channel’s top level, Claude usually announces each run in a short top-level message and does the work in the thread under it. To follow up on any routine post, mention @Claude in a reply under it.
Manage standing work
Anyone in the channel can manage its standing work:- List. Ask “what routines do you have set up in this channel?”, or send
@Claude !routines. When you ask in plain language from inside a thread, Claude lists that thread’s own routines first and may leave out the rest of the channel’s; ask for “every routine in this channel” to get them all, or use!routines, which lists the channel’s routines wherever you send it. Add a channel mention or its ID, as in@Claude !routines #other-channel, to list another channel’s routines; pick the channel from Slack’s autocomplete so it lands as a real mention, since a typed name on its own isn’t accepted. - Reschedule, pause, or stop a routine. Name the routine and the change, as in “disable the Friday rollup” or “move the standup summary to 10am Pacific”
- Change what a routine does. Ask Claude to stop the routine, then set up a replacement from the channel where the results should post.
- A job runs with the channel’s connections, the same as an interactive request.
- Claude can post a job’s output into another public channel in the same workspace only if the job’s own channel is public and Claude has been added to the target channel. It labels the message with the channel it came from.
- A routine you set up in a group DM posts its output in that group DM only.
- Claude doesn’t post a channel job’s output into a different channel that’s private or externally shared, or into a DM or group DM, and doesn’t message people directly. Claude does send a completion or failure notice to whoever set up the routine, when that person’s Slack account is connected to their Claude account.
- Schedules run in UTC. Name the timezone when you set a schedule, as in “every weekday at 9am Pacific”. With no timezone in your message, Claude uses the one on your Slack profile. To confirm the time Claude set, send
@Claude !routines, which lists schedules in UTC. - A routine runs at a fixed UTC time, so each daylight saving change shifts its local time by an hour, in the same direction the clocks move. A routine running at 9am Pacific moves to 10am after the clocks go forward, or to 8am after they go back. Ask Claude to reschedule the routine to the local time you want.
- A scheduled job that touches a github.com repository uses the same GitHub connection your admin set up for interactive work. See Configure GitHub access.
Related resources
- Use case library: every entry has a proactive form to copy
- Prompt library: prompts to create, audit, and stop routines
- Good habits: write schedules that keep working