agentleFS
sennaBrunosennaBruno/claude-skills/skills/obsidian-second-brain/SKILL.md

obsidian-second-brain

Skill1 starsChanged 8 months agoApache-2.0View on GitHub

Use when setting up an Obsidian vault as a Second Brain from scratch, auditing an existing vault configuration, or bootstrapping PARA structure with Claude Code integration, automated backup, and developer-focused workflows

  • Commits and pushes

3 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

9 rules. 0 are common, 4 are distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Create the folder tree:

    line 35
  2. Distinctive:

    Create CLAUDE.md at vault root with:

    line 67
  3. Distinctive:

    READ: Full vault access

    line 72
  4. Very specific:

    WRITE ALLOWED: Only 07 - Claude/ and 00 - Inbox/

    line 73
  5. Very specific:

    WRITE FORBIDDEN: Never overwrite 06 - Diario/ or personal notes

    line 74
  6. Very specific:

    All templates use {{date}} (YYYY-MM-DD) and {{title}} Templater variables.

    line 82
  7. Very specific:

    Create 00 - Dashboard.md with Dataview queries for:

    line 142
  8. Very specific:

    Ensure cron starts on boot (WSL: systemd=true in /etc/wsl.conf)

    line 198
  9. Distinctive:

    When auditing an existing vault, check each layer:

    line 233

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Obsidian Second Brain — Setup & Audit

Overview

Complete setup guide for an Obsidian vault as a Second Brain with PARA methodology, Claude Code integration (MCP + hooks + skills), automated Git backup, and developer-focused workflows. Works from zero or audits/completes an existing setup.

When to Use

  • Setting up a new Obsidian vault from scratch
  • Auditing an existing vault for missing config/plugins/structure
  • Adding Claude Code integration to an Obsidian vault
  • Setting up automated backup with Git
  • Configuring developer-focused PKM workflows (TILs, project context, investment tracking, hobby tracking)

Quick Reference

