Obsidian sync
Use after knowledge extraction to persist detected concepts into Obsidian. Creates new notes, updates existing ones, adds bidirectional links, and enforces deduplication.From its SKILL.md
npx -y skills add ShangChienLiu/ai-dev-os --skill obsidian-syncAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.7 KB, as published. Nobody here has run it
Obsidian Sync
Write extracted knowledge back into the Obsidian vault. Create new notes, update existing ones, add links, and enforce deduplication.
Configuration
Read config.json from the ai-dev-os skill directory. If configured is false or the file is missing, STOP and tell the user:
"Please run
/configure-ai-dev-osto set up your Obsidian vault path and Linear team."
- Obsidian vault: Use the
obsidian_vault_pathvalue from config. - Templates folder:
templates/
Input
Concept extraction report from knowledge-extract stage, containing per-concept dispositions (new/update/weak).
Pre-flight Check
Call mcp__obsidian__obsidian_list_notes on the vault root. If it fails, STOP and tell the user: "Obsidian MCP is not connected. Please open Obsidian and ensure the MCP server is running."
Procedure
Step 1: Process "new" concepts
For each concept with disposition "new":
-
Dedup check: Before creating, search one more time:
mcp__obsidian__obsidian_global_searchwith the concept namemcp__obsidian__obsidian_global_searchwith common aliases- If a note with >80% title overlap is found, change disposition to "update" and proceed to Step 2 instead.
-
Read template: Call
mcp__obsidian__obsidian_read_noteontemplates/concept.md. -
Populate template: Replace placeholders:
{{Concept Name}}-> concept name- Fill in: Definition, Why It Matters, Mental Model
- Fill in: Example in This Codebase (File, Lines, Explanation from the diff)
- Fill in: Related Concepts with
[[links]]to other detected concepts
-
Write note: Call
mcp__obsidian__obsidian_update_noteto createconcepts/<concept-slug>.mdwith the populated content. Usemode: "overwrite"since it's a new file. -
Set frontmatter: Call
mcp__obsidian__obsidian_manage_frontmatterto set:created= today (ISO 8601)updated= todaysource_ticket= ticket IDconfidence= 0.2 (new concept, just encountered)difficulty= estimated 1-5related_files= file paths from the diffrelated_lines= line ranges from the difftags= relevant tags
Step 2: Process "update" concepts
For each concept with disposition "update":
-
Read existing note: Call
mcp__obsidian__obsidian_read_noteon the existing concept note. -
Append code example: Use
mcp__obsidian__obsidian_search_replaceto add a new example under "## Example in This Codebase":- New file path and lines from the current diff
- Explanation of how the concept appears in this change
-
Update links: If the concept is now related to new concepts not previously linked, use
mcp__obsidian__obsidian_search_replaceto add new[[links]]under "## Related Concepts". -
Update frontmatter: Call
mcp__obsidian__obsidian_manage_frontmatterto:- Update
updated= today - Append to
related_filesif new files involved - Append to
related_linesif new lines involved - Optionally add
aliasesif the concept was found under a different name
- Update
Step 3: Process architecture decisions
If the architecture-analysis stage produced an ADR:
- Verify it exists in
decision_logs/(it should have been created during architecture-analysis). - If not, create it now using the same procedure as architecture-analysis Step 4.
- Add
[[links]]from the ADR to related concept notes.
Step 4: Add bidirectional links
For each pair of related concepts:
- Check if concept A links to concept B.
- If not, use
mcp__obsidian__obsidian_search_replaceto add- [[Concept B]]under concept A's "## Related Concepts". - Check the reverse direction and add if missing.
Step 5: Cleanup
If any notes were created in inbox/ during the process that have now been properly categorized:
- Call
mcp__obsidian__obsidian_delete_noteto remove the inbox copy.
Gotchas
- The dedup check uses title overlap — concepts with different names but same meaning may still create duplicates.
- Template files must exist in the Obsidian vault's
templates/folder. If missing, the skill fails at template read. obsidian_update_notewith mode "overwrite" destroys existing content. Only use for genuinely new files.
Output
Summary of notes created and updated:
## Obsidian Sync Summary
### Notes Created
| Note | Type | Path |
|------|------|------|
### Notes Updated
| Note | Type | Path | What Changed |
|------|------|------|-------------|
### Links Added
| From | To |
|------|----|