From claude-obsidian
Files conversation insights into an Obsidian wiki vault as structured notes. Detects note type, generates frontmatter, and updates index/log/hot cache.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-obsidian:saveThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Good answers and insights shouldn't disappear into chat history. This skill takes what was just discussed and files it as a permanent wiki page.
Good answers and insights shouldn't disappear into chat history. This skill takes what was just discussed and files it as a permanent wiki page.
The wiki compounds. Save often.
The session-note write itself follows the standard transport policy. Read .vault-meta/transport.json (auto-created by bash scripts/detect-transport.sh):
obsidian-cli write "$VAULT" "$NOTE" < session.md; see skills/wiki-cli/SKILL.mdmcp__obsidian-vault__write_noteWrite tool with absolute pathFull decision tree: wiki/references/transport-fallback.md. Index/log/hot updates use the same transport.
Before creating the session note, consult the vault's methodology mode via python3 scripts/wiki-mode.py route session "<topic-summary>". The router returns the vault-relative path:
wiki/sessions/<date>-<topic>.md (v1.7 default)wiki/notes/<date>-<topic>.md + update the relevant session/journal MOCwiki/projects/inbox/<date>-<topic>.md (user reroutes to specific projects)wiki/<ID>-session-<topic>.md (timestamped ID becomes the filename prefix)If .vault-meta/mode.json is absent, the router returns mode=generic paths. Important global rule: per global CLAUDE.md /save convention, sessions for cross-project work should still file to ~/Documents/Obsidian Vault/sessions/ rather than the project's wiki. The mode router applies when filing to the project's own wiki/, not when filing to the global personal vault.
Session-note writes MUST be preceded by wiki-lock acquire:
NOTE_PATH="wiki/questions/<slug>.md" # or wiki/concepts/, wiki/meta/, etc.
bash scripts/wiki-lock.sh acquire "$NOTE_PATH" || {
echo "skipped: $NOTE_PATH currently locked by another writer"; exit 0
}
# … write the note via §Transport-selected method …
bash scripts/wiki-lock.sh release "$NOTE_PATH"
For multi-file saves (e.g., session note + index update + log append), acquire each lock in sorted-path order to avoid deadlocks. Index/log/hot updates lock just like content pages.
See skills/wiki-ingest/SKILL.md §Concurrency for the full lock semantics.
Determine the best type from the conversation content:
| Type | Folder | Use when |
|---|---|---|
| synthesis | wiki/questions/ | Multi-step analysis, comparison, or answer to a specific question |
| concept | wiki/concepts/ | Explaining or defining an idea, pattern, or framework |
| source | wiki/sources/ | Summary of external material discussed in the session |
| decision | wiki/meta/ | Architectural, project, or strategic decision that was made |
| session | wiki/meta/ | Full session summary: captures everything discussed |
If the user specifies a type, use that. If not, pick the best fit based on the content. When in doubt, use synthesis.
Step 0: Decide the destination root. Check in order:
~/.claude/CLAUDE.md /save rule. If either declares a personal-vault destination (e.g., ~/Documents/Obsidian Vault/), that is the destination ROOT. The Note Type table below describes paths relative to whichever root is active. Append the new note to <root>/log/ingest-log.md at the top, in the format that file already uses.wiki/ folder.The mode router (python3 scripts/wiki-mode.py route session "<topic>") applies when filing into the project's own wiki/. When filing into a personal-vault root, use the canonical folders documented in that vault's CLAUDE.md (commonly sessions/, concepts/, sources/) — the mode router is NOT consulted for personal-vault writes by default. Filename sanitization (slug + safe_name) still applies regardless of root: strip path separators, NUL bytes, control chars, leading dots/hyphens.
Then continue the workflow:
<destination-root>/<chosen-folder>/<title>.md (per Step 0). Full frontmatter. If a note with the same path already exists, ASK before overwriting.related in frontmatter.wiki/index.md. Add the new entry at the top of the relevant section.wiki/log.md. New entry at the TOP:
## [YYYY-MM-DD] save | Note Title
- Type: [note type]
- Location: wiki/[folder]/Note Title.md
- From: conversation on [brief topic description]
wiki/hot.md to reflect the new addition.---
type: <synthesis|concept|source|decision|session>
title: "Note Title"
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags:
- <relevant-tag>
status: developing
related:
- "[[Any Wiki Page Mentioned]]"
sources:
- "[[.raw/source-if-applicable.md]]"
---
For question type, add:
question: "The original query as asked."
answer_quality: solid
For decision type, add:
decision_date: YYYY-MM-DD
status: active
(Source: [[Page]]).Save:
Skip:
If it's already in the wiki, update the existing page instead of creating a duplicate.
When working on this skill, apply the 10-principle loop. See skills/think/SKILL.md for the canonical framework.
| # | Principle | Application here |
|---|---|---|
| 1 | OBSERVE (ext) | Read the full conversation. Identify the actual decisions and synthesis, not the verbatim transcript. |
| 2 | OBSERVE (int) | Am I in a save-everything mood? Some sessions don't have lasting insight; the Skip criteria exists for a reason. |
| 3 | LISTEN | Did the user specify destination or type? Their explicit override comes first; defaults come second. |
| 4 | THINK | Pick destination root (Step 0), then note type, then folder. Match path sanitization to destination convention. |
| 5 | CONNECT (lat) | Does this content already have a wiki page? Update vs create matters — duplicates pollute the index. |
| 6 | CONNECT (sys) | Index + log + hot cache + frontmatter relations all update together — atomicity matters. |
| 7 | FEEL | Filename future-me can read cold; frontmatter that supports search. Avoid noise that drowns the signal. |
| 8 | ACCEPT | Some sessions don't deserve saving. Honor the Skip criteria; don't archive everything. |
| 9 | CREATE | Write the note, append to log at top, update index, refresh hot cache. |
| 10 | GROW | Skipped saves are also signal — what threshold filtered them? Refine the type table over time. |
npx claudepluginhub agricidaniel/claude-obsidian --plugin claude-obsidianFiles the current conversation answer as a permanent, self-contained Obsidian wiki page. Supports title inference, similarity search, and index updates.
Sets up and maintains a persistent Obsidian wiki vault as composable knowledge base. Scaffolds structure, manages cross-references, and provides a hot cache for cross-session context.
Saves session context and work summaries to an Obsidian vault with structured markdown, auto-categorization, and related document discovery.