Build an AI Second Brain with Obsidian
Connect Claude Code to Obsidian to automate daily notes and task management.
Introduction
30 Second Summary
Your notes live in one app, your tasks in another, and that article you saved last week is somewhere you will never find again. What if an AI could turn all of that chaos into a clear, organized system?
In this project, you will build a personal second brain using Obsidian and Claude Code. Each morning, you run a single command and get a clear briefing on everything that needs doing across every area of your life.
What You'll Build
An Obsidian vault that stores all your tasks, notes, and ideas in one place, with Claude Code handling the daily organizing through customizable slash commands.
By the end of this project, you'll have:
- A working Obsidian vault with a visual task dashboard that shows your tasks grouped by life area and due date.
- Claude Code connected to your vault with customizable /goodmorning and /goodnight slash commands that automate your daily workflow.
- Your vault synced to GitHub for backup and future mobile access.
- Secret Mission: Set up mobile capture so you can write notes from your phone and have Claude process them on your Mac.
Are there any prerequisites?
You need a Mac computer with internet access. A Claude Pro subscription ($20/month) is required for Claude Code.
No prior experience with Obsidian, Git, or Claude Code is needed.
Set Up Obsidian and Your Plugins
Every second brain starts with a home base. Obsidian is a free note-taking app that stores everything as plain text files on your computer.
In this step, you will install Obsidian, create your vault, and add two plugins that turn it into a task management system.
In this step, get ready to:
- Install Obsidian and create a new vault on your Mac.
- Install the Tasks plugin for tracking to-dos across your vault.
- Install the Tasks Overview plugin for a visual task dashboard.
Install Obsidian and create your vault
Obsidian stores all your notes as plain .md files inside a folder called a vault. Because they are regular files on your computer, you own them completely.
- Open your browser and go to obsidian.md.
- Click Get Obsidian for free to download the macOS installer.
- Open the downloaded .dmg file.
- Drag Obsidian into your Applications folder.
- Press Cmd+Space to open Spotlight search.
- Type Obsidian and press Enter to open it.
Obsidian not opening?
If macOS blocks the app with a security warning, go to System Settings, then Privacy & Security.
Click Open Anyway next to the Obsidian message.
Help me open Obsidian on my Mac
Obsidian opens and asks you to create or open a vault.
- Click Create new vault.
- Enter a name for your vault. Pick something that feels like yours: my-brain, second-brain, or even your own name.
- For the location, select your Documents folder.
- Click Create.
Obsidian opens with an empty vault. You should see a blank workspace with a sidebar on the left.
What is a vault?
A vault is just a folder on your computer. Every note you create becomes a .md (Markdown) file inside that folder.
Unlike cloud-only note apps, you always have direct access to your files. This is what makes it possible for Claude Code to read and write your notes later.
Install the Tasks plugin
Out of the box, Obsidian checkboxes are just static text. The Tasks plugin upgrades them so you can add due dates, priorities, and recurring schedules to any task in your vault.
- Click the gear icon in the bottom-left corner to open Settings.
- Select Community plugins in the left sidebar.
Obsidian shows a warning that community plugins are not reviewed by the Obsidian team. This is normal.
- Click Turn on community plugins to disable Restricted Mode.
- Click Browse to open the plugin store.
- Search for Tasks in the search bar.
- Find the result by obsidian-tasks-group.
- Click Install.
- Click Enable.
Now configure the hotkey that makes checking off tasks work properly across your vault.
- Close the plugin browser to return to the main Settings screen.
- Select Hotkeys in the left sidebar.
- Search for Toggle Done in the filter bar.
- Find Tasks: Toggle Done in the results.
- Click the + icon next to it.
- Press Cmd+Enter on your keyboard to assign the hotkey.
You should see Cmd+Enter listed next to Tasks: Toggle Done.
Why set this hotkey?
Obsidian has a built-in "Toggle checkbox status" command, but it does not understand task metadata like due dates and completion timestamps. The Tasks plugin's version marks the task complete AND records when you finished it.
🙋♀️ Hotkey conflict?
If Obsidian warns that Cmd+Enter is already assigned to another command, click the existing assignment and remove it first. Then assign it to Tasks: Toggle Done.
Help me set up the Tasks hotkey in Obsidian
Install the Tasks Overview plugin
The Tasks plugin tracks your to-dos, but you still need a way to see them all in one place. The Tasks Overview plugin adds a sidebar panel that groups every task in your vault by due date, priority, or source file.
- Go back to Settings.
- Select Community plugins in the left sidebar.
- Click Browse to open the plugin store.
- Search for Tasks Overview.
- Find the result by LBerts.
- Click Install.
- Click Enable.
- Close Settings.
You should now see a checkmark icon in the left sidebar ribbon.
- Click the checkmark icon to open the Tasks Overview sidebar panel.
The panel opens on the right side of your screen. It is empty because you have not created any tasks yet.
Don't see the checkmark icon?
Make sure you clicked Enable after installing the plugin, not just Install. You can also open the panel by pressing Cmd+P and searching for Tasks Overview: Open Tasks Overview.
Help me find the Tasks Overview sidebar in Obsidian
Your vault is set up and your task management plugins are ready. Next up, you will add real tasks and watch them appear on your dashboard.
Build Your Task System
Your vault is set up with the Tasks and Tasks Overview plugins ready to go. Right now, though, your vault is completely empty.
An empty vault helps no one. In this step, you'll fill it with real tasks from your actual life, organized by areas and projects, and watch them appear instantly on a visual dashboard.
In this step, get ready to:
- Create notes for your life areas and projects with real tasks.
- See all your tasks organized on the Tasks Overview dashboard.
- Learn the full menu of task metadata options.
Create your first project and area files with tasks
Before writing any tasks, you need to decide how to organize your life inside this vault. Everything falls into two categories: areas and projects.
What are areas and projects?
Areas are ongoing responsibilities that never end. Think health, career, finances, or relationships.
Projects are things with an end date. Think "move apartments" or "launch portfolio website." Once a project is done, it's done.
Pick 2-3 areas and 1-2 projects from your own life. Here are some common areas to choose from:
- Health (exercise, diet, sleep, medical).
- Career (work tasks, skill building, job search).
- Finances (budgeting, investing, bills).
- Relationships (family, friends, networking).
- Learning (courses, books, certifications).
- Creative (writing, music, art, side projects).
- Home (chores, repairs, organization).
No two second brains look the same. Pick the areas that matter most to you right now.
Now create a folder and note for each one. Start with the areas folder.
- In the left sidebar of Obsidian, right-click on any empty space.
- Select New folder.
- Type areas and press Enter.
- Right-click the new areas folder and select New note.
- Name the note after your first life area (e.g., health, career, finances).
- Repeat to create a second area note inside the same areas folder.
- Right-click in the sidebar again and create another folder called projects.
- Inside projects, create a note for one active project (e.g., launch-portfolio, move-apartments).
You should now have 3 notes total: two area notes and one project note. Open your first area note and add 2-3 tasks using the template below:
- [ ] [[TASK_1="your first task e.g. Go for a 30-minute run"]] 📅 [[DATE_1="today's date e.g. 2026-05-01"]] #[[AREA_TAG="your area tag e.g. health"]]
- [ ] [[TASK_2="your second task e.g. Meal prep for the week"]] 📅 [[DATE_2="a date this week e.g. 2026-05-04"]] #[[AREA_TAG="your area tag e.g. health"]]
- [ ] [[TASK_3="your third task e.g. Book dentist appointment"]] 📅 [[DATE_3="a date next week e.g. 2026-05-08"]] #[[AREA_TAG="your area tag e.g. health"]]
What does this format mean?
- - [ ] creates an unchecked task that the Tasks plugin tracks across your entire vault.
- 📅 followed by a date (YYYY-MM-DD format) signals a due date to the Tasks plugin.
- #your-tag groups the task by life area or project. You'll use these tags later to filter your dashboard.
The Tasks plugin auto-suggests these emojis as you type, so you do not need to memorize them.
- Open each of your other notes (your second area and your project) and add 2-3 tasks to each one following the same format.
- Use different due dates for each task: some today, some this week, some next week.
- Use a different tag for each file that matches its area or project name (e.g., #career, #launch-portfolio).
Obsidian auto-saves your notes, so there is nothing extra to save. Click the checkmark icon in the left ribbon to open the Tasks Overview sidebar. You should see all your tasks from every file listed in the panel.
Tasks not showing up in the sidebar?
- Make sure each task line starts with exactly - [ ] (dash, space, open bracket, space, close bracket). A missing space breaks the format.
- Check that the date uses the YYYY-MM-DD format. Dates like "May 5" or "5/1/2026" are not recognized.
- Confirm both the Tasks plugin and Tasks Overview plugin are enabled in Settings then Community Plugins.
Still stuck? Help me figure out why my tasks are not appearing in the Tasks Overview sidebar.
See your tasks on the dashboard
You have tasks spread across three different files. The Tasks Overview sidebar pulls them all into one place with three different views you can switch between.
- Click the checkmark icon in the left ribbon to open the Tasks Overview sidebar (if it is not already open).
- Look at the top of the sidebar panel. You will see three view mode buttons.
- Click the first view to see Due Date view. Your tasks are grouped into Overdue, Today, This Week, and Later.
- Click the second view to see Priority view. Tasks are grouped from Highest to Lowest priority.
- Click the third view to see Page view. Tasks are grouped by which file they live in, so you see them organized by area and project.
What do the three views show?
- Due Date view answers "What needs doing today?" Tasks are sorted into time buckets: Overdue, Today, This Week, Later, and No Date.
- Priority view answers "What matters most?" Tasks are sorted from Highest to Lowest priority.
- Page view answers "What does each project need?" Tasks are grouped by the note they live in.
- Pick any task in the sidebar and click its checkbox to mark it done.
- Open the source note for that task (click the task text in the sidebar to jump to it).
The task is now checked off in the source file too. Every change in the sidebar reflects instantly in the note, and every change in a note reflects in the sidebar.
Dashboard still empty?
- Close the Tasks Overview sidebar and reopen it by clicking the checkmark icon in the left ribbon.
- If you still see nothing, try restarting Obsidian completely. Close the app and reopen your vault.
Need more help? My Tasks Overview sidebar is not showing any tasks even though I added them to my notes.
Understand the task format options
So far you have used due dates and tags. The Tasks plugin supports more metadata that you can add to any task line.
- Due date: 📅 2026-05-05 marks when a task is due.
- Scheduled date: ⏳ 2026-05-03 marks when you plan to start working on a task.
- High priority: 🔼 bumps a task to the top of the Priority view.
- Low priority: 🔽 pushes a task to the bottom.
- Recurring: 🔁 every week creates a new copy of the task each time you complete it.
Start simple
You do not need all of these right away. Due dates and tags are enough to get real value from the system. Add priority or recurring metadata later, only when you feel the need for it.
The key principle: keep it simple enough that you will actually use it every day.
Your vault has real tasks, real areas, and a working dashboard that shows everything at a glance. Next up, you'll build a dedicated today.md dashboard with live query blocks for detailed morning planning.
Build Your Task Dashboard Note
Your tasks live across multiple area and project files, and the Tasks Overview sidebar gives you a quick at-a-glance view of everything. That sidebar is perfect for checking off tasks on the fly.
For deeper morning planning, you need something more detailed. In this step, you'll create a today.md dashboard note with live query blocks that pull tasks from your entire vault and group them by life area and due date.
In this step, get ready to:
- Create a dashboards folder and a today.md dashboard with live task queries.
- Customize your query blocks to match your priorities.
- Pin the dashboard for instant daily access alongside your sidebar.
Create the dashboards folder and today.md
The Tasks plugin supports query blocks inside any note. A query block is a fenced code block with the language tasks that automatically finds and displays matching tasks from across your vault.
- In the Obsidian file explorer sidebar on the left, right-click in the empty space below your existing folders.
- Select New folder.
- Name the folder dashboards and press Enter.
- Right-click the new dashboards folder and select New note.
- Name the note today and press Enter. Obsidian creates today.md and opens it in the editor.
- Copy the full dashboard template below and paste it into today.md, replacing any default content:
---
type: dashboard
---
# Today
## Due Today
```tasks
not done
due today
group by tags
```
## Overdue
```tasks
not done
due before today
group by tags
sort by due
```
## This Week
```tasks
not done
due after today
due before next week
group by tags
sort by due
```
## All Open Tasks
```tasks
not done
group by filename
sort by due
limit 50
```
What do these query blocks do?
Each ```tasks block is a live query. It searches your entire vault for tasks that match the filters inside it. The dashboard has four sections:
- Due Today finds all incomplete tasks due today and groups them by their #tags, so you see tasks organized by life area or project.
- Overdue catches anything you missed, sorted by how long it has been overdue.
- This Week shows upcoming tasks so you can plan ahead.
- All Open Tasks groups every incomplete task by filename. This shows which files have the most open work.
These queries update automatically. Add or complete a task anywhere in your vault and the dashboard reflects it instantly.
- Press Cmd+S to save today.md.
- Switch to Reading View by clicking the book icon in the top-right corner of the editor (or pressing Cmd+E).
You should see your tasks appear under the correct headings, grouped by tags and filenames. If you added tasks with today's date in Step 2, they show up under Due Today.
Seeing raw code instead of rendered tasks?
- Make sure you are in Reading View, not Source Mode. Press Cmd+E to toggle.
- Check that the Tasks plugin is enabled under Settings then Community Plugins. The toggle next to Tasks should be on.
- Confirm that the fenced code blocks use tasks as the language (not task or todo).
Still stuck? Ask for help.
✔️ Awesome, I've got everything!
Great. Double check you have saved today.md and your queries are rendering in Reading View.
ⓧ I'd like to double check the full code
Here is the full dashboards/today.md file. Compare it against yours line by line.
---
type: dashboard
---
# Today
## Due Today
```tasks
not done
due today
group by tags
```
## Overdue
```tasks
not done
due before today
group by tags
sort by due
```
## This Week
```tasks
not done
due after today
due before next week
group by tags
sort by due
```
## All Open Tasks
```tasks
not done
group by filename
sort by due
limit 50
```
Customize the dashboard for your life
The default dashboard shows all tasks across your entire vault. You can narrow any query block by adding filter directives to match what matters most to you.
- Switch back to the editor by pressing Cmd+E.
- Pick one or more customizations from the menu below and add them as new lines inside any query block.
Customization menu:
- Filter to one life area. Add tags include #YOUR_TAG to show only tasks tagged with a specific area (replace #YOUR_TAG with your real tag, like #health or #career).
- Hide low-priority tasks. Add priority is not low to focus on what actually needs your attention.
- Limit results. Add limit 10 to cap how many tasks appear in any section.
- Sort by priority instead of due date. Change sort by due to sort by priority in any query block.
Start simple
You do not need to use all of these. Pick one customization that makes the dashboard feel more like yours. You can always add more later as your vault grows.
- After adding your customization, save the file with Cmd+S.
- Switch to Reading View (Cmd+E) to confirm that the queries still render and your filter is working.
Query showing no results after adding a filter?
- Check that the tag in your filter exactly matches the tag on your tasks, including the # symbol. Tags are case-sensitive.
- Make sure you added the filter as a new line inside the ```tasks block, not outside it.
Need help with query syntax?
Pin the dashboard for quick access
You want today.md to stay open every time you launch Obsidian. Pinning the tab prevents it from being replaced when you click other notes.
- Right-click the today tab at the top of the editor.
- Select Pin.
You should see a pin icon appear on the tab. The tab now stays open even when you navigate to other notes.
- Click the checkmark icon in the left sidebar ribbon to open the Tasks Overview panel alongside your dashboard.
You now have two complementary task views running side by side. The sidebar gives you a quick checkbox view for ticking things off. The dashboard note gives you a detailed, filterable planning view for your mornings.
Why two views?
The Tasks Overview sidebar is best for quick actions during the day. Spot a task, check it off, move on.
The today.md dashboard is best for morning planning. Scroll through everything due, review overdue items, and decide your priorities for the day. Different moments call for different views.
Your task system is complete. Next up, you'll connect Claude Code to your vault and let AI start working with your notes.
Connect Claude Code and Scaffold Your Vault
Your vault has tasks tracked across projects and life areas, and a dashboard that keeps everything visible in one place.
Now it is time to connect the AI. In this step, you will install Claude Code, write the instruction file that teaches Claude your vault's rules, and let Claude build out the remaining folder structure for you.
In this step, get ready to:
- Install Claude Code and Git on your Mac.
- Create the CLAUDE.md instruction file and .claudeignore exclusion file.
- Let Claude scaffold your vault's folder structure and starter files.
Install Claude Code and Git
Claude Code is a terminal-based AI agent that reads, writes, and searches files directly on your computer. Git is the version control tool you will need later to back up your vault to GitHub.
- Press Cmd+Space to open Spotlight search.
- Type Terminal and press Enter to open it.
- Install Claude Code by running this command:
curl -fsSL https://claude.ai/install.sh | bash
What is Claude Code?
Claude Code is an AI agent that runs in your terminal. Instead of chatting through a browser, Claude Code works directly with the files on your computer.
It can read your notes, create new files, search across your entire vault, and answer questions about your content. Think of it as a librarian who lives inside your terminal.
- Verify the installation by running:
claude --version
- You should see a version number like 2.1.118 in the output.
Command not found?
Close your Terminal window completely and open a new one. The install script updates your shell profile, but the current window does not pick up the change automatically.
If it still does not work, try the Homebrew install instead:
brew install --cask claude-code
Help me troubleshoot my Claude Code installation.
- Start Claude Code to authenticate by running:
claude
What happens when you run this?
Claude Code opens a browser window where you log in with your Anthropic account. A Claude Pro subscription ($20/month) or Claude Max subscription is required for Claude Code.
Once you log in and approve the connection in your browser, Claude Code is ready to use in your terminal.
- After you see the Claude Code prompt in your terminal, exit the session by typing:
/exit
- Check if Git is already installed by running:
git --version
✔️ I see a version number
Git is ready to go. You will use it in a later step to sync your vault to GitHub.
ⓧ Command not found
Your Mac may prompt you to install Xcode Command Line Tools. If it does, click Install and wait for it to finish.
If you do not see that prompt, install Git with Homebrew by running:
brew install git
- After the install finishes, run git --version again to confirm it works.
Create CLAUDE.md and .claudeignore
Claude Code looks for a file called CLAUDE.md every time it starts a session. This file is your instruction manual for the AI. It tells Claude what your vault is, how it is organized, and what rules to follow.
- Navigate to your vault folder by running:
cd ~/Documents/[[VAULT_NAME="enter your vault folder name"]]
- Create CLAUDE.md by opening a new file with nano (a simple text editor that runs inside your terminal):
nano CLAUDE.md
- Paste the following content into the editor. To paste in Terminal, press Cmd+V:
# Obsidian Vault Rules
## What This Is
This is a personal Obsidian vault, not a code project.
[[wikilinks]] are valid internal links. Never convert them.
## Structure
- inbox.md: unprocessed captures. Process here first.
- dashboards/: today.md (task dashboard), weekly-review.md
- projects/: one file per active project (projects end)
- areas/: one file per life area (areas are ongoing)
- daily/YYYY/MM/YYYY-MM-DD.md: daily notes
## Conventions
- Tasks use Obsidian Tasks emoji format: 📅 due, ⏳ scheduled, ✅ done
- Tags go inline on task lines (e.g., #health, #career)
- Frontmatter: type, status, tags
- Filenames: lowercase-with-hyphens.md
- Daily notes created by /goodmorning command
## Ingestion Rules
- Web clips: summarize in 2-3 sentences, add tags, file by topic
- Meeting notes: extract action items as tasks, summarize decisions
- Voice memos: clean up transcription, extract tasks, file by topic
## Rules
- Never modify files in .obsidian/
- Never rename existing notes without asking (backlinks break)
- When creating notes, always add frontmatter
- Use [[wikilinks]] for internal references, not markdown links
- Keep inbox.md empty after processing
What does each section do?
- What This Is tells Claude this is an Obsidian vault, not a coding project. It also warns Claude to leave [[wikilinks]] alone. Without this rule, Claude converts them to standard markdown links.
- Structure maps out every folder and its purpose so Claude knows where to file new content.
- Conventions defines your task format, tagging style, and file naming rules so Claude stays consistent with your system.
- Ingestion Rules tells Claude how to process different types of content that land in your inbox.
- Rules sets hard boundaries. Claude must never touch Obsidian's internal config files or silently rename notes.
💡 Why does this file need to be concise?
CLAUDE.md loads at the start of every single session. Every line costs tokens forever. One practitioner improved their cache hit rate from 12% to 61% by trimming their instruction file. Keep it tight.
- Save the file by pressing Ctrl+O, then Enter.
- Exit nano by pressing Ctrl+X.
- Confirm the file was created by running:
ls CLAUDE.md
- You should see CLAUDE.md in the output.
Next, you need to tell Claude which files to ignore. The .claudeignore file works just like a .gitignore. Any file or folder you list becomes invisible to Claude during exploration.
- Create .claudeignore by opening a new file with nano:
nano .claudeignore
- Paste the following content:
# Obsidian internals (plugin configs, themes, workspace)
.obsidian/
# Attachments waste tokens
attachments/
*.png
*.jpg
*.jpeg
*.gif
*.pdf
*.mp3
*.mp4
# Git internals
.git/
# Trash
.trash/
Why does this matter?
The .obsidian/ folder alone contains plugin configs, themes, and workspace files that are pure noise for an AI. Excluding it saves thousands of tokens per session.
Images, PDFs, and audio files are also excluded because Claude cannot meaningfully process binary content. This file is the single biggest performance optimization for your vault.
- Save the file by pressing Ctrl+O, then Enter.
- Exit nano by pressing Ctrl+X.
- Confirm both files exist by running:
ls -a
- You should see CLAUDE.md and .claudeignore in the output alongside your existing vault folders.
Don't see .claudeignore in the output?
Files starting with a dot are hidden by default. Make sure you ran ls -a (with the -a flag), not just ls. The -a flag shows hidden files.
Help me find my .claudeignore file in the vault.
✔️ Awesome, I've got everything!
Great. Make sure both files are saved before moving on.
ⓧ I'd like to double check the full code
Here is the full content of CLAUDE.md:
# Obsidian Vault Rules
## What This Is
This is a personal Obsidian vault, not a code project.
[[wikilinks]] are valid internal links. Never convert them.
## Structure
- inbox.md: unprocessed captures. Process here first.
- dashboards/: today.md (task dashboard), weekly-review.md
- projects/: one file per active project (projects end)
- areas/: one file per life area (areas are ongoing)
- daily/YYYY/MM/YYYY-MM-DD.md: daily notes
## Conventions
- Tasks use Obsidian Tasks emoji format: 📅 due, ⏳ scheduled, ✅ done
- Tags go inline on task lines (e.g., #health, #career)
- Frontmatter: type, status, tags
- Filenames: lowercase-with-hyphens.md
- Daily notes created by /goodmorning command
## Ingestion Rules
- Web clips: summarize in 2-3 sentences, add tags, file by topic
- Meeting notes: extract action items as tasks, summarize decisions
- Voice memos: clean up transcription, extract tasks, file by topic
## Rules
- Never modify files in .obsidian/
- Never rename existing notes without asking (backlinks break)
- When creating notes, always add frontmatter
- Use [[wikilinks]] for internal references, not markdown links
- Keep inbox.md empty after processing
And here is the full content of .claudeignore:
# Obsidian internals (plugin configs, themes, workspace)
.obsidian/
# Attachments waste tokens
attachments/
*.png
*.jpg
*.jpeg
*.gif
*.pdf
*.mp3
*.mp4
# Git internals
.git/
# Trash
.trash/
Let Claude scaffold your vault
Your vault already has folders for areas, projects, and dashboards. But some pieces are still missing, like the inbox and daily notes folder.
Instead of creating those by hand, let Claude read your instruction file and build out everything that is missing.
- Make sure you are still in your vault directory. Start a Claude Code session by running:
claude
What happens when Claude starts here?
Claude Code automatically reads CLAUDE.md from the current directory when a session starts. It also respects .claudeignore to skip files you excluded. You do not need to tell Claude about these files manually.
- Tell Claude to scaffold the vault by typing this prompt into the Claude Code session:
Read my CLAUDE.md and set up the vault structure. Create any missing folders and starter files including inbox.md.
- Claude may ask for permission to create files and folders. Approve each request.
Watch Claude create the folder structure in seconds. It reads your CLAUDE.md, identifies what already exists, and fills in the gaps.
Why does a flat folder structure matter?
Claude Code navigates your files using search tools like glob and grep, not by clicking through folders. A flat structure (two levels max) means fewer tokens to scan and faster results.
Deeply nested folders slow Claude down and waste your token budget. Your vault structure in CLAUDE.md is already optimized for this.
- Test that Claude understands your vault by typing a question about your tasks or projects:
What tasks are overdue?
Claude reads your area and project files and answers based on the actual tasks you created earlier. This is your first AI value moment.
- Switch to Obsidian. You should see new files and folders in the left sidebar, including inbox.md and a daily/ folder.
Claude didn't create the files?
Make sure you started Claude Code from inside your vault directory. Run pwd in the terminal to check your current location. It should show the path to your vault folder.
If Claude did not read CLAUDE.md automatically, try telling Claude directly: "Read CLAUDE.md first, then set up the vault structure."
Help me get Claude Code to scaffold my Obsidian vault.
Your vault now has a complete structure and an AI agent that understands it. Next up, you will build the daily commands that turn Claude into your personal morning briefer and end-of-day processor.
Build Your Daily Workflow
Your vault is scaffolded, your tasks are tracked, and Claude Code knows the rules of your second brain. The missing piece is automation.
Right now, you would need to manually create daily notes, sort your inbox, and track what you finished each day. Slash commands let you hand all of that to Claude in a single line. You will create two commands: /goodmorning for your daily briefing and /goodnight for end-of-day processing.
In this step, get ready to:
- Create the /goodmorning slash command for your daily briefing.
- Create the /goodnight slash command for inbox processing and day summaries.
- Run your first full daily cycle to see the system in action.
Create the /goodmorning command
Slash commands are markdown files that live in a .claude/commands/ folder inside your project. Each file becomes a reusable instruction set you can invoke by name from Claude Code.
What is a slash command?
A slash command is a markdown file stored in .claude/commands/. When you type /commandname in Claude Code, Claude reads the corresponding file and follows its instructions.
Commands also support $ARGUMENTS for runtime customization. You can pass options like energy=low when you invoke the command, and Claude adjusts its behavior accordingly.
- In Terminal, make sure you are inside your vault directory. Navigate there by running:
cd ~/Documents/[[VAULT_NAME="enter your vault folder name"]]
- Create the commands directory by running:
mkdir -p .claude/commands
- Confirm the directory was created by running:
ls -a .claude/
You should see commands listed in the output.
- Open a new file for the goodmorning command by running:
nano .claude/commands/goodmorning.md
- Paste the following template into the editor:
Create today's daily note at daily/YYYY/MM/YYYY-MM-DD.md (use the actual date).
Include these sections:
## Morning Briefing
- Tasks due today, grouped by tag (life area/project)
- Any overdue tasks with how many days overdue
- Unfinished tasks carried over from yesterday's daily note
## Focus
- Ask me: "What are your top 3 priorities today?" (or suggest based on due dates if I do not respond)
## Day Log
- Leave this section empty for me to fill during the day
Format: Keep it short. Bullet points. No fluff.
## Customization options (via $ARGUMENTS):
- energy=low: reduce briefing to just today's tasks and top 1 priority
- focus=deep-work: hide low-priority tasks, show only high-priority items
- brief: skip the Focus section, just show tasks
- verbose: include a summary of what happened yesterday too
- Press Ctrl+O, then Enter to save the file.
- Press Ctrl+X to exit nano.
What does this command do?
When you run /goodmorning, Claude reads this template and creates a daily note at the path matching today's date.
- Morning Briefing pulls tasks from across your vault, grouped by tag so you see them by life area.
- Focus prompts you to set your top 3 priorities. If you skip the question, Claude suggests priorities based on what is due.
- Day Log stays blank for you to fill throughout the day.
- $ARGUMENTS options let you adjust the briefing on the fly. For example, passing energy=low gives you a lighter morning view.
- Verify the file was saved by running:
cat .claude/commands/goodmorning.md
You should see the full template printed in your terminal.
Seeing an empty file or "No such file" error?
- Make sure you pressed Ctrl+O (the letter O, not zero) before exiting nano. Without saving, your content is lost.
- Check that you are in your vault directory. Run pwd to confirm the path ends with your vault name.
- If the file is empty, run nano .claude/commands/goodmorning.md again and re-paste the template.
Why is my goodmorning.md file empty or missing?
This template is your starting point. Feel free to customize it to match your ideal morning routine.
Make it yours
Open goodmorning.md in nano again and try any of these tweaks:
- Add a "Motivational Quote" section if you want Claude to start your day with one.
- Remove the Focus section if you prefer to decide priorities yourself.
- Change the format from bullet points to paragraphs if you prefer a narrative briefing.
- Add a "Calendar Summary" section if you want a reminder of today's events.
✔️ Awesome, I've got everything!
Great. Double check you have saved the file before moving on.
ⓧ I'd like to double check the full code
Create today's daily note at daily/YYYY/MM/YYYY-MM-DD.md (use the actual date).
Include these sections:
## Morning Briefing
- Tasks due today, grouped by tag (life area/project)
- Any overdue tasks with how many days overdue
- Unfinished tasks carried over from yesterday's daily note
## Focus
- Ask me: "What are your top 3 priorities today?" (or suggest based on due dates if I do not respond)
## Day Log
- Leave this section empty for me to fill during the day
Format: Keep it short. Bullet points. No fluff.
## Customization options (via $ARGUMENTS):
- energy=low: reduce briefing to just today's tasks and top 1 priority
- focus=deep-work: hide low-priority tasks, show only high-priority items
- brief: skip the Focus section, just show tasks
- verbose: include a summary of what happened yesterday too
Create the /goodnight command
The /goodnight command is the workhorse of your second brain. It processes your inbox, summarizes your day, and previews tomorrow.
- Create the goodnight command file by running:
nano .claude/commands/goodnight.md
- Paste the following template into the editor:
Process my end of day.
## 1. Process Inbox
Read inbox.md and all files in the inbox/ folder. For each item:
- If it contains a task (checkbox with - [ ]), move it to the matching project or area file based on its #tag. If no tag, ask me where it belongs.
- If it is a note about a specific project, append it to that project file under a dated heading.
- If it is a web clip (has a source: URL in frontmatter), summarize it in 2-3 sentences, add relevant tags, and file it under the matching area or project.
- If it is a general thought or log entry, append it to today's daily note under "## Day Log".
- Clear inbox.md and processed files when done.
## 2. Daily Summary
Add a "## End of Day" section to today's daily note:
- Tasks completed today (with checkmarks)
- Tasks that carried over (not done, were due today)
- Brief 2-3 sentence summary of what happened today
## 3. Tomorrow Preview
- List tasks due tomorrow so I know what is coming
## Customization options (via $ARGUMENTS):
- review=weekly: also generate a weekly review in dashboards/weekly-review.md summarizing the past 7 daily notes
- connections: suggest links between today's notes and existing vault content
- strict: auto-file everything without asking (trust the tags)
- flag-overdue=N: highlight any tasks overdue for more than N days
- Press Ctrl+O, then Enter to save the file.
- Press Ctrl+X to exit nano.
What does this command do?
The /goodnight command runs three stages in sequence:
- Process Inbox reads everything in inbox.md and the inbox/ folder. Tasks get moved to the matching project or area file. Notes get filed by topic. The inbox is cleared when done.
- Daily Summary adds an End of Day section to your daily note with completed tasks, carried-over tasks, and a brief summary.
- Tomorrow Preview lists upcoming tasks so you can go to sleep knowing what is ahead.
- Verify the file was saved by running:
cat .claude/commands/goodnight.md
You should see the full template printed in your terminal.
File is empty or missing?
- Confirm you saved with Ctrl+O before exiting. Run nano .claude/commands/goodnight.md to re-open and paste again.
- Check that you are in your vault folder by running pwd.
Why is my goodnight.md file empty or missing?
Once your file is saved, you can shape this template to match your nightly routine.
Make it yours
Open goodnight.md in nano and try any of these tweaks:
- Add "suggest connections between today's notes and existing vault content" to the inbox processing rules.
- Add "flag tasks overdue for more than 3 days" so stale tasks do not slip through the cracks.
- Add "move completed project files to archive/" if you want Claude to auto-archive finished projects.
- Change how aggressively Claude files inbox items. Swap "ask me where it belongs" for "auto-file based on tags" if you trust your tagging.
✔️ Awesome, I've got everything!
Great. Double check you have saved the file before moving on.
ⓧ I'd like to double check the full code
Process my end of day.
## 1. Process Inbox
Read inbox.md and all files in the inbox/ folder. For each item:
- If it contains a task (checkbox with - [ ]), move it to the matching project or area file based on its #tag. If no tag, ask me where it belongs.
- If it is a note about a specific project, append it to that project file under a dated heading.
- If it is a web clip (has a source: URL in frontmatter), summarize it in 2-3 sentences, add relevant tags, and file it under the matching area or project.
- If it is a general thought or log entry, append it to today's daily note under "## Day Log".
- Clear inbox.md and processed files when done.
## 2. Daily Summary
Add a "## End of Day" section to today's daily note:
- Tasks completed today (with checkmarks)
- Tasks that carried over (not done, were due today)
- Brief 2-3 sentence summary of what happened today
## 3. Tomorrow Preview
- List tasks due tomorrow so I know what is coming
## Customization options (via $ARGUMENTS):
- review=weekly: also generate a weekly review in dashboards/weekly-review.md summarizing the past 7 daily notes
- connections: suggest links between today's notes and existing vault content
- strict: auto-file everything without asking (trust the tags)
- flag-overdue=N: highlight any tasks overdue for more than N days
Run your first full daily cycle
Both commands are ready. Time to test the full loop: morning briefing, messy inbox dump, and end-of-day processing.
- Start a Claude Code session from your vault directory by running:
claude
Why start Claude from the vault directory?
Claude Code reads CLAUDE.md automatically when it starts in a directory that contains one. This loads your vault rules, folder structure, and conventions into every session.
- Run your morning briefing by typing this inside the Claude Code session:
/goodmorning
Claude reads your goodmorning.md template, scans your vault for tasks, and creates a daily note at daily/YYYY/MM/YYYY-MM-DD.md with today's actual date.
What should I see?
Claude will ask for permission to create the daily note file. Allow it. You should see Claude output a morning briefing with your tasks grouped by tag, any overdue items, and a Focus section asking about your priorities.
Switch to Obsidian. The new daily note should appear in the daily/ folder. Open it to see your briefing.
🙋♀️ Claude says it cannot find the command?
- Make sure you started Claude Code from inside your vault directory. Run pwd to check your location before running claude.
- Verify the file path is exactly .claude/commands/goodmorning.md with no typos. The folder must be .claude (with the leading dot), not claude.
- Exit the Claude session, then restart it by running claude again. Slash commands are loaded at session start.
Claude Code is not finding my /goodmorning command. Help me fix this.
Now it is time to fill the inbox with some messy content so the /goodnight command has something to process.
- Switch to Obsidian and open inbox.md.
- Spend 2 minutes dumping messy content below the existing text. Add a mix of tasks, notes, and half-formed thoughts. For example:
- [ ] Call dentist to reschedule appointment 📅 2026-05-03 #health
Had an interesting idea about reorganizing the kitchen pantry. Maybe group by meal type instead of food category?
- [ ] Review budget spreadsheet this weekend 📅 2026-05-04 #finances
Met with Jamie today about the Q3 project timeline. Key takeaway: deadline moved to June 15.
Use your own real content
The example above is just a starting point. Replace it with your actual tasks, ideas, and notes. The more realistic the inbox, the more useful this test run will be. Use the tags that match your life areas.
- Save inbox.md in Obsidian.
- Switch back to your Claude Code session in Terminal.
- Run the goodnight command by typing:
/goodnight
Claude will ask for permission to edit files as it processes each inbox item. Allow the edits.
What should I see?
Claude processes each item from your inbox one by one. Tasks with tags get moved to the matching area or project file. Notes about specific projects get appended to those project files. General thoughts go into your daily note under the Day Log section.
When done, Claude adds an End of Day section to your daily note with completed tasks, carried-over tasks, and a brief summary. It also previews tasks due tomorrow. Your inbox.md should be cleared back to its original template text.
- Switch to Obsidian to verify the results.
- Open your area and project files. You should see the new tasks Claude extracted from the inbox.
- Open today's daily note in the daily/ folder. You should see the Morning Briefing from earlier, plus a new End of Day section at the bottom.
- Click the Tasks Overview checkmark icon in the left sidebar. You should see the new tasks from your inbox appear alongside your original tasks.
- Open inbox.md. It should be cleared back to its default template.
Inbox was not processed or tasks are missing?
- If Claude asked where to file items with no tags, make sure you responded. Items without a #tag need your input unless you use the strict argument.
- Make sure you saved inbox.md in Obsidian before running the command. Claude reads the file from disk, not from Obsidian's memory.
- If tasks did not appear in the Tasks Overview sidebar, close and reopen the sidebar panel by clicking the checkmark icon twice.
My /goodnight command did not process my inbox correctly. Help me figure out what went wrong.
💡 What just happened?
You just ran a complete daily cycle. In the morning, Claude created a briefing from tasks scattered across your vault. In the evening, Claude sorted your messy inbox, extracted tasks, filed notes, and summarized your day.
This is the workflow that runs every day. The only thing you need to do is dump content into inbox.md and run two commands. Claude handles the rest.
Your daily workflow is locked in. Next up, you will back everything up to GitHub so your notes are safe, versioned, and ready for mobile access.
Set Up GitHub Sync
Your daily workflow is running. You have slash commands that create morning briefings, process your inbox, and summarize your day. The missing piece is making sure none of this work is ever lost.
In this step, you'll back up your entire vault to GitHub. Every note, every task, and every slash command will be stored safely in a private repository. You'll also set up automatic syncing so changes push to GitHub every 10 minutes without you lifting a finger.
In this step, get ready to:
- Create a private GitHub repository for your vault.
- Connect your vault to GitHub and push all your files.
- Install the Obsidian Git plugin for automatic syncing.
Create a GitHub repository
GitHub is where your vault's backup will live. You'll create a private repository so your notes stay visible only to you.
- Open your browser and go to github.com.
- Sign in to your GitHub account. If you do not have one, click Sign up and create a free account.
- Click the + icon in the top right corner.
- Select New repository.
- Enter your vault name (e.g., my-brain) in the Repository name field.
- Select Private so your notes stay visible only to you.
- Leave all the initialization options unchecked (README, .gitignore, and license).
- Click Create repository.
You should see an empty repository page with setup instructions. You'll handle the connection from your terminal in the next substep.
You also need a Personal Access Token. This is a password-like string that lets your terminal push to GitHub without entering your password each time.
- Click your profile icon in the top right corner of GitHub.
- Select Settings.
- Scroll to the bottom of the left sidebar and click Developer settings.
- Click Personal access tokens, then Tokens (classic).
- Click Generate new token, then select Generate new token (classic).
- Enter Obsidian Sync in the Note field.
- Check the repo checkbox to give the token full access to your repositories.
- Click Generate token at the bottom of the page.
- Copy the token immediately. You will not see it again after leaving this page.
Save your token somewhere safe
Paste your token into a temporary note or a password manager before navigating away. If you lose it, you'll need to generate a new one.
Connect your vault to GitHub
With your repository and token ready, you can now initialize Git in your vault and push everything to GitHub.
- Navigate to your vault folder in Terminal by running this command:
cd ~/Documents/[[VAULT_NAME="enter your vault folder name"]]
- Initialize a Git repository in your vault by running:
git init
You should see a message that says Initialized empty Git repository followed by your vault's path.
Before committing anything, you need a .gitignore file. This tells Git which files to skip when syncing. Your Obsidian vault has workspace files that change constantly and would cause merge conflicts if synced.
- Create the .gitignore file by running this command:
cat > .gitignore << 'EOF'
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/plugins/obsidian-git/data.json
.trash/
.DS_Store
EOF
Why not exclude the entire .obsidian/ folder?
The .obsidian/ folder contains your plugin settings and appearance settings. You want those to sync across devices so everything looks and works the same everywhere.
The files listed in .gitignore are volatile workspace files that change every time you open Obsidian. Excluding them prevents merge conflicts while keeping your important settings backed up.
- Confirm the file was created by running:
ls -a
You should see .gitignore listed alongside your vault's folders and files.
Don't see .gitignore?
Make sure you ran ls -a (with the -a flag). Without it, files starting with a dot are hidden. If the file still isn't there, re-run the cat command and make sure you type EOF on its own line at the end.
Help me create a .gitignore file in my Obsidian vault
Now you'll stage all your vault files, make your first commit, and push everything to GitHub.
- Stage and commit all your vault files by running these commands:
git add .
git commit -m "Initial vault commit"
You should see a list of files being committed. The exact number depends on how many notes you have created so far.
- Connect your local repository to GitHub and push your files by running these commands:
git remote add origin https://your-pat-here@github.com/[[GH_USERNAME="your GitHub username"]]/[[GH_REPO="your repository name"]].git
git branch -M main
git push -u origin main
- Replace your-pat-here with the Personal Access Token you copied earlier.
What do these commands do?
- git remote add origin tells Git where your GitHub repository lives. The PAT in the URL handles authentication so you do not get prompted for a password.
- git branch -M main renames your default branch to main, which is the standard on GitHub.
- git push -u origin main uploads all your committed files to GitHub.
- Go back to your GitHub repository page in your browser and refresh the page.
You should see all your vault's folders and files listed on the repository page. Your CLAUDE.md, inbox.md, dashboards, areas, and projects should all be visible.
Seeing a 'remote already exists' or authentication error?
- If you see fatal: remote origin already exists, remove it first with git remote remove origin and then re-run the git remote add command.
- If you see an authentication error, double check that you pasted the full PAT correctly. Make sure there are no extra spaces before or after it in the URL.
- If the push fails entirely, confirm that the repo scope was checked when you generated your token.
Help me push my Obsidian vault to GitHub
✔️ Awesome, I've got everything!
Great. Double check you see your vault files on your GitHub repository page before moving on.
ⓧ I'd like to double check the full code
Here is the complete .gitignore file that should be at the root of your vault:
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/plugins/obsidian-git/data.json
.trash/
.DS_Store
Install the Obsidian Git plugin for automatic sync
Your vault is on GitHub, but right now you would need to run git push manually every time you want to sync. The Obsidian Git plugin automates this so your vault backs up in the background.
- In Obsidian, click the gear icon in the bottom left to open Settings.
- Click Community plugins in the left sidebar.
- Click Browse.
- Search for Git in the search bar.
- Find the plugin by Vinzent03 and click Install.
- Click Enable.
Now configure the plugin to sync automatically.
- Go back to Settings and find Git under Community plugins in the left sidebar.
- Enable Pull updates on startup. This pulls the latest changes from GitHub every time you open Obsidian.
- Set Vault backup interval (minutes) to 10. This automatically commits and pushes every 10 minutes.
- Close the Settings window.
What does this plugin do?
Obsidian Git runs the same Git commands you just used manually, but in the background on a timer. Every 10 minutes, it stages your changes, commits them, and pushes to GitHub.
You can also trigger a manual sync anytime. Press Cmd+P to open the command palette and type Git: Commit-and-sync. GitHub offers 15GB of free storage, so your vault is covered for a long time.
- Make a small change to any note in your vault (add a word, create a new line).
- Press Cmd+P and type Git: Commit-and-sync.
- Refresh your GitHub repository page in the browser.
You should see a recent commit with a timestamp from just now. Every change you make is now versioned and backed up automatically.
Sync not working?
- If the commit-and-sync command does not appear in the command palette, make sure the Git plugin is enabled under Settings > Community plugins.
- If you see an authentication error, your PAT may have expired or been entered incorrectly during the git remote add step. Re-run the remote command with a fresh token.
- If you see a merge conflict, close the file in Obsidian, resolve it in Terminal with git checkout --theirs ., and sync again.
Help me fix my Obsidian Git sync
Your vault is now backed up to GitHub continuously. Every note, every task, every slash command is safe and versioned. Your second brain is complete.
Secret mission
Mobile Capture
Your second brain lives on your Mac right now. But what about the ideas that hit you on the bus, in line at the grocery store, or right before you fall asleep? In this mission, you'll set up Obsidian on your phone so you can capture notes anywhere and have Claude process them automatically on your Mac.
Before you go
Clean Up Your Resources
This project uses a Claude Pro subscription ($20/month) for Claude Code. Obsidian, Git, GitHub, and all plugins are free. Decide whether to keep your resources running, pause them to come back later, or delete them entirely.
Cost warning
Your Claude Pro subscription costs $20/month whether or not you use Claude Code. If you are not planning to use Claude Code regularly, consider pausing or cancelling your subscription at claude.ai/settings.
Everything else in this project is free. Your Obsidian vault, plugins, Git repository, and GitHub storage (up to 15GB) cost nothing.
Resources you used:
- Obsidian vault (local folder on your Mac).
- Claude Code (CLI tool installed on your Mac).
- Claude Pro subscription ($20/month).
- GitHub private repository (free, up to 15GB).
- Obsidian plugins: Tasks, Tasks Overview, Obsidian Git.
- Slash commands: goodmorning.md, goodnight.md.
- Configuration files: CLAUDE.md, .claudeignore, .gitignore.
Keep everything running
No action needed. Choose this if you plan to keep using your second brain daily.
- Your vault lives on your Mac as a regular folder. It takes up minimal disk space.
- The Obsidian Git plugin syncs your vault to GitHub automatically every 10 minutes.
- Claude Code sessions are on-demand. You only use tokens when you run commands like /project:goodmorning or /project:goodnight.
- Your only ongoing cost is the Claude Pro subscription at $20/month.
Pause - I'll come back to this later
Stop using Claude Code but keep your vault intact. Your Obsidian vault works perfectly without Claude Code.
- Stop running Claude Code sessions. Your slash commands and CLAUDE.md stay in the vault, ready for when you return.
- Your Tasks plugin, Tasks Overview sidebar, and today.md dashboard continue working as normal.
- The Obsidian Git plugin keeps syncing your vault to GitHub automatically.
- Consider pausing your Claude Pro subscription at claude.ai/settings if you will not be using Claude Code for a while.
Delete - I don't want to use this again
Remove all project resources and start fresh. This is permanent.
- Delete your vault folder from your Mac (e.g. the folder in your Documents directory).
- Delete the GitHub repository. Go to your repository page, click Settings, scroll to the bottom, and click Delete this repository.
- Revoke your GitHub Personal Access Token. Go to Settings, then Developer Settings, then Personal Access Tokens, and delete the token you created.
- Uninstall Claude Code by running:
claude uninstall
- Uninstall Obsidian by dragging it to the Trash from your Applications folder.
- Cancel your Claude Pro subscription at claude.ai/settings.
Mission accomplished
That's a Wrap!
Nice work. You just built a personal second brain that actually thinks back.
You've learned how to:
- Build an Obsidian vault with a Tasks plugin, a visual Tasks Overview sidebar, and a live today.md dashboard that tracks tasks across your projects and life areas.
- Connect Claude Code to your vault with a CLAUDE.md instruction file and /goodmorning and /goodnight slash commands that automate your entire daily workflow.
- Set up GitHub sync with automatic backups every 10 minutes using the Obsidian Git plugin, keeping your vault safe and versioned.
- Secret Mission: Set up mobile capture so you can write notes from your phone and have Claude process them on your Mac.
Ready to quiz yourself?