From joe-obsidian
Two trigger modes: (A) IMMEDIATE - invoke this skill FIRST, before writing any local files, when the user mentions syncing to Obsidian, getting docs into the vault, or putting project documentation in Obsidian. Do NOT create local .md files first. (B) OFFER - after creating or editing markdown outside the vault (documentation, notes, research, guides, plans, summaries), offer to sync it. Do not wait for the user to ask in mode B - offer after substantive markdown is written.
How this skill is triggered — by the user, by Claude, or both
Slash command
/joe-obsidian:markdown-vault-syncThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When the user mentions syncing to Obsidian, getting docs into the vault, or putting project documentation in Obsidian — invoke this skill **immediately** and go straight to the Sync Workflow. Do NOT create local `.md` files first.
When the user mentions syncing to Obsidian, getting docs into the vault, or putting project documentation in Obsidian — invoke this skill immediately and go straight to the Sync Workflow. Do NOT create local .md files first.
After creating or substantially editing markdown outside the vault, offer to sync if the content is:
Do not offer for READMEs/CHANGELOGs (belong in codebase), throwaway content, or files already in the vault.
Ask concisely: "Want me to sync this to your Obsidian vault?"
When the user asks to get a project's documentation into the vault (e.g. "sync this project to Obsidian", "get project docs into the vault"), don't just mirror existing files. Generate documentation from the codebase to fill gaps.
Survey the project (README, config files, source code, tests, existing docs) and produce vault-ready notes for:
Only generate notes where the content is substantive enough to be useful. Don't create empty stubs. Synthesize from source code and config when docs don't exist - the vault note should be more useful than the raw files.
Syncing happens in two phases: propose (main context) then execute (dedicated agent).
Survey the project and propose what to sync before spawning the agent. This lets the user confirm, adjust, or add/remove notes.
Do NOT call any mcp__obsidian__* tools in Phase 1. Propose paths using the conventions below. The agent will check for duplicates and handle conflicts.
ProjectName/ProjectName.md. This is the folder note that links to all sub-pages and provides the project overview.Projects/YYYY/QN/ProjectName/. Use the current year and quarter. Never use flat paths like Projects/ProjectName/.Projects/2026/Q1/ProjectName/ProjectName.md)Use TaskCreate to track page creation and index maintenance for user visibility.
Pre-written content: Call mcp__obsidian__vault create directly from the main context — make all create calls in parallel. Each note needs a back-link to its parent folder index. No agent needed; the content is already prepared.
Generated content: Spawn a vault-sync agent in background (run_in_background: true, subagent_type: "vault-sync") for notes that need synthesis from source files. The agent does the real work: reading source, synthesizing, creating. Prompt must say do NOT update indexes.
Spawn ONE vault-sync agent in foreground. This agent:
Include in any generation agent's prompt:
Include in the index agent's prompt:
Keep original files in place - the vault gets copies, not moves.
npx claudepluginhub ylt/claude-plugins --plugin joe-obsidianManages Obsidian vault as developer knowledge base: create/search/update notes with standard frontmatter, organize by projects/technologies/Claude Code, auto-capture commits/tasks/components.
Manages Obsidian vaults using obsidian-cli: creates daily notes, moves/renames notes preserving [[wiki-links]], searches content, organizes notes with templates.
Organizes an Obsidian vault: adds documents with auto-categorization, restructures misplaced files, processes meeting notes, and runs health checks.