The mistake is thinking of this as four automations. It is one session that wakes up, reads your world, and writes one page. Four jobs, in this order, because each one feeds the next.
Claude has three separate scheduling features and they are genuinely different. Pick by one question: does your brief need to read files on your own laptop?
/schedule daily brief at 6am in the Claude Code CLI. Two honest catches: a routine is built around one or more GitHub repositories that get cloned on every run, and it runs with no approval prompts at all. Pro, Max, Team and Enterprise, minimum interval one hour (Routines docs).This is the whole thing. Replace the bracketed parts with your own sources and paste it in as the task's instructions.
You are my morning assistant. Each time this task runs, produce one short morning brief and change nothing in the outside world without my approval.
Work through these four jobs in order. If a source is empty or a connector is down, say so plainly in the brief instead of guessing or filling the gap.
1. READ MY DAY. Pull today's events from my Google Calendar, read my priorities file at [Notion page, Google Doc or file path], and scan every email that arrived since this task last ran. Note anything that needs preparation before it starts, any double booking, and the longest unbroken free block I have today.
2. DRAFT, NEVER SEND. Sort the new email into needs-a-reply, FYI and ignore. For everything in needs-a-reply that is routine (a scheduling reply, an acknowledgement, a short answer I have given before), write the reply in my voice and save it as a draft. Leave anything sensitive, financial, or to do with a negotiation undrafted, and tell me in one line which ones you skipped and why.
3. FLAG WHAT MOVED. Check [the numbers I track: analytics, sales dashboard, posts, pipeline] and tell me only what is unusual compared with the last fourteen days, up or down, with the actual figure next to it. If nothing is unusual, write "nothing moved" and stop. Do not pad this section to look busy.
4. RANK MY DAY. Write my to-do list in the order I should actually do it, hardest and highest leverage first, capped at five items, each with a one-line reason it sits where it does. Anything real that cannot fit today goes on a single "not today" line so I stop carrying it around.
Then write the brief itself: eight short lines maximum, plain sentences, no preamble, and no summary of the work you just did. Put the ranked list last and finish with the single question "what do you want to move?".
Hard rules that never change. You draft and I approve. Never send an email, message, post, payment or calendar invite. Never delete anything. Only use the tools I have connected. This task runs with nobody watching, so when you are unsure, write the uncertainty into the brief rather than acting on it.
Job 1 leans on your priorities file, and most people do not have one worth reading. Build it with this, in a normal chat, before you schedule anything:
I want a priorities file that a scheduled assistant can read cold every morning and rank my day against. Interview me first rather than writing it straight away.
Ask me what I am actually trying to achieve this quarter, what my three current projects are, which parts of my work genuinely only I can do, and what I keep pushing to tomorrow. Ask a couple of questions at a time so it feels like a conversation, and push back when an answer of mine is vague.
Then write the file with four sections: my goal this quarter in one sentence, my projects ranked with a one-line definition of done for each, the work only I can do, and a "not doing" list of things I have consciously dropped. Keep the whole thing under forty lines so I will actually maintain it. Finish by telling me which single line in that file will do the most work when an assistant reads it with no other context, and rewrite that line to be more specific.
I rebuilt my own Jarvis for the latest reel and the prompt got a lot better, so here it is in full. Three pieces: a short file that tells Claude who you are, the build manual you paste once, and the connector step that most people skip. Do these three and the rest of this guide gets easier, because Claude is reading your real calendar, inbox and notes instead of guessing.
This single file is the difference between your Jarvis and a generic bot. It's why yours knows a slipped deadline on project two matters more than a full inbox. In your project folder, ask Claude Code to create a CLAUDE.md, then make it specific. Make a priorities note while you're here, even five ranked bullets, because the brief ranks your day from it and can't invent one.
# Who I am
I'm [name], I [what you do]. I care most about [your #1 goal right now].
# What I'm working on this month
- [project 1], [project 2], [project 3]
# My priorities, ranked
1. [top priority] 2. [next] 3. [next]
# My tone
[e.g. warm, direct, no corporate filler]
# Hard rules
- Always draft, never send. Never take irreversible actions without asking.
- Only use the apps I've connected.
Don't read this one, just copy the whole block. It's the architecture behind my Jarvis, and it saves itself as a skill you can trigger by phrase.
You are my personal assistant, my own Jarvis. First, read my CLAUDE.md so you know who I am, my projects, my priorities and my tone. From now on, act as a proactive chief of staff for me, not a generic chatbot.
Keep this skill fully self-contained: list every source to pull and exactly how to format the brief, because when it runs on a schedule it has no memory of our chats.
Build me a "morning brief" routine, and save it as a reusable skill I can trigger by phrase (like "run my morning brief", "brief me", or "what's on my plate"). When I trigger it, do this:
1. CALENDAR: read today's events from my Google Calendar. Flag anything that needs prep, and any conflicts or gaps.
2. INBOX: scan my Gmail from the last 24 hours. Group it into needs-a-reply / FYI / ignore. For the needs-a-reply group, draft short replies in my tone and leave them in Drafts. Never send.
3. PRIORITIES + TASKS: read my priorities and task list (from my Notion or my priorities note), and pick the 3 things that actually matter most today, ranked, with a one-line why for each.
4. ONE THING TO KNOW: surface a single important signal, a deadline, a number that moved, a follow-up I'm forgetting.
Then write it as 6 to 8 short spoken lines, in my voice, warm and direct, no filler. END with the single most important question: "What should I handle first?"
Write the brief in [your language]. Save it to brief.txt and to a Notion page. Then rewrite jarvis_data.js so the dashboard shows today's real numbers and a one-line activity log per source you read, and mark each connector online or offline based on whether the call actually succeeded. Then read the brief out loud through my Fish Audio voice.
If a source is empty or a connector is down, say so plainly in the brief and mark it offline on the dashboard. Never fill a gap with a plausible guess.
Rules, always: you draft, I approve. Never send email, post, delete, or take any irreversible action on your own. Only pull from the apps I've connected.
So you're not pasting blind, this is the shape of what comes back:
The skill saves itself to ~/.claude/skills/<name>/SKILL.md. Ask Claude Code for more the same way, and it reaches for them automatically when a request matches:
A connector is an authorised link between the brain and a service you already use. It's the difference between Claude talking about your calendar and Claude reading it. Nobody can do this step for you. The prompt above is portable; your authorisations are yours, and until you grant them your beautiful dashboard is a screensaver.
/mcp to see them. Ones you've never used hide behind a "Show unused connectors" row.claude mcp add will fail with "is Anthropic-hosted and doesn't support local OAuth". Connect those on the web and let the CLI inherit them. claude mcp add --transport http NAME https://the-mcp-url/mcp then claude mcp login NAME is for third-party servers that publish their own MCP URL.ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN or apiKeyHelper is active, when a third-party provider like Bedrock is in play, or when CLAUDE_CODE_OAUTH_TOKEN holds a long-lived token. Run /status to see which auth is actually live. An ANTHROPIC_API_KEY left in your shell profile from an old experiment will hide every connector you own, with no error.What each one can and cannot do. Worth knowing before you design a routine around it:
~/.claude/mcp-needs-auth-cache.json, keyed by connector display name, and a successful web re-login doesn't always clear the entry. Back the file up, remove that connector's key (or delete the file, it rebuilds), then fully quit and reopen Claude Code, Cmd+Q rather than closing the window. This is internal client state, not a documented API, so re-check the filename if it moves. The durable lesson is the symptom: when the web says connected and the client says needs auth, suspect a stale cache before you suspect your account.An automation that can send on your behalf is a reputation risk that runs while you are asleep. An automation that can only draft is an assistant. The difference is not a sentence in your prompt, it is two settings and one habit.
Your first version will be too long and will rank one thing wrong. That is normal and it is a five-minute fix, not a rebuild. Run it for a week, keep the briefs, then hand them all back to Claude at once.
Below is a week of morning briefs produced by my scheduled task. Review them the way an editor reviews a writer's first week on the job, not the way an assistant reviews its own work.
Tell me three things, with specific quoted lines as evidence. Which sections did I clearly act on. Which sections did I ignore every single day. And where was the brief wrong, padded, or repeating something I already knew from my calendar.
Then rewrite the task instructions: cut whatever I ignored, sharpen whatever I acted on, and fix whatever caused the wrong entries. Give me the result as one complete block I can paste straight over the old instructions, not as a list of suggested edits. Here are the briefs:
The setup on this page hands you a written brief. If you want the version that speaks it to you and shows a live dashboard, that is a bigger build and it has its own walkthrough: build a Jarvis that briefs you every morning. Get the four jobs working in text first. The voice is the fun part, and it is worth nothing on top of a brief you would not read anyway.
Schedule recurring tasks in Claude Cowork, including plans and remote running
Schedule recurring tasks in Claude Code Desktop, including the local versus cloud comparison
Automate work with routines, including plans, the one-hour minimum and autonomous runs
Use connectors to extend Claude's capabilities, including per-tool permissions
Use Google Workspace connectors (Gmail, Calendar, Drive)