LayerComponents
StructurePARA folders, CLAUDE.md, _contexto.md per project, Dashboard
PluginsDataview, Calendar, Templater, QuickAdd, Git, Tasks, Omnisearch, Linter, Tag Wrangler, Periodic Notes
TemplatesDiario, Nota, Semana, Mensal, Ativo, Pessoa, TIL
Claude IntegrationMCP server, 5 skills (/capture, /today, /emerge, /connect, /review), PostToolUse hook, cron sync
BackupGit repo, obsidian-git plugin, cron job, auto-commit hook
TagsHierarchical (#projeto/x, #area/y) + Flat (#til, #decisao, #conexao)

Implementation

Phase 1: Vault Structure (PARA)

Create the folder tree:

VaultRoot/
├── 00 - Inbox/                    # Quick capture, unprocessed notes
├── 00 - Dashboard.md              # Homepage with Dataview queries
├── 01 - Projetos/                 # Active projects with _contexto.md
│   └── ProjectName/
│       └── _contexto.md           # Project context file ("Gema")
├── 02 - Areas/                    # Permanent life domains
│   ├── Dev/TILs/                  # Today I Learned notes
│   ├── Investimentos/
│   │   ├── Ativos/                # Individual stock/asset notes
│   │   ├── Dividendos/            # Monthly dividend tracking
│   │   └── Analises/              # Investment analyses
│   ├── Hobbies/
│   │   ├── Anime/
│   │   ├── Manga/
│   │   ├── Games/
│   │   └── Board Games/
│   └── Pessoas/                   # Personal CRM
├── 03 - Recursos/                 # Reference material, links, clippings
├── 04 - Arquivo/                  # Completed/paused projects
├── 05 - Templates/                # Reusable note templates
├── 06 - Diario/                   # Daily notes (NEVER write here via Claude)
│   └── Semanas/                   # Weekly review notes
├── 07 - Claude/                   # Claude-generated analyses (write here)
└── CLAUDE.md                      # Root context for Claude Code

Phase 2: CLAUDE.md (Root Context)

Create CLAUDE.md at vault root with:

  1. Identity: Owner name, role, objective, language
  2. Vault structure: Folder tree with descriptions
  3. Operation rules:
    • READ: Full vault access
    • WRITE ALLOWED: Only 07 - Claude/ and 00 - Inbox/
    • WRITE FORBIDDEN: Never overwrite 06 - Diario/ or personal notes
    • EDIT existing: Only with explicit permission
  4. Project mapping: Table of project name → code repo path → stack
  5. Tag system: Hierarchical + flat tags with examples
  6. Skills reference: Table of available slash commands

Phase 3: Templates (7 templates)

All templates use {{date}} (YYYY-MM-DD) and {{title}} Templater variables.

TemplateFrontmatter TagsKey Sections
Diariotipo/reflexaoComo estou, O que fiz, O que aprendi, Ideias, Amanha
Nota[] + projeto + statusContexto, Conteudo, Conexoes, Proximos Passos
Semanatipo/revisao-semanalDataview inbox, Projetos ativos, Tasks pendentes, Highlights, Proxima semana top 3
Mensaltipo/revisao-mensalProjetos, Investimentos, Aprendizado, Hobbies, 3 palavras, Intencao
Ativoarea/investimentos/acoes + ticker/setor/preco_medioTese, Dividendos (table), Pontos de Atencao, Revisao
Pessoapessoa + nome/birthday/relacao/contatoComo Nos Conhecemos, Interesses, Ultimas Conversas, Presentes, Lembrar
TILtil + area/dev + techO Que Aprendi, Contexto, Exemplo (code block), Links

Phase 4: Plugins (10 community plugins)

Install plugins to .obsidian/plugins/ and register in community-plugins.json.

Tier 1 (Essential):

PluginIDKey Config
DataviewdataviewenableDataviewJs: true, enableInlineDataview: true, defaultDateFormat: "yyyy-MM-dd"
Templatertemplater-obsidiantemplates_folder: "05 - Templates", trigger_on_file_creation: true, folder templates mapped (see below)
CalendarcalendarshouldConfirmBeforeCreate: true
QuickAddquickaddCapture "Captura Inbox" configured
Tasksobsidian-tasks-pluginDefault config

Tier 2 (Power User):

PluginIDKey Config
Periodic Notesobsidian-periodic-notesDaily/Weekly/Monthly enabled with template + folder mapping
Omnisearchobsidian-omnisearchDefault (hotkey Ctrl+Shift+O)
Linterobsidian-linterYAML Timestamp on date field, trailing spaces, lintOnSave: true, ignore Templates folder
Tag Wranglertag-wranglerDefault
obsidian-gitobsidian-gitautoSaveInterval: 10, autoPullOnBoot: true, commitMessage: "vault: {{date}}"

Templater Folder Templates:

FolderTemplate
01 - ProjetosTemplate Nota
02 - Areas/Investimentos/AtivosTemplate Ativo
02 - Areas/PessoasTemplate Pessoa
02 - Areas/Dev/TILsTemplate TIL
02 - AreasTemplate Nota
03 - RecursosTemplate Nota
06 - Diario/SemanasTemplate Semana
06 - DiarioTemplate Diario
07 - ClaudeTemplate Nota

Periodic Notes Config:

PeriodFormatFolderTemplate
DailyYYYY-MM-DD06 - DiarioTemplate Diario
WeeklyYYYY-[W]ww06 - Diario/SemanasTemplate Semana
MonthlyYYYY-MM06 - DiarioTemplate Mensal

Phase 5: Dashboard

Create 00 - Dashboard.md with Dataview queries for:

  1. Projetos Ativos — TABLE from 01 - Projetos where _contexto exists
  2. Tarefas Pendentes — Tasks query not done, sorted by due, limit 10
  3. Inbox Pendente — LIST from 00 - Inbox, sorted by creation
  4. Ultimas Notas — TABLE last 10 modified notes
  5. Investimentos — TABLE from 02 - Areas/Investimentos/Ativos
  6. TILs Recentes — TABLE from #til, last 5
  7. Notas Orfas — LIST notes with 0 inlinks and 0 outlinks

Phase 6: Hotkeys

Configure .obsidian/hotkeys.json:

HotkeyAction
Ctrl+Shift+IQuickAdd Captura Inbox
Ctrl+Shift+DOpen daily note
Ctrl+Shift+OOmnisearch
Alt+GOpen graph view
Alt+TInsert Templater template
Alt+LeftNavigate back
Alt+RightNavigate forward

Phase 7: Git Backup

  1. Init repo in vault root with .gitignore:
    .obsidian/workspace.json
    .obsidian/workspace
    .obsidian/plugins/obsidian-git/data.json
    .trash/
    .DS_Store
    Thumbs.db
    desktop.ini
  2. Create private GitHub repo and push initial commit
  3. Install obsidian-git plugin — auto-commits every 10 min when Obsidian is open
  4. Cron job (15 min) for persistent backup even without Obsidian:
    #!/usr/bin/env bash
    VAULT="/path/to/vault"
    cd "$VAULT" || exit 0
    if git diff --quiet && git diff --cached --quiet && [ -z "$(git ls-files --others --exclude-standard)" ]; then
        exit 0
    fi
    git add --all
    git commit -m "vault: sync $(date +'%Y-%m-%d %H:%M')"
    git push origin main 2>/dev/null
    exit 0
    Register: */15 * * * * /path/to/vault-cron-sync.sh >> /tmp/vault-sync.log 2>&1
  5. Ensure cron starts on boot (WSL: systemd=true in /etc/wsl.conf)

Phase 8: Claude Code Integration

MCP Server:

claude mcp add obsidian --scope user -- npx @mauricio.wolff/mcp-obsidian@latest "/path/to/vault"
  • Filesystem-only (works without Obsidian GUI running)
  • Path traversal protection, TOCTOU fixes

PostToolUse Hook (vault-autocommit.sh):

  • Triggers on Write/Edit tools
  • Auto-commits if file is inside the vault
  • Runs async (non-blocking)
  • Register in ~/.claude/settings.json under hooks.PostToolUse

Skills (install to ~/.claude/skills/):

SkillTriggerOutput Location
/captureQuick note to Inbox00 - Inbox/
/todayDaily planning briefing07 - Claude/
/emergeReveal implicit ideas from recent notes07 - Claude/
/connectCross-domain pattern linking07 - Claude/
/review [project]Project status summary07 - Claude/

Community Skills:

npx skills add kepano/obsidian-skills -g -a claude-code -y

Installs: obsidian-markdown, obsidian-bases, obsidian-cli, json-canvas, defuddle

Phase 9: Audit (Existing Vault)

When auditing an existing vault, check each layer:

1. PARA folders exist?           → Create missing ones
2. CLAUDE.md exists and current? → Create or update
3. Templates complete?           → Create missing, verify frontmatter
4. Plugins installed + configured? → Install missing, verify data.json
5. Dashboard exists?             → Create with Dataview queries
6. Hotkeys configured?           → Set up hotkeys.json
7. Git backup active?            → Init repo, .gitignore, cron, push
8. MCP server configured?       → Add via claude mcp add
9. Skills installed?             → Install community + custom skills
10. Hooks registered?            → Add PostToolUse auto-commit hook

Tag System

Hierarchical (group by domain)

#projeto/name          # Active project
#area/dev              # Development knowledge
#area/investimentos    # Investments
#area/investimentos/dividendos
#area/investimentos/acoes
#hobby/anime
#hobby/manga
#hobby/gaming
#hobby/boardgames

Flat (quick filter)

#til        #decisao      #ideia       #analise
#reflexao   #conexao      #ativo       #pausado
#concluido  #bug          #referencia  #pessoa

Common Mistakes

MistakeFix
Writing to 06 - Diario/ from ClaudeOutput goes to 07 - Claude/ ALWAYS
Forgetting .gitignore for workspace.jsonObsidian changes this constantly, creates noise
Not ignoring obsidian-git data.jsonCreates sync loops between plugin and cron
Generic templates without frontmatterEvery template needs YAML with tags + date
Linter running on Templates folderAdd 05 - Templates to foldersToIgnore
No _contexto.md in project foldersClaude lacks project context without it
Flat-only tagsHierarchical tags enable powerful Dataview filtering

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.