Use when user says "save this", "create project", "promote from inbox" - manages Obsidian vault documentation with frontmatter (project/status/type/created), file naming (YYYY-MM-DD-name.md), wikilinks, and project structure in projects/ folders
Manages Obsidian vault documentation with dated files, frontmatter, and project organization. Triggers on "save this", "create project", or "promote from inbox" to create projects/ folders, enforce YYYY-MM-DD naming, and maintain wikilinks between related documents.
/plugin marketplace add fnichol/claude-code-plugins/plugin install obsidian@fnichol-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Direct file system management for Obsidian project documentation. Enforces YYYY-MM-DD-name.md naming, generates frontmatter, maintains wikilinks, organizes into projects/<name>/ and _inbox/.
For project linking features (CLAUDE.local.md integration, dual locations, automatic startup), see the project-linking skill.
Vault path: Look for "Primary vault:" in conversation context (from CLAUDE.md).
~/Obsidian/vault if not specified~ to user's home directory before usingUser triggers:
Use this skill for: Project documentation, design docs, brainstorms, plans, retrospectives Don't use for: Code documentation (use project CLAUDE.md), one-off notes outside vault
Note: If session has CLAUDE.local.md with project linking, use project-linking skill instead for advanced features.
| Operation | Command Pattern | Result |
|---|---|---|
| New project | "save as new project" | projects/<name>/YYYY-MM-DD-<type>.md |
| Save inbox | "save to inbox" | projects/_inbox/YYYY-MM-DD-<desc>.md |
| Add to project | "create [type] doc for [project]" | New doc + wikilinks to related |
| Update doc | "update [doc] in [project]" | Edit + updated: YYYY-MM-DD frontmatter |
| Promote inbox | "promote to project" | Move + update frontmatter + rename |
| List projects | "list projects" | Show all with status (skip _inbox) |
| Show contents | "what's in [project]" | List docs chronologically |
| Update status | "mark [project] as active" | Update all doc frontmatter |
| Validate | "check frontmatter" | Report missing/invalid fields |
Conventions:
YYYY-MM-DD-descriptive-name.md (lowercase, hyphens)[[filename]] (no .md, no path if same folder)## Related Documents section to project docsRequired fields:
---
project: project-name # Matches folder name or "inbox"
status: planning # planning|active|paused|completed|archived
type: brainstorm # brainstorm|design|plan|notes|retrospective
created: YYYY-MM-DD # File creation date
---
Optional fields:
updated: YYYY-MM-DD - Added when document revised (filename stays same)promoted: YYYY-MM-DD - Added when moved from inbox to projectValid values:
Trigger: "save this as a new project"
<vault-path>/projects/<project-name>/YYYY-MM-DD-<type>.mdstatus: planning## Related Documents sectionTrigger: "save to inbox" / "quick idea"
<vault-path>/projects/_inbox/project: inbox, status: planning, type: notesTrigger: "create a [design/plan] doc for [project-name]"
projects/ for matching folder## Related Documents section with links: [[YYYY-MM-DD-filename]]Trigger: "update the [doc] in [project]"
updated: YYYY-MM-DD in frontmatterTrigger: "promote that note to a project" / "make this a proper project"
_inbox/ for related notes (similar topics, keywords)projects/<project-name>/project: inbox → project: <project-name>promoted: YYYY-MM-DDtype if needed (ask user or infer)Trigger: "list projects" / "show me all projects"
<vault-path>/projects/ (skip _inbox/)Output:
Active Projects:
- project-name (3 docs)
Planning:
- another-project (1 doc)
Trigger: "what's in [project]" / "show me [project]"
Output:
project-name (status: active):
- 2025-11-07-initial-brainstorm.md (brainstorm)
- 2025-11-10-design-doc.md (design)
Trigger: "mark [project] as active" / "set status to completed"
status field in all frontmatterTrigger: "check [project] frontmatter" / "validate frontmatter"
project matches folder namestatus in valid valuestype in valid valuesAuto-validate before creating any file.
Directory:
<vault-path>/projects/
_inbox/ # Quick captures
project-name/ # One folder per project
YYYY-MM-DD-desc.md
Naming rules:
YYYY-MM-DD-descriptive-name.md (lowercase, hyphens, concise)project-name (lowercase, hyphens, matches folder)Examples:
obsidian-integration/2025-11-07-initial-brainstorm.mdapi-refactoring/2025-11-08-design-doc.mdInternal: [[YYYY-MM-DD-filename]] (no .md, no path if same folder)
External: [text](url)
Always add to project docs:
## Related Documents
- [[YYYY-MM-DD-brainstorm]] - Brief description
- [[YYYY-MM-DD-design]] - Brief description
Auto-linking:
Before ANY file operation:
YYYY-MM-DD-name.mdYYYY-MM-DD formatBefore updates:
| Problem | Solution |
|---|---|
| Project not found | Search partial matches → offer to create → list available |
| Invalid frontmatter | Report issue → fix before proceeding |
| File exists | Ask to update in-place or use different filename |
| Permission denied | Report error → suggest checking vault path in ~/.claude/CLAUDE.md |
| Vault path not found | Check for "Primary vault:" in context → use default ~/Obsidian/vault |
| Wrong date in filename | Preserve creation date (filename) when updating → only change updated |
User: "Save this brainstorm as a new project called obsidian-integration"
You: Create projects/obsidian-integration/2025-11-07-initial-brainstorm.md with frontmatter
User: "Create a design doc for obsidian-integration"
You: Create 2025-11-08-architecture-design.md, link to [[2025-11-07-initial-brainstorm]]
User: "Promote that git-worktrees note from inbox to a project" You:
_inbox/2025-11-07-git-worktrees-idea.mdprojects/git-worktrees/2025-11-07-initial-brainstorm.mdproject: git-worktrees, add promoted: 2025-11-08