Follow along
Weekly posts on AI second-brain systems, vault patterns, and what actually works.
The Problem
You use Claude every day. Every session starts from scratch. You re-explain everything. The conversation ends. Everything disappears.
You take notes in Obsidian. Hundreds of files. They just sit there. You make the same decision twice because you forgot you made it six months ago. Ideas rot in daily notes. Nobody connects the dots.
Two powerful tools. Completely disconnected.
How this extends Karpathy's LLM Wiki
Karpathy's pattern is brilliant. Drop sources, LLM creates wiki pages, ask questions. This skill takes it further:
| Karpathy's LLM Wiki | obsidian-second-brain | |
|---|---|---|
| New sources | Append new pages, cross-reference | Rewrite existing pages. People get updated, claims revised, stale facts replaced. |
| Contradictions | Flagged, you resolve manually | /obsidian-reconcile resolves them automatically |
| Patterns | Surface when you ask | /obsidian-synthesize finds unnamed patterns and writes synthesis pages on its own |
| When it runs | On demand, when you prompt | 4 scheduled agents: nightly close, weekly review, contradiction sweep, vault-health check |
| Note format | Human-readable wiki pages | AI-first: ## For future Claude preamble + frontmatter for LLM retrieval, not human review |
If Karpathy's wiki is a knowledge base you maintain with an LLM, this is a knowledge base that maintains itself.
What Happens When You Install This
After a meeting: /obsidian-save
Claude pulls out every decision, person, task, and idea and saves each one to the right note. You do nothing.
You recorded a voice memo: /obsidian-ingest meeting.m4a
Claude transcribes it with Whisper, identifies speakers, extracts every promise and action item, and distributes across entity pages, task boards, and the daily note.
You screenshot a whiteboard: /obsidian-ingest photo.png
Claude reads the image, extracts text and structure, creates concept notes, links to related projects. A photo becomes knowledge.
You find a great video: /obsidian-ingest https://youtube.com/...
Claude doesn't summarize into one note. It REWRITES your existing pages. People get updated. Contradictions get resolved. Patterns trigger new synthesis pages. One URL in. The vault is smarter.
Before a big decision: /obsidian-challenge
Claude searches your vault for past failures and reversed decisions on the same topic. Pushes back with your own words. Your vault holds you accountable.
You want to see the big picture: /obsidian-visualize
Claude generates a visual canvas of your entire vault. Hub nodes centered, color-coded by type, orphans highlighted. Open it in Obsidian and see the shape of your knowledge.
You go to sleep: The nightly agent runs 5 phases: closes the day, reconciles contradictions, synthesizes cross-source patterns, heals orphan notes, and rebuilds the index. You wake up to a smarter vault.
You start a new day: /obsidian-daily
Claude pulls your calendar events, overdue tasks, and overnight changes into today's note. Your morning starts informed.
Someone shares an X post: /x-read https://x.com/...
Grok with live X access fetches the post, the thread, and the replies. Returns verbatim text + TL;DR + key claims + reply sentiment + voices to watch. No more screenshots.
You're planning today's content: /x-pulse "AI automation"
Grok scans X for what's trending in your topic right now. Returns 3-5 emerging themes (with rep posts + key voices), gaps nobody is filling, hook formats that are working, and 3 specific post ideas you could write today.
You need real research: /research "AI memory tools"
Perplexity Sonar Pro pulls a deep dossier with citations: summary, key facts (every claim with a recency marker and source domain), timeline, key players, contrarian views, recommended further reading, open questions. Saved to your vault, auto-opens in Obsidian.
You want vault-first deep research: /research-deep "AI memory tools"
Scans your vault for what you already know. Identifies gaps. Spawns 3-5 targeted searches via Perplexity (web) and Grok (X discourse). Synthesizes a delta report: what's new, what's confirmed, contradictions to resolve, recommended vault updates. Vault baseline doesn't get re-researched. Only gaps get filled.
You hit a great YouTube video: /youtube https://youtu.be/...
Free transcript via youtube-transcript-api. Optional metadata + top comments via YouTube Data API v3. Gemini (free tier, Grok fallback) summarizes into TL;DR, Key Points, Notable Quotes (verbatim), Themes, Comment Sentiment, and Worth Following Up On. Saved as an AI-first note in your vault. Add --visual to also watch it: scene-change frame extraction (ffmpeg) that Claude reads with its own vision to capture on-screen text, code, diagrams, and demos the transcript misses.
You never open Obsidian. Everything happens through Claude.
Before & After
| Without this skill | With this skill | |
|---|---|---|
| Saving decisions | Copy-paste or lose them | Auto-saved to the right project note |
| Daily notes | Write it yourself, forget half the time | Created automatically |
| Finding patterns | Re-read dozens of notes | /emerge finds them for you |
| Challenging yourself | Nobody pushes back | /challenge uses your own history against you |
| Session continuity | Re-explain every time | /world loads full context in 10 seconds |
| Ingesting content | Read it, forget it | /ingest rewrites 5-15 vault pages from 1 source (URLs, PDFs, audio, screenshots) |
| Contradictions | You don't know they exist | /reconcile resolves them automatically |
| Synthesis | You connect dots manually | /synthesize finds patterns across sources on its own |
| Sharing vault data | Only Claude can read it | /export gives any AI tool a clean snapshot |
| Facts change over time | Old info gets overwritten | Bi-temporal facts track when it was true AND when the vault learned it |
| Starting a new session | Re-explain who you are | CRITICAL_FACTS.md loads your identity in ~120 tokens |
| Reading an X thread | Open X, scroll, screenshot, paste | /x-read [url] returns post + thread + sentiment + voices |
| Knowing what to post | Guess what's trending | /x-pulse scans X and returns hot themes + gaps + hooks + post ideas |
| Web research | Open 12 tabs, copy quotes manually | /research [topic] returns a sourced dossier with recency markers |
| Researching what you already know | Re-research from scratch | /research-deep scans vault first, fills only the gaps, flags contradictions |
| YouTube videos | Watch passively, forget | /youtube [url] transcript + summary + quotes saved to vault |
| Vault notes for future-Claude | Notes for human reading | AI-first rule: every note has "For future Claude" preamble + recency markers + citations |
How It Works
+------------------------------------------+
| |
| LAYER 1: Operations (28 commands) |
| Claude remembers everything |
| |
+------------------------------------------+
| |
| LAYER 2: Thinking Tools (8 commands) |
| Claude thinks with you |
| |
+------------------------------------------+
| |
| LAYER 3: Context Engine (1 command) |
| Claude knows who you are |
| |
+------------------------------------------+
| |
| LAYER 4: Research Toolkit (7 commands) |
| Claude pulls knowledge in |
| |
+------------------------------------------+
| |
| ALWAYS ON |
| Background agent + 4 scheduled agents |
| Auto-synthesis + save reminders |
| |
+------------------------------------------+
45 commands total. The calendar command (/obsidian-calendar) is Claude Code only (needs the Google Calendar MCP), so the Codex / Gemini / OpenCode / Hermes / Pi / Agent Skills builds ship 44.
Layer 1 saves, organizes, ingests, reconciles, exports, schedules your calendar, and maintains your vault. Layer 2 challenges your ideas, surfaces hidden patterns, bridges unrelated domains, and graduates ideas into projects. Layer 3 loads your identity and current state so every session picks up where the last one ended. Layer 4 pulls live external knowledge into the vault: X posts, X trends, web research with citations (key-less by default), YouTube and podcast transcripts. Vault-first synthesis knows what you already know. Always On keeps the vault alive without you lifting a finger.
45 Commands
Operations -- Claude remembers
| Command | What it does |
|---|---|
/obsidian-save |
Saves everything from the conversation -- decisions, tasks, people, ideas |
/obsidian-ingest |
Drop a URL, PDF, audio file, or screenshot. The vault REWRITES itself. 5-15 pages touched per source. |
/obsidian-synthesize |
Auto-finds patterns across sources and writes synthesis pages |
/obsidian-reconcile |
Finds contradictions and resolves them. The vault maintains its own truth. |
/obsidian-export |
Clean JSON/markdown snapshot any AI tool can read |
/obsidian-daily |
Creates or updates today's daily note |
/obsidian-calendar <mode> |
One calendar command, four modes: agenda (read a snapshot), reconcile (flag commitments not yet scheduled), meeting (event to note), schedule (create/move an event from a task or standalone) |
/obsidian-recurring |
Tracks a recurring obligation with a cadence and a computed next-due date |
/obsidian-log |
Logs a work session, links it everywhere |
/obsidian-task |
Adds task to the right board with priority and due date |
/obsidian-person |
Creates or updates a person note |
/obsidian-capture |
Zero-friction idea capture |
/obsidian-catchup |
Process captures dumped from the Telegram bot (voice/text/image/PDF/link) into the vault |
/obsidian-find |
Smart search with context |
/obsidian-recap |
Summary of a day, week, or month |
/obsidian-review |
Structured weekly or monthly review |
/obsidian-board |
Kanban board view and updates |
/obsidian-board-hygiene |
Bulk-triage a board -- surface stale/overdue items, then archive / reschedule / mark-Done in one pass |
/obsidian-project |
Project note with board and daily links |
/obsidian-projects |
Live project status from git + local docs -- infers all context from vault notes, no config required |
/obsidian-health |
Vault audit -- contradictions, gaps, stale claims, orphans, freshness violations (the freshness policy: every fact timeless, dated, or a pointer) |
/obsidian-retrieval-eval |
Measures vault search quality -- recall@k + MRR on natural-language questions, with the concrete failures and ranked fixes |
/obsidian-decide [--formal] |
Logs decisions to the right project notes; --formal writes a full ADR record (the vault knows why it's structured this way) |
/obsidian-visualize |
Generates a visual canvas map of your second brain |
/obsidian-learn |
Reviews vault learnings, prunes stale ones, surfaces patterns to promote into rules |
/obsidian-init |
Generates _CLAUDE.md, index.md, log.md |
/obsidian-architect |
Scans a codebase and writes maintained architecture notes (overview, modules, decisions) into the vault; re-run to refresh |
/create-command |
Interview flow that scaffolds a new command into commands/<name>.md, no markdown editing |
Thinking -- Claude thinks with you
| Command | What it does |
|---|---|
/obsidian-brainstorm [topic] |
Multi-turn Socratic interview - one question per turn until the idea converges, then a design note with named alternatives |
/obsidian-challenge |
Your vault argues against your idea using your own history |
/obsidian-panel |
Convenes a panel of distinct perspectives on a decision, one verdict each + synthesis |
/obsidian-emerge |
Surfaces patterns from 30 days of notes you never named |
/obsidian-connect [A] [B] |
Bridges two unrelated domains to spark new ideas |
/vault-deep-synthesis [topic] |
Cross-references every note on a topic: agreements, contradictions, stale claims, gaps |
/obsidian-distill [note or source] |
Condenses a long note/source into key claims, each tagged with provenance back to the exact source block |
/idea-discovery |
Ranks 3-5 next-direction candidates from ideas, open questions, and orphan research |
/obsidian-graduate |
Turns an idea fragment into a full project with tasks |
Context -- Claude knows you
| Command | What it does |
|---|---|
/obsidian-world |
Loads identity + state with progressive token budgets (L0-L3) |
Research -- Claude pulls knowledge in
Powered by xAI Grok (live X access) + Perplexity Sonar (web research) + YouTube. Findings save to Research/ as AI-first notes (preamble, frontmatter, recency markers, sources verbatim).
| Command | What it does |
|---|---|
/x-read [url] |
Deep-read an X post: verbatim post + thread + TL;DR + claims + reply sentiment + voices |
/x-pulse [topic] |
Scan X for what's trending: themes, voices, hooks, post ideas |
/research [topic] |
Web research with citations: full dossier with recency markers and open questions. Uses Perplexity when keyed, free key-less sources (Wikipedia, HackerNews, arXiv, Reddit, and more) otherwise |
/research-deep [topic] |
Vault-first synthesis (open web): scans your vault, finds gaps, fills them via Perplexity + Grok (or free key-less sources when unkeyed), propagates updates across people/projects/ideas |
/notebooklm [topic] |
Vault-grounded synthesis via Gemini File Search. Uploads top 12 vault notes, returns a grounded answer with citations. No browser, one HTTP call. Pairs with /research-deep for dual-track research. |
/youtube [url] [--visual] |
Extract transcript + metadata + top comments → AI-first summary. --visual adds scene-change frame extraction Claude reads with its own vision |
/podcast [url] |
Apple Podcasts or RSS → transcript (RSS tag / Whisper / show-notes) + AI-first summary |
Setup: copy .env.example to ~/.config/obsidian-second-brain/.env, add your keys (xAI, Perplexity, YouTube optional, OpenAI optional for podcast Whisper). Run install.sh and answer "y" to the research prompt to do this automatically.
No keys? /research and /research-deep still work. With no PERPLEXITY_API_KEY set they automatically fall back to free, key-less sources (Wikipedia, HackerNews, arXiv, Reddit, Lobsters, dev.to, OpenAlex, Semantic Scholar, CrossRef, DuckDuckGo - plus Tavily/Brave when keyed) and Claude synthesizes the dossier. Pass --free to force it even when keyed, or --academic to restrict to scholarly sources. The other research commands (/x-read, /x-pulse, /notebooklm, /youtube) still need their respective keys.
/obsidian-challenge
You: "I want to rewrite the API in Rust."
Claude finds your 2025 post-mortem where the Rust rewrite failed. Finds your decision log committing to TypeScript for 2 years. Says: "Your own notes say this failed. Still want to proceed?"
/obsidian-emerge
Claude scans 30 daily notes. You mentioned "onboarding friction" in 4 unrelated projects.
"Onboarding is your bottleneck across projects. You never named it."
/obsidian-connect "distributed systems" "cooking"
Traces both clusters in your link graph. Finds shared concepts: preparation and load distribution. Generates 3 actionable ideas at the intersection.
/obsidian-graduate
An idea from 3 weeks ago. Claude reads it, finds related projects and people, generates a full spec with goals, phases, tasks, and board entries. The idea gets tagged graduated.
/obsidian-ingest https://youtube.com/watch?v=example
- Saves original to
raw/videos/(immutable) - REWRITES entity pages with new context
- REWRITES concept pages if the source adds depth or contradicts them
- Creates synthesis pages when patterns emerge
- Resolves contradictions and documents why
- Updates
index.md,log.md, daily note
One URL in. The vault rewrites itself.
/x-read https://x.com/garrytan/status/2048121438914154664
Grok with live X access fetches the post and replies. You get verbatim text, TL;DR, key claims, reply sentiment (~70% positive, 20% skeptical, 10% off-topic), notable counter-arguments with the @ handles of who said them, and "voices to watch" (the replies that added real signal). ~$0.05/call.
/x-pulse "AI automation"
WHAT'S HOT (last 24-72h)
1. Agentic AI vs Basic Automation — voices: @NVIDIAAP, @woisau1
2. Self-Improving Sovereign Agents — voices: @tom_doerr, @AIDailyGems
3. Control Layers & Execution Gaps — voices: @ZIQING_JP
WHAT'S UNDEREXPLORED
- ROI numbers for non-developer small business users
- Integration of digital agents with physical robotics
HOOKS THAT ARE WORKING
- "Automation executes. Autonomy reasons." — @NVIDIAAP
POST IDEAS FOR YOU TODAY
1. Thread: "I gave an open-source agent its own GitHub repo and watched it self-improve"
2. Single: "Automation executes. Autonomy reasons. Here's the control layer..."
What you'd spend 2 hours scrolling X to find. Returned in 30 seconds for ~$0.13.
/research "AI memory tools"
Returns a structured dossier: Summary, Key Facts (each with (as of YYYY-MM, source.com)), Timeline, Key Players, Contrarian Views, Recommended Further Reading, Open Questions, full citations. Saved to Research/Web/ as an AI-first note. ~$0.05/call.
/research-deep "AI memory tools"
Phase 1: Vault scan
Found 8 relevant notes (e.g. Knowledge/2026-02-15 - Mem0 vs Letta.md)
Phase 2: Gap analysis (Perplexity sonar-pro)
Identified 5 targeted queries to fill what vault is silent or stale on
Phase 3: Targeted research
[web] Anthropic Claude memory tool 2026 features
[web] Mem0 Series A reactions and concerns
[x] developer reactions to Letta vs Mem0
...
Phase 4: Synthesis (sonar-reasoning-pro)
→ What's New Since Vault Baseline
→ What's Confirmed
→ Contradictions / Updates Needed (with [[wikilinks]] to specific vault files)
→ Synthesis bullets
→ Recommended Vault Updates (instructions for /obsidian-save)
→ Open Questions
Vault-first means it doesn't waste tokens re-researching what you already knew. ~$0.40/call.
/notebooklm "AI-first vault rule" - vault-grounded, no browser
Scans the vault, uploads the top 12 most relevant notes to a Gemini File Search store, asks Gemini 2.5 Flash to synthesize against THOSE sources only with citations, writes the synthesis to Research/NotebookLM/ as an AI-first note, deletes the store.
Vault baseline: 12 notes
Model: gemini-2.5-flash
Uploading 12 notes... done
Asking Gemini, grounded against the uploaded sources...
=== SAVED ===
Research/NotebookLM/2026-05-15 - ai-first-vault-rule.md
Pair with /research-deep on the same topic. Open-web view + vault-grounded view rarely contradict. Where they do, that's where you have a take worth posting. ~$0.004/call on free-tier Flash, ~$0.06 on paid Pro.
/youtube https://youtu.be/... (add --visual to watch, not just read)
Free transcript via youtube-transcript-api + optional metadata + comments via YouTube Data API v3 (free tier). Gemini (gemini-2.5-flash, free tier) summarizes into TL;DR, Key Points, Notable Quotes (verbatim), Themes, Comment Sentiment, and Worth Following Up On - Grok is the automatic fallback (~$0.04) when no Gemini key is set. Frontmatter includes view count, channel, published date, like count for Dataview queries.
--visual downloads the video (yt-dlp, <=720p) and extracts one frame per scene change (ffmpeg scene detection, not a fixed timer), so on-screen text, code, diagrams, slides, UI, and b-roll are captured. Claude reads the frames with its own vision (no extra API call) and writes a timestamp-keyed ## Visual notes section; hero frames are embedded in the note. Requires yt-dlp + ffmpeg on PATH; skips gracefully if missing. --max-frames N caps frames read (default 24). Pipeline ported from claude-watch / claude-video (MIT).
/podcast https://podcasts.apple.com/... (or paste an RSS feed URL)
Resolves Apple Podcasts URLs to RSS via the free iTunes Lookup API. Picks the best transcript source available: <podcast:transcript> tag in the RSS feed (free, high fidelity) → Whisper API if OPENAI_API_KEY is set (~$0.006/min) → show-notes fallback. Grok summarizes into TL;DR, Key Points, Notable Quotes, Themes, Guests & People Mentioned, and Worth Following Up On. ~$0.04 for the Grok call (plus Whisper if used). Spotify URLs aren't supported (DRM).
Auto-open after every save. Obsidian pops open at the new note. Disable with RESEARCH_AUTOOPEN=0 if you're running batch saves.
The Vault is Alive
Traditional vaults are filing cabinets. You put things in. They sit there.
This vault rewrites itself with every input:
- Ingest a source -- existing pages get rewritten, contradictions resolved, patterns synthesized
- Save a conversation -- entities, concepts, and decisions distribute across the vault
- Ask a question -- the Two-Output Rule means every answer also updates pages
- A fact changes -- bi-temporal facts track when it was true AND when the vault learned it. "You believed X on Tuesday. After ingesting Y on Wednesday, you shifted to Z." Full audit trail.
- Do nothing -- background agent and scheduled agents maintain it while you sleep
- Wait a week -- auto-synthesis finds cross-source patterns and writes connection pages
The vault after a week is fundamentally different from the vault you started with.
The maintenance layer has a name: OKM (Open Knowledge Metabolism). Storage is the easy half; keeping stored knowledge true is the hard half, and it is where this project spends its effort. OKM is the open standard behind that: every stored fact must be timeless, dated, or a pointer. Slow-changing knowledge (how things work, decisions, ownership) is stored; fast-changing facts (counts, statuses, balances) are linked to where they live with an as of stamp, never copied in to rot. The rule is a one-page spec (references/freshness-policy.md), enforced by a linter (scripts/freshness_lint.py) that /obsidian-health runs. Where OKF (Google's Open Knowledge Format) standardizes how agent knowledge is written, OKM standardizes how it stays true - the metabolism to OKF's format. It is storage-agnostic: any folder of markdown an AI maintains, not just Obsidian vaults.
Choose Your Preset
Pick your role at bootstrap. Each preset creates tailored folder structures, templates, and kanban boards.
| Preset | Who it's for | Kanban style |
|---|---|---|
| executive | Founders, operators, managers | OKRs / Quarterly / Weekly |
| builder | Developers, engineers, architects | Backlog / Sprint / Done |
| creator | Writers, YouTubers, marketers | Ideas / Drafts / Published |
| researcher | Academics, analysts, deep-divers | Reading / Processing / Synthesized |
python bootstrap_vault.py --path ~/my-vault --name "Your Name" --preset builder
No preset? You get a general-purpose vault that works for everyone.
Background Agent & Scheduled Agents
Background: fires after every context compaction. You keep working. The vault updates itself.
PostCompact -> obsidian-bg-agent.sh -> claude -p (headless) -> vault updated
Scheduled:
| Agent | When | What |
|---|---|---|
morning |
8 AM | Daily note + overdue tasks |
nightly |
10 PM | Sleeptime consolidation: close day + reconcile + synthesize + heal orphans |
weekly |
Fridays 6 PM | Weekly review |
health |
Sundays 9 PM | Vault health audit |
Save reminders: Claude nudges you to /obsidian-save after 10+ exchanges or when you say "done" or "thanks". No lost conversations.
Bounded recall (opt-in): on every prompt, a UserPromptSubmit hook injects a small brief of the most relevant vault notes - max 4 notes, ~900 chars - or nothing at all when confidence is low (abstention beats noise). Read-only, fail-closed, and every inject/abstain decision is logged to <vault>/.claude-runs/ for audit. Ships inert; arm it with OBSIDIAN_RECALL_ENABLED=1 per hooks/recall.hook.example.json.
Vault Architecture
Wiki-style (default) -- LLM-first
Claude is the reader and writer. The vault is a database.
vault/
+-- _CLAUDE.md # Operating manual
+-- index.md # Page catalog (Claude reads FIRST)
+-- log.md # Activity timeline
+-- SOUL.md # Your identity
+-- CRITICAL_FACTS.md # ~120 tokens, always loaded (timezone, manager, location)
+-- raw/ # IMMUTABLE source material
+-- wiki/ # Claude's workspace
| +-- entities/ # People, companies, tools
| +-- concepts/ # Ideas, frameworks, synthesis
| +-- projects/ # Project notes
| +-- daily/ # Daily notes
| +-- logs/ # Work session logs
| +-- reviews/ # Weekly/monthly reviews
| +-- tasks/ # Task notes
| +-- decisions/ # ADRs
+-- boards/ # Kanban boards
+-- templates/ # Note templates
Install
One codebase, seven builds. Pick yours below. The vault behavior is identical across all of them; only the install path and the dispatcher file (
CLAUDE.md/AGENTS.md/GEMINI.md/.agents/skills//.pi/) differ.
Prerequisites: Claude Code (or one of the other five platforms below), git, and uv for the Python helpers (health check, research toolkit, bootstrap). Optional: jq (used by setup.sh), Ollama for local semantic search. No API keys needed for the core vault commands.
Claude Code (default)
Native plugin install (recommended). Inside any Claude Code session:
/plugin marketplace add eugeniughelbur/obsidian-second-brain
/plugin install obsidian-second-brain@obsidian-second-brain
That ships all 45 commands, the skill manual, the session-context hook, the opt-in background agent (inert until you arm it - see hooks/postcompact.hook.example.json), and the vault MCP server. Then tell Claude where your vault lives by adding to the env section of ~/.claude/settings.json:
"env": { "OBSIDIAN_VAULT_PATH": "/path/to/your/vault" }
Restart Claude Code, then run /obsidian-second-brain:obsidian-init inside your vault. Plugin commands are namespaced, so every command is /obsidian-second-brain:<name> (type /obsidian-second-brain: to see all 45). Update later with /plugin update obsidian-second-brain.
Classic install (script). Use this if you want the commands as bare names (/obsidian-init, /research, ...) or you are developing the skill and want live edits. One line (clones the skill, installs the slash commands, registers the session-context hook, and offers the research env):
curl -fsSL https://raw.githubusercontent.com/eugeniughelbur/obsidian-second-brain/main/scripts/quick-install.sh | bash
Or step by step:
git clone https://github.com/eugeniughelbur/obsidian-second-brain ~/.claude/skills/obsidian-second-brain
bash ~/.claude/skills/obsidian-second-brain/install.sh
bash ~/.claude/skills/obsidian-second-brain/scripts/setup.sh "/path/to/your/vault"
No vault yet? Create a ready-to-use one first (folders, templates, boards, dashboards - passes its own health check out of the box):
cd ~/.claude/skills/obsidian-second-brain
uv run python scripts/bootstrap_vault.py --path ~/Documents/MyVault --name "Your Name"
bash scripts/setup.sh ~/Documents/MyVault
Then open Claude Code and run /obsidian-init inside your vault.
Codex CLI / Gemini CLI / OpenCode
git clone https://github.com/eugeniughelbur/obsidian-second-brain
cd obsidian-second-brain
bash scripts/build.sh --platform codex-cli # or gemini-cli, or opencode
cp -R dist/codex-cli/. /path/to/your/vault/ # or .gemini-cli / .opencode/
Then start your CLI from the vault root.
The Codex build emits native Codex Agent Skills: one skill per command under .agents/skills/<name>/SKILL.md. Codex discovers them automatically with progressive disclosure (only each skill's name + description load until it's selected), and they run in your current session - invoke one with $<name>, pick it from /skills, or just describe the task and let Codex match it implicitly. AGENTS.md stays as a thin always-on manual (vault conventions + the AI-first rule); there is no routing table to maintain because the skill list is the router. The Gemini / OpenCode builds still emit a GEMINI.md / AGENTS.md dispatcher with an auto-generated routing table to command files under .gemini/ / .opencode/.
Run bash scripts/build.sh with no arguments to build every platform at once. See dist/<platform>/INSTALL.md after building for platform-specific notes.
Google Antigravity (and any .agents/skills/ harness)
Antigravity, Codex CLI, OpenCode, and GitHub Copilot CLI have all converged on the open Agent Skills standard: workspace skills at .agents/skills/<name>/SKILL.md. The agent-skills build emits one spec-compliant tree they all read - and any future harness on the same standard works with zero repo changes.
git clone https://github.com/eugeniughelbur/obsidian-second-brain
cd obsidian-second-brain
bash scripts/build.sh --platform agent-skills
# install with skills.sh (writes one shared .agents/skills/ tree), from your vault root:
npx skills add /path/to/obsidian-second-brain/dist/agent-skills -a antigravity -a codex -a opencode
# or copy manually, no skills.sh required:
cp -R dist/agent-skills/skills/. /path/to/your/vault/.agents/skills/
Each command becomes a skill under .agents/skills/; a shared obsidian-core skill carries the Python toolkit and the AI-first write spec the others call into. The skills are
No comments yet
Be the first to share your take.