What this issue covers
In the last issue we split one do-everything assistant into a team of Bots with clear roles. Now that the team exists, the next step is to let it clock in on its own: compiling the news every morning, telling you the moment a CI check fails, or handling a certain email as soon as it arrives.
That's what Routines are for. According to the official docs, a routine tells one Bot when to run a workflow: on a schedule, or when something happens. It runs in the cloud, so it keeps going while your laptop is closed. This issue walks through how to use routines well, from scratch.
Five tips you can use today
Each tip comes with an example prompt. Replace the parts in square brackets with your own details and send it to the Bot that should own the job.
Tip 1: Get it working once, then make it a routine
The official docs recommend starting with a one-time task, making it reliable, saving the method as a skill if it helps, and only then automating it. If you schedule an idea that has never worked end to end, you usually just get a string of failed runs.
Creating one is simple: in chat, tell the Bot in plain words what to do, when, and who gets the result. Before it's created, confirm these:
- Owning Bot
- Which Bot runs it, for example Research Bot
- Schedule and time zone
- For example "every weekday at 8:00 AM", in the time zone from your settings
- Input source
- Where the data comes from
- Expected result
- What gets delivered, in what format
- Approval boundary
- What must be checked with you first
- Missing data
- What to do when a source can't be reached
That news summary was great, and I'd like you to do it regularly. Don't create anything yet. First give me a routine plan:
1. The goal as you understand it, in one sentence;
2. A suggested time and frequency, and why;
3. The data sources;
4. The delivery format and where it goes;
5. What you won't do on your own and will ask me first;
6. What you'll do if a source can't be reached.
Create it once I confirm.Tip 2: Describe the schedule in plain words, then check When to run
Describe schedules in natural language, like "every weekday at 8:00 AM" or "every 2 hours". They follow the Timezone in Settings, under Bot, and Auto-detect follows your computer. If the work belongs to an office in another city, you can pick a different zone.
After it's created, open the routine and look at When to run. It shows the saved schedule in words. If it's wrong, choose Edit and tell the Bot what to fix. Two common pitfalls:
- A new scheduled routine waits for its next scheduled time before its first run
- To see it work now, open it and choose Test; the result shows up in the Bot's chat
- A test does real work: it can change files and use connected apps, so use a safe input
- Setting "every day at 8:00 AM" at 8:05 and waiting for it to run today
- Testing with a real task that sends messages to other people
- Running it as often as possible: match the cadence to when you'll actually read the result
If what matters is "ready by a certain time" rather than "start at exactly that time", put the deadline in the prompt and let the Bot pick a run time early enough to meet it.
Set up a routine: every weekday, before [9:00 AM], compile new developments on [topic] into a summary of at most 10 items, each with its source link.
I want the result waiting when I open this chat at [9:00 AM], so pick a run time that's early enough, and tell me the final saved schedule and time zone.Tip 3: Write the prompt as an intent, and end it with the recipient and the "nothing new" rule
Every run re-reads the prompt you saved. If you write it as a rigid recipe (click here, then call that), the next run breaks as soon as a tool or page changes. It's better to describe the goal and the standard, and let the Bot work out the right method each time.
End the prompt with one line covering two things: who gets the result and where (for example, right here in this chat), and what to do when there's nothing new. In most cases, "if there's nothing new, stay quiet" saves you a lot of noise.
Save the following as the instruction for this routine:
Goal: every day, check whether [project or topic] has any new change worth my attention, judged by [your criteria].
Rules: use only primary sources and link each item; if a source can't be reached, report the failure instead of reusing old data; don't contact anyone on my behalf.
Delivery: send the result to me, here in this chat, conclusion first and details after; if there's nothing new, send nothing.Tip 4: Default to weekday daytime hours, and make one-off watches expire
When most people say "check daily" or "keep an eye on it", they mean "regularly", not "including weekends and 3 AM". So a good habit is to run routines on weekdays during waking hours by default, and only ask for weekends or nights when there's a real reason: an incident, a release, or a reminder about your own life (medication, pet care, a daily habit).
The other kind is a one-off watch: "tell me when this pull request merges" or "let me know when this item drops in price". These should end on their own. Once the condition is met, the routine reports once and deletes itself, or it carries a deadline and ends when the deadline passes, so it doesn't keep running and using up usage in the background.
Keep an eye on [what to watch] and tell me once, in this chat, when [condition] is true.
Rules:
1. Only check on weekdays between [9:00 AM and 6:00 PM], as rarely as still makes sense;
2. After the condition is met and you've told me, delete this routine;
3. If it still hasn't happened by [deadline], tell me that too, then delete it.Tip 5: Let events wake the Bot instead of polling
Besides schedules, a routine can start when something happens: a Slack message (the Bot is mentioned, a word or phrase appears, you react to a message, or any message), a GitHub event (such as a new pull request or a CI check passing or failing), a Linear, Sentry, or PagerDuty event, an email to the Bot's own address, or a webhook call. Only new activity counts: events from before the trigger existed don't start a run.
Event triggers rely on the matching app being connected to your account, which may need its own connection. The official docs stress keeping the rule narrow. Avoid listeners like "every message in a busy channel": they run often, spend usage, and make it more likely the Bot acts on irrelevant input.
For a webhook, open the routine on desktop: the Webhook section shows the URL and key, and you click a field to copy it. A 200 response means Grok Bot accepted the call and started a run, not that the Bot has finished. Check the Bot's chat for the result.
Set up an event-triggered routine: when a CI check fails on the main branch of [repo name], read the failure logs, find the most likely cause, and give me a short report in this chat (which check failed, your diagnosis, a suggested fix).
Don't change or push any code; diagnose only. Don't message me when checks pass.Limits you should know
- Passwords and cardsA routine run can't fill a saved login, a card, or other private details on its own, because that needs you in the chat. When it gets to that step, it pings you in chat so you can sign in or approve the fill.
- Confirmation cardsCreating or changing a routine may show a confirmation card with the schedule and instruction, and it saves only after you confirm, because a routine acts while you're away.
- Pause and resumeWhen you don't need a routine for a while, ask the Bot to pause it and resume it later instead of deleting it. On the phone, the matching control is the Active switch.
- Hiding isn't pausingHiding a Bot from the sidebar doesn't stop its routines. Only deleting the Bot removes them too.
Case study: a newsletter team that clocks in on its own
Continuing the fictional lineup from the last issue (not anyone's real setup): a small team publishes a weekly newsletter and maintains a side-project app. Here's a routine for each Bot:
| Bot | Routine | Trigger | Result goes to |
|---|---|---|---|
| Research Bot | Collect new material on the week's topic | Weekday mornings | Its own chat, nothing sent if nothing new |
| Writer Bot | Turn the reading list into a draft | One fixed morning each week | Reviewer Bot |
| Reviewer Bot | Check every claim against its source | When a draft arrives | You |
| Planner Bot | Summarize the week's requests and progress | Monday mornings | You |
| Builder Bot | Diagnose failed CI checks | When a main-branch check fails | You |
Highlight: a relay from schedule to event
- Research Bot → Writer Bot: reading list
- Writer Bot → Reviewer Bot: draft
- Reviewer Bot → Me: review verdict
- Reviewer Bot ⇢ Writer Bot: sent back if there are problems
Publishing stays with you. In the whole pipeline, you're only interrupted when a decision is needed.
You're this team's Planner Bot. Design a set of routines so Research Bot, Writer Bot, and Reviewer Bot relay one newsletter issue every week:
1. Which routine each Bot needs, whether it runs on a schedule or an event, and the suggested time;
2. Who gets each routine's result, and what happens when there's nothing new;
3. Which steps must wait for my confirmation.
Give me the plan as a table first; once I confirm, we'll create each routine in its own Bot.Community picks: common ways to use routines
This time we've rounded up a few common, easy-to-start routine patterns. They're general ideas, so swap in your own times and sources.
A weekday morning briefing
Shortly before you usually start work, combine your calendar, the important bits of unread email, and news from your field into one briefing. What matters is having it ready before you open the chat, not running it as early as possible.
First response when a CI check fails
When a main-branch check fails or a new pull request opens, the Bot reads the logs and drafts a diagnosis, so there's already a first read on the problem when you come online. Diagnosing without touching code is the safest way to start.
A dedicated inbox for notifications
Give a Bot its own email address and send certain services' notifications there. Each email triggers a routine that sorts it, pulls out the key points, and only tells you about what actually needs handling.
One-off "tell me when it happens" watches
Waiting for a pull request to merge, a page to update, or an item to drop in price? Make it a self-expiring routine: it reports once when the condition is met and then deletes itself, leaving nothing behind.
Life reminders that include weekends
Work routines default to weekdays, but reminders about your own life, like medication, pet care, or a daily habit, should run all seven days. Skipping the weekend there would be the bug.
Further reading
Share your own routine setups on X (scrub private details first) with #StudyGrokBot, and the best ones will be featured in future issues.
Exercise for this issue
Spend 15 minutes giving one of your Bots its first routine.
- Pick a taskChoose something you ask a Bot to do by hand every week, and run it once by hand first.
- Get a planSend it the Tip 1 prompt and get a routine plan back.
- Write the instructionRewrite it the Tip 3 way: state the intent, name the recipient, and add "send nothing if there's nothing new".
- Set the timeFollowing Tips 2 and 4, put it on weekday daytime hours, then check When to run and the time zone after it's created.
- Test onceChoose Test with a safe input, read the result in chat, and ask the Bot to edit it if it's not right.
Past issues and what's next
- Tomorrow
- Stay tuned for the next issue
- Repository
- https://github.com/Licoy/study-grokbot
Study GrokBot: GrokBot teaches you how to use GrokBot, updating daily with various GrokBot tips and tricks, as well as creations and gameplay shared by experts.
Quick answers
How is a routine different from a normal chat?
In a chat you send a message and the Bot works once. A routine saves a prompt with a trigger, and the Bot starts on its own when the time comes or the event happens. It runs in the cloud even when you're offline or your laptop is closed, and the result shows up in the Bot's chat.
How do I create a routine?
Just tell the Bot that should own the job, in chat, what to do, when, and who gets the result. For example, "Every weekday at 9:00 AM, summarize new support tickets in this chat." The Bot creates it, and it appears in that Bot's routines.
Which time zone does a schedule use, and why didn't it run right after I created it?
It uses the Timezone in Settings, under Bot. Auto-detect follows your computer. A new scheduled routine waits for its next scheduled time, so if you set "every day at 8:00 AM" at 8:05, the first run is tomorrow at 8:00 AM. To check it right away, open it and choose Test.
My routine didn't run. What should I check first?
Make sure it isn't Paused, then check that When to run shows the schedule or trigger and time zone you expect. Event triggers only count new activity from after the trigger was created.