An opinionated Obsidian vault management system. Core loop: collect → organize → connect → review.
Commands
| Command | Description |
|---|---|
/obos save ["内容"] |
Quickly collect ideas into Inbox (core command) |
/obos tidy |
Organize notes into place (supports standard/strong modes) |
/obos sync |
Update index + health report + link suggestions |
/obos review |
Vault status review + next-step suggestions |
/obos init |
Initialize vault structure |
/obos vault |
Manage multiple vault registrations |
/obos refine [note] |
Deeply process notes (advanced) |
/obos ask "question" |
Query the knowledge base (advanced) |
/obos draft "topic" |
Draft articles based on notes (advanced) |
No argument → show grouped command list:
核心:save, tidy, sync, review
设置:init, vault
进阶:refine, ask, draft
Tidy default strategy
/obos tidy Runs by default in standard mode, with idempotent incremental organization enabled:
- On repeated runs, files that have already been organized and not changed are skipped and not migrated again
- Automatic renaming by default is performed only once; after a manual rename is detected it is automatically locked (
name_locked: true) - Project directories by default
project-policy=contain: the project structure is frozen, not broken up, and internal levels/file names are not changed - Stability is determined doubly via
/.obos/tidy-state.jsonand frontmatter - The project directory allowlist can be extended via
/.obos/tidy-config.json(projectRootsExtra) - strong mode first performs a directory necessity assessment (KEEP / REORGANIZE / ARCHIVE_DIR)
- Directory assessment audit is output to
/.obos/dir-audit.json - Markdown documents are not deleted by default (
deleteMarkdown=false), only empty directories are cleaned up
Multi-Vault Configuration
Configuration file:~/.proma/agent-workspaces/obsidian/obos-config.json
{
"vaults": {
"personal": { "path": "D:/obsidian/personal", "default": true },
"work": { "path": "C:/Users/.../work-vault" }
},
"lastUsedVault": "personal"
}
Vault Path Discovery
All commands share this logic (by priority):
- Command parameter
--to <alias>-specified vault - default vault in obos-config.json
- the current working directory (if it contains
.obsidian/or vault CLAUDE.md) - If none of the above exist, use AskUserQuestion to guide the user to register a vault
Vault Structure
Vault/
├── CLAUDE.md # AI context file
├── Index.md # AI-readable index (auto-generated)
├── Inbox/ # 收集入口(save 写入此处)
├── Notes/ # Evergreen notes
├── Clippings/ # Web clippings
├── References/ # Source materials
├── Attachments/ # Images and files
├── Categories/ # MOC index pages
└── Templates/ # Note templates
Knowledge Maturity Model
Frontmatter status field:
inbox— just collected, not organizeddraft— classified, not deeply processedrefined— processed via/obos refinein depth
Evergreen Note Template
---
status: {{inbox|draft|refined}}
source: {{attribution}}
created: {{YYYY-MM-DD}}
---
# {{title}}
## Core Idea
One sentence in your own words.
## My Understanding
Why it matters. What you agree/disagree with.
## Open Questions
What new questions does this raise?
## Related
- [[]]
Command Routing
Parse the first argument after /obos and load the matching commands/{command}.md file. If no argument, show the grouped command list above and ask what the user wants to do.