Automate Your AI Second Brain
Schedule a Claude Code routine that writes a daily briefing to your vault.
Introduction
30 Second Summary
Imagine waking up every morning to a personal briefing that already knows your schedule, your priorities, and what fell through the cracks yesterday.
In this project, you will automate your AI second brain so that Claude Code runs a cloud routine every morning, reads your Google Calendar, checks your priorities, and writes a structured daily briefing directly into your Obsidian vault. No laptop required.
What You'll Build
A fully automated daily briefing system that turns your Obsidian vault into a personal task and control center, powered by Claude Code routines, MCP connectors, and slash commands.
By the end of this project, you'll have:
- A version-controlled vault backed up to GitHub with full history, plus Google Calendar connected as a live data source.
- A priorities.md file that Claude uses as the decision-making lens for every briefing, with built-in staleness detection.
- A /briefing slash command that generates a daily control center with three rigid sections: Schedule, Needs You, and Connections.
- A cloud routine that runs the briefing every morning automatically, even when your laptop is closed.
- Secret Mission: cut your briefing's token usage in half with three optimization techniques.
Are there any prerequisites?
This project is Part 2 of the AI Second Brain series. You should have completed Part 1 or have an equivalent setup with an Obsidian vault, CLAUDE.md, and .claude/commands/ slash commands already in place. A Claude Pro, Max, Team, or Enterprise subscription is required for cloud routines.
Get Your Vault Ready
Before you can automate anything, your vault needs a solid foundation. That means a working Obsidian vault with the right folder structure, a CLAUDE.md file that tells Claude Code how your vault works, and version control via Git and GitHub so your cloud routine can access the vault later.
In this step, you will either verify your Part 1 setup or do a condensed fresh setup, then connect your vault to a private GitHub repository.
In This Step, Get Ready To:
- Verify or create your Obsidian vault with the required folder structure and CLAUDE.md.
- Confirm Claude Code is installed and working.
- Initialize a Git repository and push your vault to a private GitHub repo.
Verify or Create Your Vault Setup
Your starting point depends on whether you completed Part 1 of this project series. Choose the tab that matches your situation.
I completed Part 1
If you completed Build an AI Second Brain with Claude Code, your vault should already have everything you need. Let's verify.
- Open Obsidian. In the left sidebar, confirm you have these four folders: raw/, wiki/, journal/, and content/.
- Look for a file called CLAUDE.md in the left sidebar. It should appear at the top level of your vault, not inside any folder. You can spot it sitting alongside your folders (like raw/ and wiki/) as a standalone file with a markdown icon.
- Confirm you have a .claude/commands/ folder with at least one slash command file inside. Folders starting with a dot are hidden by default, so you will not see this in Obsidian. Open your vault folder in Finder (macOS) and press Cmd+Shift+. to reveal hidden files, or in File Explorer (Windows) click View then check Hidden items.
If everything checks out, skip ahead to the next substep where you check your Claude Code installation.
Missing folders or files?
If any folders or files are missing, switch to the "I'm starting fresh" tab and follow the condensed setup. It only takes a few minutes. Help me figure out what's missing from my Part 1 setup.
I'm starting fresh
No worries. You only need the essentials for the briefing system to work. The briefing pulls from your calendar and priorities, so it works even with an empty wiki.
Install Obsidian
- Download and install Obsidian from obsidian.md.
- Open Obsidian. On the welcome screen, click Create new vault.
- In the Vault name field, type a name like second-brain.
- Click Browse next to the Location field and choose a folder you can easily find later (e.g., your home folder or Documents).
- Click Create. Obsidian opens your new empty vault.
Create the Folder Structure
- Open your terminal and navigate to your vault folder.
macOS
- Press Cmd+Space to open Spotlight Search.
- Type Terminal and press Enter.
cd ~/Documents/second-brain
Windows
- Press the Windows key on your keyboard.
- Type PowerShell and click Windows PowerShell from the results.
cd ~\\Documents\\second-brain
- Run the following command to create all the folders you need.
mkdir -p raw wiki/people journal content .claude/commands
What are these folders for?
- raw/ holds source files like meeting notes and documents.
- wiki/ holds structured knowledge pages and a people/ subfolder for people profiles.
- journal/ holds daily entries, including the briefings you will generate.
- content/ holds polished outputs like blog posts or reports.
- .claude/commands/ holds slash command files that Claude Code can execute.
Create a Minimal CLAUDE.md
CLAUDE.md is a special file that Claude Code reads automatically at the start of every session. It tells Claude how your vault is organized and what rules to follow.
- In your terminal, run the following command to create the CLAUDE.md file. This pastes the content directly into a new file at the vault root.
# Second Brain Vault
## Folder Structure
- raw/ — Source files (meeting notes, documents, imports)
- wiki/ — Structured knowledge pages
- wiki/people/ — People profiles
- journal/ — Daily entries and briefings
- content/ — Polished outputs (blog posts, reports)
## Rules
- Always write files in Markdown.
- Use [[wikilinks]] for internal links.
- Never delete files without asking first.
- When creating journal entries, use the format: journal/YYYY-MM-DD-<type>.md
That is all you need for now. You will add more rules to this file as the project progresses.
Need more detailed instructions?
This is the condensed version of the vault setup. For the full step-by-step walkthrough with detailed explanations, check out Part 1: Build an AI Second Brain with Claude Code.
Check Your Claude Code Installation
Regardless of whether you completed Part 1 or started fresh, you need Claude Code installed on your machine. Run the following command in your terminal to check.
claude --version
I see a version number
Claude Code is already installed and ready to go. Skip ahead to the next substep where you initialize Git.
Command not found
You need to install Claude Code. It requires Node.js and a Claude Pro, Max, Team, or Enterprise subscription.
- First, confirm Node.js is installed by running node --version. If you see "command not found," install Node.js from nodejs.org first.
- Run the following command to install Claude Code globally.
npm install -g @anthropic-ai/claude-code
- Navigate to your vault folder.
macOS
cd ~/Documents/second-brain
Windows
cd ~\\Documents\\second-brain
- Launch Claude Code to sign in. A browser window opens for you to authenticate with your Anthropic account.
claude
Once you see the Claude Code prompt, you are ready to continue.
Having trouble installing?
You need Node.js installed to run npm. If you see "command not found," install Node.js from nodejs.org first. Help me troubleshoot my Claude Code installation.
Initialize Git and Push to GitHub
Your cloud routine will clone your vault from GitHub every time it runs. That means your vault needs to be a Git repository pushed to a remote repo. Version control also gives your second brain full history, so you can see how your knowledge evolves over time.
Open your terminal and make sure you are in your vault folder. If you closed your terminal since the last substep, open it again and navigate back.
macOS
cd ~/Documents/second-brain
Windows
cd ~\\Documents\\second-brain
- Initialize a Git repository by running the following command.
git init
- Create a .gitignore file to exclude files that should not be tracked. Run the following command to create the file and add the exclusion rules in one step.
macOS
cat << 'EOF' > .gitignore
.obsidian/workspace.json
.DS_Store
.trash/
EOF
Windows
@"
.obsidian/workspace.json
.DS_Store
.trash/
"@ | Out-File -Encoding utf8 .gitignore
Why exclude these files?
.obsidian/workspace.json changes every time you open a pane in Obsidian, which creates noisy commits. .DS_Store is a macOS system file. .trash/ is Obsidian's recycle bin. None of these belong in version control.
- Stage all files and make your initial commit.
git add -A
git commit -m "Initial vault commit"
Now you need to create a repository on GitHub to push your vault to.
- Open github.com/new in your browser. Sign in to GitHub if you are not already logged in.
- In the Repository name field, type second-brain.
- Under the repository name, select Private. This is your personal knowledge base.
- Leave all checkboxes unchecked. Do not add a README, .gitignore, or license. You already have files locally.
- Click Create repository at the bottom of the page.
GitHub shows a quick setup page with a URL for your new repository. Copy the HTTPS URL (it looks like https://github.com/your-username/second-brain.git) and run these commands in your terminal.
git remote add origin [[YOUR_REPO_URL="https://github.com/YOUR_USERNAME/second-brain.git"]]
git branch -M main
git push -u origin main
Why does the cloud routine need GitHub?
Cloud routines run on Anthropic's infrastructure, not on your laptop. The routine clones your vault from GitHub at the start of every run, reads CLAUDE.md automatically, generates the briefing, and pushes the new journal entry back to the repo. You then pull the changes locally to see the briefing in Obsidian.
Verify Your Repo Is Live on GitHub
- Go back to your browser and refresh your GitHub repository page.
- Confirm you can see your vault files listed, including CLAUDE.md, .gitignore, and your folder structure.
What should I see?
Your GitHub repo should show your vault's files and folders. You might see empty folders missing (Git does not track empty directories), which is fine. The important thing is that CLAUDE.md and .claude/commands/ are visible.
Your vault is now version-controlled and backed up to GitHub. Next up, you will connect Google Calendar so Claude can read your schedule and build briefings around your real day.
Connect Google Calendar
Your vault is version-controlled and backed up to GitHub. Now it is time to give Claude access to your real-world schedule so the briefing knows what is actually happening today.
Google Calendar will be the first live data source feeding into your daily briefing. Claude will read your events, flag conflicts, and cross-reference attendees against your vault. To make this work, you will connect Google Calendar as an MCP connector, which is Anthropic's cloud-hosted integration system.
In This Step, Get Ready To:
- Connect Google Calendar as an MCP connector at claude.ai.
- Verify the connector works in Claude Code by pulling real calendar events.
- Understand why connectors work in cloud routines while local MCP servers do not.
Add the Google Calendar Connector
Connectors are managed through the Claude web interface, not through the CLI. You will authorize Claude to read your Google Calendar through a standard OAuth flow.
- Open claude.ai in your browser and sign in.
- Click your profile icon in the bottom-left corner, then select Settings.
- Select Connectors from the left sidebar.
- Find Google Calendar in the list of available connectors and click Connect.
- A Google sign-in window opens. Select the Google account that has your calendar events.
- Google asks you to grant permissions. Click Allow to let Claude read your calendar.
- The window closes and you are returned to the Connectors page. Google Calendar now shows a green Connected status.
What is a connector?
Connectors are Anthropic's cloud-hosted MCP integrations. They are managed at claude.ai and run on Anthropic's infrastructure. No Google Cloud project setup is needed on your end. You just authorize access and the connector handles the rest.
Don't see Google Calendar in the connectors list?
Connectors require a Claude Pro, Max, Team, or Enterprise plan. If you are on the free tier, you will need to upgrade before this step. Help me troubleshoot my connector setup.
Verify the Connector in Claude Code
The connector is set up in the web interface, but your daily briefing runs through Claude Code. You need to confirm that Claude Code can see and use the connector.
- Open your terminal (the same one you used in Step 1) and make sure you are in your vault folder.
macOS
cd ~/Documents/second-brain
Windows
cd ~\Documents\second-brain
- Start a Claude Code session.
claude
- Type /mcp and press Enter to list all connected MCP integrations.
/mcp
You should see Google Calendar listed as a connected connector in the output.
- Test the connector with a real query. Type the following prompt into Claude Code and press Enter:
What's on my calendar today?
Claude may ask you to approve the calendar tool call. If you see a permission prompt, type y and press Enter to allow it.
I see my real calendar events
Your Google Calendar connector is working. Claude can read your schedule and will use this data in your daily briefing.
I see an error or no events
If Claude returns an error or says it cannot access your calendar, try these steps:
- Go back to claude.ai. Click your profile icon, then Settings, then Connectors. Confirm Google Calendar shows as connected.
- Exit Claude Code by typing /exit and pressing Enter. Then start a fresh session by running claude again. Connectors sometimes need a session restart to appear.
- If you genuinely have no events today, try typing "What's on my calendar this week?" instead.
Still stuck? Help me debug my Google Calendar connector in Claude Code.
Understand How Connectors Work in Routines
This distinction matters for the rest of the project. In a later step, you will create a cloud routine that runs your briefing every morning on Anthropic's servers. The routine needs to read your calendar without your laptop being open.
This is where the difference between connectors and local MCP servers becomes critical.
Why connectors instead of local MCP servers?
Local MCP servers (added via claude mcp add) run as processes on your machine. They only work when your computer is on and Claude Code is running locally. Cloud routines cannot access them.
Connectors are managed at claude.ai and run on Anthropic's cloud infrastructure. They work in both interactive Claude Code sessions and cloud routines. When you create a routine later, all your connected connectors are included automatically. No extra setup needed.
Because you connected Google Calendar as a connector (not a local MCP server), your morning briefing routine will be able to read your schedule even while your laptop is closed.
Your vault now has a live data source feeding into it. Next up, you will create the priorities document that tells Claude what actually matters to you, so the briefing is not just a calendar dump but a personalized command center.
Create Your Priorities Document
Your briefing needs a decision-making lens. Without one, Claude would just dump your calendar and recent files into a document with no sense of what actually matters to you. priorities.md is that lens. Claude will interview you to build it, and every future briefing will filter through it to surface what deserves your attention.
In This Step, Get Ready To:
- Run an interactive interview with Claude to build a personalized priorities.md file.
- Review and commit your priorities document to version control.
- Add staleness detection to CLAUDE.md so your priorities never silently drift.
Run an Interactive Priorities Interview
Instead of writing priorities.md yourself, you will let Claude interview you. This produces a document written in your own language, grounded in your actual work, not a generic template. Claude will ask you 4-5 questions one at a time and then compile your answers into a structured file.
- Open your terminal and make sure you are in your vault folder. If you closed your terminal since the last step, navigate back to your vault first.
- If you already have a Claude Code session running, you can use it. Otherwise, start a new one by running claude in your terminal and pressing Enter.
- Copy the entire prompt below, paste it into the Claude Code input area, and press Enter to start the interview.
Interview me to build my priorities.md file. Ask me the following questions ONE AT A TIME. Wait for my answer before asking the next question.
1. What are your top 3 priorities right now?
2. What active projects need regular check-ins?
3. Who are the key people you work with and what matters in those relationships?
4. What does "needs your attention" mean to you? (deadlines? blocked tasks? stale items?)
5. What do you never want to forget or lose track of?
After all questions are answered, write the results to priorities.md at the vault root. Use this format:
---
last-reviewed: YYYY-MM-DD (today's date)
review-interval: 14
---
Then organize my answers into clear sections: Priorities, Active Projects, Key People, Attention Triggers, and Never Forget. Use my own words, not generic language.
What Does This Prompt Do?
This prompt instructs Claude to run a structured interview rather than generating a generic priorities file. The key detail is "ONE AT A TIME." Without this, Claude tends to dump all five questions at once, which leads to rushed, shallow answers.
The YAML frontmatter at the top of the file (last-reviewed and review-interval) is metadata that Claude will check before every briefing. You will wire up that check in the last substep.
- Answer each question thoughtfully as Claude asks them. Take your time. The more specific you are, the more useful your briefings will be.
- When Claude asks you to approve writing the file, type y and press Enter to allow it.
- Wait for Claude to finish writing priorities.md to your vault root.
Pro tip: be specific
"Ship the API" is vague. "Ship the v2 payments API before the July 15 partner launch" gives Claude something concrete to flag in your briefings. Name real projects, real people, and real deadlines.
Review and Commit Your Priorities
Claude wrote the file, but you own it. Open it in Obsidian and make sure it actually sounds like you.
- Switch to Obsidian. In the left sidebar, you should see a new file called priorities.md at the top level of your vault. Click on it to open it.
- At the very top of the file, you should see a block of text between two --- lines. This is the YAML frontmatter. Confirm it includes last-reviewed with today's date and review-interval: 14.
- Read through each section below the frontmatter. Edit anything that feels generic or does not match your actual priorities.
- Press Cmd+S (macOS) or Ctrl+S (Windows) to save the file.
Now commit the file to Git so it is tracked in your vault's version history.
- Switch back to your terminal. Make sure you are still in your vault folder and run the following commands.
git add priorities.md
git commit -m "Add priorities.md from Claude interview"
git push
What Should I See?
Your terminal should confirm the commit and push succeeded. You can verify by checking your private GitHub repository. priorities.md should appear in the repo's file list.
Add Staleness Detection to CLAUDE.md
Priorities change. If you wrote priorities.md three weeks ago and never updated it, your briefings would be filtering through outdated context. Staleness detection solves this by having Claude check the last-reviewed date every time it generates a briefing.
- Switch to Obsidian and click on CLAUDE.md in the left sidebar to open it.
- Scroll to the very bottom of the file.
- Paste the following rule after the last line.
## Priorities Staleness Check
Before generating any briefing, read the YAML frontmatter in priorities.md.
Compare today's date to the `last-reviewed` date.
If the difference exceeds `review-interval` days, add a "Priorities Review Needed" callout
at the TOP of the briefing with this message:
> Your priorities were last reviewed on [date]. Run the priorities interview
> again to make sure your briefings reflect what matters to you right now.
Do NOT skip the rest of the briefing. Generate it as normal, but include the callout.
Why Put This in CLAUDE.md?
CLAUDE.md is read automatically at the start of every Claude Code session, including cloud routine runs. By placing the staleness rule here, it applies to both your interactive /briefing command and the automated routine you will set up in the next step. You do not need to duplicate the rule anywhere.
- Press Cmd+S (macOS) or Ctrl+S (Windows) to save CLAUDE.md.
- Switch back to your terminal and run the following commands to commit and push the update.
git add CLAUDE.md
git commit -m "Add priorities staleness detection rule"
git push
Having Trouble with Git?
If your push fails with an authentication error, your GitHub credentials may have expired. Help me fix my GitHub push authentication.
Your vault now has a personalized priorities document with built-in expiration. Every briefing Claude generates will pass through this lens, and if your priorities go stale, you will know about it immediately. Next up, you will build the /briefing slash command that puts all of this to work.
Build and Run Your Daily Briefing
You have priorities in place and a calendar connected. Now it is time to build the core deliverable of this project: a /briefing slash command that turns your vault into a daily task and control center. This is not a summary of your day. It is a command center with three rigid sections that tells you exactly what needs your attention, what fell through the cracks, and what context you need for the people you are meeting.
In This Step, Get Ready To:
- Create the /briefing slash command with a three-section structure: Schedule, Needs You, and Connections.
- Run the briefing interactively and verify the output in Obsidian.
- Commit the new command and journal entry to Git and push to GitHub.
Create the Briefing Slash Command
The /briefing command lives in your .claude/commands/ folder, just like the slash commands from Part 1. When you run it, Claude reads the prompt file and executes the instructions against your vault. The key to a useful briefing is a rigid structure. Three sections, every time, no variation.
- Open your terminal and make sure you are in your vault folder.
- Run the following command to create the file. This creates briefing.md inside the .claude/commands/ folder that already exists in your vault.
macOS
touch .claude/commands/briefing.md
open .claude/commands/briefing.md
Windows
New-Item .claude\commands\briefing.md -Force
notepad .claude\commands\briefing.md
- The file opens in your default text editor. Paste the entire prompt below into the file, then save and close it.
Generate a daily briefing and write it to journal/$(date +%Y-%m-%d)-briefing.md.
The briefing has EXACTLY three sections. Do not add, remove, or rename sections.
## 1. Schedule
- Pull today's calendar events using the Google Calendar connector.
- Flag any time conflicts or back-to-back meetings (less than 15 minutes between end and start).
- For each meeting, check if any attendee has a page in wiki/people/ or if the meeting topic matches a priority in priorities.md. If so, note what prep is needed.
## 2. Needs You
This section has two parts:
### Loose Ends
- Find yesterday's briefing file (journal/ folder, yesterday's date).
- List any items from yesterday that were flagged but not resolved.
- List any action items that were not checked off.
- Check if priorities.md staleness was flagged yesterday and is still unresolved.
- If no previous briefing exists, write: "No previous briefing found. This is your first run."
### Fresh Signals
- Read wiki/log.md and surface entries from the last 48 hours that match priorities.md.
- Check wiki/index.md for recently updated pages.
- Surface anything that connects to today's schedule or active priorities.
## 3. Connections
- Cross-reference today's calendar attendees against:
- wiki/people/ pages
- Recent log.md mentions
- raw/ file metadata (meeting notes mentioning the same person)
- If a match is found, surface the relevant context under that person's name.
- If no wiki page exists for a frequent attendee, suggest creating one.
Before generating the briefing, check the last-reviewed date in priorities.md frontmatter. If it is older than the review-interval, add a "Priorities Review Needed" callout at the very top of the briefing.
Why Three Rigid Sections?
Without a fixed structure, AI-generated briefings tend to drift into long, rambling summaries. By locking the output to Schedule, Needs You, and Connections, every briefing is scannable in under a minute. You always know exactly where to look for what you need.
What Does the Loose Ends Section Do?
The Loose Ends check is what makes this briefing compound over time. Each morning, Claude looks at yesterday's briefing and surfaces anything that was flagged but never resolved. Without this, your briefing is forward-looking only and things slip through the cracks. With it, your vault closes the loop daily.
Test the Briefing Interactively
Before automating anything, you want to see the briefing run in front of you. This lets you verify the output, catch formatting issues, and confirm that the Google Calendar connector is returning real data.
- If you have a Claude Code session open, exit it by typing /exit and pressing Enter.
- Start a fresh session by running claude in your terminal and pressing Enter. Make sure you are still in your vault folder.
Pro tip: restart to load new commands
Claude Code reads the .claude/commands/ folder at session startup. If you created briefing.md while a session was already running, the /briefing command will not appear until you restart.
- Type /briefing and press Enter.
Claude will read your priorities.md, pull your calendar events, check for yesterday's briefing, and write the result to a new file in journal/. This may take a minute as Claude works through each section. If Claude asks you to approve any tool calls or file writes, type y and press Enter each time.
- Switch to Obsidian. In the left sidebar, click on the journal/ folder to expand it.
- Click on today's briefing file (named something like 2025-07-11-briefing.md) to open it.
What Should I See?
Your briefing should have three clearly labeled sections. The Schedule section should show real calendar events from today. The Needs You section should either reference yesterday's briefing or say "No previous briefing found. This is your first run." The Connections section should list any attendees it found context for, or suggest creating wiki pages for people it could not match.
Review the output carefully. If a section looks empty or wrong, check that the relevant source data exists. An empty Schedule means your calendar has no events today. An empty Connections section means no attendee names matched your vault content. Both are valid results.
Briefing Missing Calendar Events?
If the Schedule section is empty but you know you have events today, your Google Calendar connector may not be responding. Type /mcp and press Enter to check that the connector still shows as connected. You can also test it directly by typing "What's on my calendar today?" in the same session.
If the connector is not listed, go back to claude.ai, click your profile icon, then Settings, then Connectors to reconnect it. Help me troubleshoot my Google Calendar connector in Claude Code.
Commit and Push to GitHub
Your cloud routine will clone this repository when it runs. That means the briefing.md command file and today's journal entry both need to be pushed to GitHub before you set up the routine in the next step.
- Switch back to your terminal. Make sure you are still in your vault folder.
- Run the following commands to stage, commit, and push your new files.
git add .claude/commands/briefing.md journal/
git commit -m "Add /briefing command and first journal entry"
git push origin main
What Does This Command Do?
This stages two things: the new slash command file and the entire journal/ folder (which now contains your first briefing). The commit captures both in a single snapshot, and the push sends them to your private GitHub repository.
- Open your browser and go to your GitHub repository page. Verify you can see both the .claude/commands/briefing.md file and the journal entry in the latest commit.
Your briefing works. Your vault is backed up. Next up, you will schedule a cloud routine that runs this briefing every morning automatically, even when your laptop is closed.
Schedule Your Briefing as a Cloud Routine
Your /briefing command works perfectly when you run it manually. But the whole point of a second brain is that it should work for you. Cloud routines let Claude Code run tasks on Anthropic's infrastructure on a schedule, even when your laptop is closed. In this step, you will set up a routine that generates your briefing every morning and commits it directly to your vault's GitHub repo.
In This Step, Get Ready To:
- Create a cloud routine at claude.ai/code/routines with your full briefing prompt.
- Schedule the routine to run every morning and verify your Google Calendar connector is included.
- Test the routine with a manual run and pull the results into your local vault.
Create the Routine at claude.ai/code/routines
Cloud routines do not execute .claude/commands/ files directly. Instead, a routine runs the prompt you paste into its configuration. It clones your repo each run (which means CLAUDE.md is still read automatically), but the trigger is the prompt field, not a slash command invocation. This means you need to paste the full briefing instructions into the routine's prompt.
- Open claude.ai/code/routines in your browser.
- Click New routine in the top-right corner of the page.
- In the Name field at the top, type Daily Briefing.
- Find the large Prompt text area. Open your .claude/commands/briefing.md file in a text editor, copy the entire contents, and paste them into this prompt field.
- Scroll down to the Repository section. Click the dropdown and select your vault's GitHub repository (e.g., second-brain).
- Check the box labeled Allow unrestricted branch pushes for this repo.
- Under Cloud environment, select Default.
Why allow unrestricted branch pushes?
By default, routines can only push to branches prefixed with claude/. This is a safety measure for production codebases. Your vault is a personal knowledge base, not production code. You want journal entries committed directly to main so they appear immediately when you git pull. No pull requests needed for your own notes.
Configure the Trigger and Connectors
The routine needs two things to work: a schedule that fires it every morning, and access to your Google Calendar connector so it can read your events.
- Scroll down to the Trigger section. Select Scheduled and set it to run daily at your preferred morning time (e.g., 7:00 AM).
- Scroll to the Connectors section. Verify that Google Calendar appears in the list. All your connected connectors are included by default.
- If you see connectors you do not need (like Gmail or Slack), click the X next to them to remove them from this routine.
- Click Save at the bottom of the page.
Pro tip: schedule stagger
Routine runs may start a few minutes after the scheduled time. The offset is consistent per routine, so if your first run starts at 7:03 AM, future runs will too. The minimum interval for scheduled triggers is 1 hour.
Test the Routine With a Manual Run
Before trusting the routine to run while you sleep, you should verify it works end to end. A manual run triggers the routine immediately and lets you watch Claude work in real time.
- Go to claude.ai/code/routines in your browser. Click on your Daily Briefing routine to open its detail page.
- Click the Run now button.
- A session panel opens showing Claude working. Click on it to watch the progress. The routine runs as a full Claude Code cloud session with no permission prompts or approval gates.
Once the session completes, verify the results from two angles: the GitHub repo and your local vault.
- Open your GitHub repository page in your browser. Look for a new commit on main containing a journal entry file.
- Switch to your terminal. Make sure you are in your vault folder and run the following command to download the new briefing.
git pull
- Switch to Obsidian. Click on the journal/ folder in the left sidebar and open the new briefing file with today's date.
- Verify all three sections are populated: Schedule shows real calendar events, Needs You references your earlier interactive test briefing in its Loose Ends section, and Connections cross-references attendees against your vault.
What should I see?
The routine's commit appears under your GitHub username because actions run under your identity. The briefing file should look identical to the one you generated interactively in Step 4. The key difference is that the Loose Ends section should now reference your earlier test briefing, flagging any items that were not resolved.
What is a cloud routine?
A cloud routine is a Claude Code session that runs autonomously on Anthropic's infrastructure. It clones your repo, reads your CLAUDE.md, executes the prompt, and pushes any changes back to GitHub. Each run draws from your subscription's daily token allowance, the same as an interactive session. You can monitor usage at claude.ai/settings/usage.
Routine failed or no commit appeared?
Click on the session from the routine's detail page to see what went wrong. Common issues include the Google Calendar connector not being included, the prompt referencing a slash command name instead of containing the full instructions, or the repository not having unrestricted branch pushes enabled. Help me debug my routine.
Your second brain now runs on autopilot. Every morning, a fresh briefing will be waiting in your vault before you even open your laptop. Next up, the Secret Mission challenges you to make this system leaner and faster by cutting token usage in half.
Secret mission
Cut Your Briefing's Token Usage in Half
Your briefing works, but it reads everything in your vault on every run. That burns through your daily token allowance fast. In this mission, you'll teach Claude to be surgical about what it reads, cutting token usage dramatically with three techniques: .claudeignore, a lean CLAUDE.md, and targeted file reads.
Before you go
Your cloud routine runs on Anthropic's infrastructure and counts against your Claude subscription's daily token allowance. There are no additional charges beyond your existing subscription, but each morning run consumes tokens just like an interactive session would.
Decide whether to keep your resources running, pause them to come back later, or delete them entirely.
Resources you used:
- Cloud routine at claude.ai/code/routines (runs on your Claude subscription).
- GitHub repository (free, private).
- Google Calendar connector (free, connected at claude.ai Settings > Connectors).
- Local Obsidian vault and priorities.md file.
- Slash commands in .claude/commands/ (stored locally in your vault).
Keep everything running
No action needed. Choose this if you want your daily briefing to keep running every morning automatically.
- Your routine runs daily at the time you configured. Each run consumes tokens from your subscription's daily allowance.
- Monitor your usage at claude.ai/settings/usage to make sure daily briefings fit within your plan's limits.
- You can also check your routine's daily run cap at claude.ai/code/routines.
- Remember to git pull each morning to see the latest briefing in Obsidian.
Pause - I'll come back to this later
Stop the routine from running while keeping all your configuration intact. You can toggle it back on any time.
- Go to claude.ai/code/routines.
- Open your Daily Briefing routine.
- Toggle the schedule off. The routine keeps its prompt, repository, and connector settings.
- Your vault, GitHub repo, Google Calendar connector, and slash commands all remain untouched.
- To resume, go back to the routine and toggle the schedule on again.
Delete - I don't want to use this again
Remove the cloud routine entirely. Your vault, GitHub repo, and connector remain untouched.
- Go to claude.ai/code/routines and delete the Daily Briefing routine.
- Past briefing sessions stay in your session list at claude.ai.
- To disconnect Google Calendar, open claude.ai.
- Click your profile icon, then select Settings.
- Select Connectors and remove the Google Calendar connector.
- To delete the GitHub repo, open your repository's Settings page.
- Scroll down to Danger Zone and click Delete this repository.
- Your local Obsidian vault and all its files remain on your machine. Delete the vault folder manually if you no longer need it.
Mission accomplished
Your second brain now works while you sleep. Every morning, a structured briefing is waiting in Obsidian before you even open your laptop. One vault. One place to check. A system that compounds every single day.
You've learned how to:
- Version-controlled your vault with Git and GitHub, giving your second brain full history, backup, and the ability for cloud routines to clone your vault on every run.
- Connected Google Calendar as an MCP connector and built a priorities.md file through an interactive Claude interview, complete with staleness detection so your priorities never silently drift.
- Built a /briefing slash command with a rigid three-section structure (Schedule, Needs You, Connections) and scheduled it as a cloud routine that runs every morning on Anthropic's infrastructure. No laptop required.
- Cut your briefing's token usage in half with .claudeignore, a lean CLAUDE.md, and targeted file reads that keep Claude surgical about what it touches.
Ready to quiz yourself?