Releases: AgriciDaniel/claude-obsidian
Release list
Claude Obsidian v2.1.0 - Native Windows Compatibility
Native Windows Compatibility
Native Windows previously crashed on every vault command with
AttributeError: os has no attribute 'O_DIRECTORY' (#147). Now:
- Read-only works natively: inspection, dry-runs, and retrieval run on
Windows with real equivalent safety checks (path-based alias auditing,
lstat identity, symlink and junction rejection). - Writes fail closed, cleanly:
ERR UNSUPPORTED_PLATFORM(exit 2) before
any side effect — use WSL for mutations. - CRLF fixes for every platform: binary-mode reads end false hash
mismatches, and retrieval no longer returns zero results on CRLF vaults. - Windows CI: a new
windows-smokejob plus a 16-test compatibility
suite guard against regressions.
Full notes: CHANGELOG.md · Closes #147 via #150
Claude Obsidian v2.0.0 — Reliability and Evidence Refoundation
Claude Obsidian v2.0.0 — Reliability and Evidence Refoundation
Claude Obsidian 2.0 rebuilds the product around recoverable operations,
source-grounded knowledge, and a clean separation between product code and
user-owned vaults.
Highlights
- Added the host-neutral
claude_obsidianstandard-library core. - Added inspected, recoverable transactions with crash recovery and explicit
Git checkpoints. - Added source and claim provenance ledgers, deterministic linting, capability
contracts, and package validation. - Added dry-run-first vault initialization, adoption, migration, capture, and
extension setup. - Added a reproducible public-artifact builder with privacy, secret, path,
archive, and symlink defenses. - Normalized all 15 skills around one portable operation contract.
- Hardened retrieval, including bounded CJK tokenization and deterministic BM25
fallback behavior. - Replaced automatic shared writes and lifecycle commits with explicit,
reviewed operations. - Removed contributor-vault state, duplicate command mirrors, stale templates,
and unsupported claims from the public distribution.
Compatibility
Existing vaults remain readable. Migration is additive and idempotent, and
legacy raw-source metadata is preserved.
Verification
- Full hermetic suite and executable contracts: passed on Ubuntu and macOS,
Python 3.11–3.14 - Focused release tests: 39/39 passed
- Package validation: 15 skills, zero findings
- Secret review: 208 raw scanner detections classified as deterministic hashes,
examples, or negative security fixtures; zero unresolved secrets and zero
open GitHub secret-scanning alerts - Audited public artifact: zero symlinks; SHA-256
cafecd7090d8460b1485ec7ffc9fc3653b81a3805f59cdd6283face2d3430aeb
See CHANGELOG.md
for the complete change history and
README.md for
installation and usage.
v1.9.2: Compound Vault, Methodology Modes, and the Thinking Framework
This release brings the public repo current with the full v1.7 to v1.9.2 line. claude-obsidian is a self-organizing AI second brain for Obsidian + Claude Code: drop any source and Claude reads, links, and files it into one connected knowledge graph of plain Markdown you own.
Highlights since v1.6.0
- v1.7 "Compound Vault": Obsidian CLI as the default transport, hybrid retrieval (contextual prefix + BM25 + cosine rerank, per Anthropic's Sept 2024 contextual retrieval research), and per-file advisory locking that closes a latent multi-writer corruption hole. Verified at +32pp top-1 accuracy over the v1.6 baseline on a 50-query benchmark.
- v1.8 Methodology Modes: first-class organizational support for LYT, PARA, Zettelkasten, and Generic. New pages route automatically based on the mode you pick.
- v1.9 Thinking Framework: the 10-principle thinking loop as an invocable
/thinkskill, plus audit hardening across the plugin. - v1.9.2: Anthropic prompt-cache hardening and path-handling robustness in the contextual-prefix generator. Cache markers now attach only above the Haiku cacheable floor, with integer-only cache telemetry that preserves the opt-in data-egress posture.
make testis 9 hermetic suites green.
Install
claude plugin marketplace add AgriciDaniel/claude-obsidian
claude plugin install claude-obsidian@agricidaniel-claude-obsidianOr clone as a vault:
git clone https://github.com/AgriciDaniel/claude-obsidian
cd claude-obsidian && bash bin/setup-vault.shFree and open source (MIT). Your notes stay plain Markdown that you own. Full details in CHANGELOG.md.
v1.6
DragonScale is now a four-mechanism, opt-in memory layer for LLM wiki vaults.
TL;DR
- Shipped: DragonScale now has fold rollups, deterministic page addresses, semantic tiling lint, and boundary-first autoresearch.
- Gated on:
bash bin/setup-dragonscale.sh, plus local dependencies per mechanism. - Did not ship: fold-of-folds, calibrated tiling thresholds, hosted mode, or multi-vault rollup.
Same-day release sequence
The plugin version is 1.6.0 and the annotated tag v1.6.0 points at the release commit on main.
The narrative below includes 1.5.0, 1.5.1, and 1.6.0 because 2026-04-24 bundled three local release states into one cycle.
1.5.0 was Phase 3.5.
It hardened the DragonScale base.
It added the installer, test harness, changelog, Makefile targets, and opt-in wiring for the first three mechanisms.
It also synced plugin metadata to 1.5.0.
1.5.1 was Phase 3.6.
It fixed five narrow issues before Phase 4.
Those fixes covered tiling report path confinement, rollout baseline date, AGENTS wording, .raw/ manifest wording, and install-guide version drift.
1.6.0 was Phase 4.
It shipped Mechanism 4: boundary-first autoresearch.
It added scripts/boundary-score.py, wired no-topic /autoresearch into frontier suggestions, added boundary-score tests, and bumped the DragonScale spec to v0.4.
Four mechanisms
1. Fold operator
What:
extractive rollups of wiki/log.md entries into fold pages under wiki/folds/.
Invoke:
ask fold the log, dry-run k=3, then fold the log, commit k=3 if the output is right.
Skip:
skip when the log has no coherent batch, or when you want deletion-based compaction.
Folds summarize.
They do not garbage collect.
Status:
shipped in 1.5.0.
First real run:
wiki/folds/fold-k3-from-2026-04-23-to-2026-04-24-n8.md.
Observed output:
115 lines.
8 children.
Flat extractive fold.
2. Deterministic page addresses
What:
stable address: c-NNNNNN frontmatter for new non-meta wiki pages.
Invoke:
run ./scripts/allocate-address.sh directly, or let wiki-ingest assign addresses after DragonScale setup.
Skip:
skip when you do not need stable page IDs, or when more than one writer may assign addresses at the same time.
Status:
shipped in 1.5.0.
Format:
c-000042.
Important limit:
this is a creation-order counter.
It is not a content hash.
Validation run:
counter advanced from 2 to 3.
It returned c-000002.
The unassigned reservation gap is acceptable under the spec.
3. Semantic tiling lint
What:
embedding-based duplicate-page detection for the wiki.
Invoke:
run python3 ./scripts/tiling-check.py --peek for readiness, or python3 ./scripts/tiling-check.py --report wiki/meta/tiling-report-YYYY-MM-DD.md for a saved report.
Skip:
skip when ollama or nomic-embed-text is unavailable, or when uncalibrated review bands would create more noise than signal.
Status:
shipped in 1.5.0.
Default model:
local nomic-embed-text through ollama.
Default bands:
>= 0.90 error.
0.80 to 0.90 review.
Below 0.80 pass.
Important limit:
the defaults are seed values.
They are not calibrated to this vault.
First full report:
wiki/meta/tiling-report-2026-04-24.md.
4. Boundary-first autoresearch
What:
frontier scoring for wiki pages, used as candidate selection for no-topic /autoresearch.
Invoke:
run /autoresearch with no topic in a DragonScale-enabled vault, or run python3 ./scripts/boundary-score.py --json --top 5.
Skip:
skip when you want explicit topic control only, or when you want DragonScale limited to pure memory operations.
Status:
shipped in 1.6.0.
Formula:
boundary_score(p) = (out_degree(p) - in_degree(p)) * exp(-days_since_updated / 30).
What it does:
finds pages that point outward, receive few inbound links, and are still recent enough to be useful.
What it is not:
it is not pure memory.
It is agenda control.
The user still chooses the topic.
First run artifact:
wiki/meta/boundary-frontier-2026-04-24.md.
Top frontier facts:
22 scoreable pages.
7 positive-score pages reported.
Top score was 4.693.
DragonScale Memory scored 4.000.
The dragon curve, briefly
The Heighway dragon is built by paperfolding recursion.
Each construction step folds a turn sequence into a larger self-similar sequence.
The turn sequence is the regular paperfolding sequence, OEIS A014577.
See Dragon curve.
Its boundary has fractal dimension about 1.5236.
That number is useful here as orientation, not as proof.
It says the boundary is not a simple line and not a filled plane.
It is structured frontier.
That makes it a good analogy for a memory layer.
Recursive structure suggests hierarchical rollup.
Self-similar boundary suggests frontier-first agenda.
But this is analogy, not derivation.
DragonScale does not prove optimal memory behavior from curve geometry.
Enablement
Run:
bash bin/setup-dragonscale.shPrereqs:
base vault setup first, flock for allocator and tiling locks, python3 for Mechanisms 3 and 4, and local ollama plus nomic-embed-text for Mechanism 3.
Guide:
docs/dragonscale-guide.md.
Validation
Validation date:
2026-04-24.
Source:
wiki/log.md, entry DragonScale end-to-end validation pass (Teams, 6 tests).
Result:
the six-test menu passed.
make test stayed green throughout.
T0:
pulled nomic-embed-text for local embeddings.
Observed:
274 MB.
15 seconds wall time.
T1:
ran Mechanism 1 dry-run with k=3.
Observed:
dry-run OK.
8 children.
No em dashes in generated fold content.
T2:
ran Mechanism 2 real allocation.
Observed:
counter advanced from 2 to 3.
Returned c-000002.
The address was an unassigned reservation.
Gap accepted by spec.
T3:
ran Mechanism 3 full tiling with model present.
Observed:
41 pages scanned.
21 pages embedded.
20 pages skipped.
0 errors at >= 0.90.
15 review pairs in 0.80 to 0.90.
Top review pair:
0.8822 for Compounding Knowledge and LLM Wiki Pattern.
Interpretation:
legitimate semantic neighbor.
Not an automatic merge.
Report:
wiki/meta/tiling-report-2026-04-24.md.
T4:
ran Mechanism 1 commit.
Observed:
first real fold committed.
115 lines.
8 children.
Flat extractive fold.
Fold:
wiki/folds/fold-k3-from-2026-04-23-to-2026-04-24-n8.md.
Why it matters:
it flips the old status from dry-run only to one committed fold in this vault.
Closeout test status:
make test passed.
Closeout counts:
12 shell assertions for address allocation.
18 Python assertions for tiling.
44 Python assertions for boundary scoring.
Zero ollama dependency.
T6:
ran Mechanism 4 no-topic autoresearch.
Observed:
selected How does the LLM Wiki pattern work?.
Score 1.7022.
It was candidate number 3 after skipping the top source page and top self-reference.
Fetches:
6 web fetches.
Inputs included:
Karpathy gist.
RAG paper arXiv:2005.11401.
MemGPT paper arXiv:2310.08560.
Obsidian docs.
Output:
3 new concept pages filed.
Each included Primary Sources.
New concept pages:
wiki/concepts/Persistent Wiki Artifact.mdwiki/concepts/Source-First Synthesis.mdwiki/concepts/Query-Time Retrieval.md
Integration:
the new concepts were added to wiki/index.md and wiki/concepts/_index.md.
They extend How does the LLM Wiki pattern work?.
They cross-reference LLM Wiki Pattern.
What is not in v1.6.0
- No fold-of-folds.
- No hierarchical level stacking beyond one flat committed fold.
- No automatic deletion or compaction of child pages.
- No calibrated M3 thresholds.
- No literature-backed M3 bands for this specific vault.
- No automatic merging from tiling results.
- No pure-memory claim for M4.
- No hidden topic choice in M4.
- No hosted or managed mode.
- No multi-vault fold rollup.
- No multi-writer address-assignment guarantee.
- No alias-aware full Obsidian wikilink resolver in boundary scoring.
- No persistent boundary-score cache.
- No automatic autoresearch trigger.
Upgrade from v1.4.x
This is non-breaking for base users.
Upgrade path:
- Pull
main. - Reinstall as a plugin if your agent setup requires it.
- Keep using the normal v1.4.x wiki workflow if you do not want DragonScale.
- Opt into DragonScale only when ready:
bash bin/setup-dragonscale.shIf you do not opt in, nothing changes from your v1.4.x workflow.
DragonScale is feature-detected.
wiki-ingest, wiki-lint, and /autoresearch fall back when the setup state or helper dependencies are absent.
Attribution
Diagrams in this release note are original SVGs under the repo license (MIT).
The dragon curve and paperfolding references are text-only. For images and construction history, see the Wikipedia article linked above.
Fonts used in the SVGs: Space Grotesk (SIL Open Font License), with system-ui fallback.
Credits
- Karpathy LLM Wiki pattern.
- Heighway paperfolding and the dragon curve analogy.
- Codex sub-agent delegation for the release validation and review loop.
v1.4.3
Cross-link with claude-canvas
Links claude-obsidian and claude-canvas so users can discover both plugins and understand when to use which.
Changes
- plugin.json: Added
canvasandvisualkeywords for discoverability - canvas SKILL.md: Added "See Also" section directing users to claude-canvas for advanced canvas orchestration (12 templates, 6 layout algorithms, AI generation, presentations)
- README.md: Added callout after canvas commands table pointing to claude-canvas
Scope clarification
| Plugin | Use when |
|---|---|
claude-obsidian /canvas |
Wiki-scoped visual boards inside your vault |
| claude-canvas | Full visual production — templates, layout algorithms, AI generation, presentations, export |
Both plugins complement each other. Install both for the complete canvas experience.
v1.4.2
Bug Fix
Fixed: Infinite Stop hook loop (#critical)
The Stop hook used "type": "prompt" with an empty matcher, causing an infinite loop for all users:
- Claude stops → Stop hook fires → prompt asks Claude to evaluate a condition
- Claude responds "nothing to do" → that's a new Stop event → hook fires again
- Repeat forever, burning context and blocking the session
Fix: Replaced with "type": "command" that runs a shell script checking git diff for actual wiki/ file changes. If no wiki files were modified, it exits silently — no output means Claude is never prompted, breaking the loop.
Improved: Hook architecture
- SessionStart: Added
startup|resumematcher (was empty — fired in every project). Added command hook tocat wiki/hot.mddirectly for faster context restore. - PostCompact (new): Re-injects hot cache after context compaction so wiki context survives long sessions.
- PostToolUse (new): Auto-commits wiki changes on Write/Edit operations.
Upgrade
Users on v1.4.1 or earlier should update to stop the loop. No configuration changes needed.
v1.4.1: Fix plugin install command syntax
Hotfix for an incorrect install command in the v1.4.0 docs.
The Problem
The README and install guide in v1.4.0 (and all prior releases) showed this install command:
claude plugin install github:AgriciDaniel/claude-obsidianThis form does not exist in Claude Code. Users trying it see:
Failed to install plugin "github:AgriciDaniel/claude-obsidian": Plugin "github:AgriciDaniel/claude-obsidian" not found in any configured marketplace
The Fix
Per the official plugin-marketplaces docs, plugin installation is a two-step process. First you add the marketplace catalog, then install the plugin from it.
# Step 1: add the marketplace
claude plugin marketplace add AgriciDaniel/claude-obsidian
# Step 2: install the plugin
claude plugin install claude-obsidian@claude-obsidian-marketplaceVerify the install:
claude plugin listIn any Claude Code session, type /wiki to start.
Files Changed
README.md: Option 2 install section rewritten with the two-step flowdocs/install-guide.md: Same correction.claude-plugin/plugin.json: 1.4.0 to 1.4.1.claude-plugin/marketplace.json: 1.4.0 to 1.4.1
Upgrade
If you are on v1.4.0 or earlier and could not install:
claude plugin marketplace add AgriciDaniel/claude-obsidian
claude plugin install claude-obsidian@claude-obsidian-marketplaceIf you already have the plugin installed and want to update:
claude plugin marketplace update claude-obsidian-marketplacev1.4.0: Audit Fixes, Multi-Agent Compatibility, Bases Dashboard
External audit (compass artifact, 21 sources) flagged 8 actionable items against current best practices for Agent Skills, Claude Code hooks, Obsidian v1.9 to v1.12, and JSON Canvas 1.0. This release addresses all of them and adds multi-agent compatibility files at zero cost to existing users.
Audit score: 6.5/10, target 8/10 after this release.
Security Note
This release also scrubs a placeholder email reference from marketplace.json and supporting docs, and rewrites git history to remove it from all prior commits. The owner field in marketplace.json now uses the GitHub profile URL instead of an email.
Tier 1: Critical Fixes
Dataview to Bases Dashboard
- NEW
wiki/meta/dashboard.base: native Obsidian Bases dashboard with 6 views (Recent Activity, Seed Pages, Entities Missing Sources, Open Questions, Comparisons, Sources). Works in Obsidian v1.9.10+ with zero plugin install. wiki/meta/dashboard.md: now embeds the Bases file as primary. Legacy Dataview queries retained as optional fallback for older Obsidian versions.README.mdandskills/wiki/references/plugins.md: Plugins section reorganized. Bases (core, no install) is now primary, Dataview marked optional/legacy.
Canvas Spec Completeness
skills/canvas/references/canvas-spec.md updated with previously missing JSON Canvas 1.0 fields:
- Group nodes:
backgroundandbackgroundStyle(cover/ratio/repeat) - Edges:
fromEnd(default"none") andtoEnd(default"arrow"). Asymmetric defaults that produce a single arrow without explicit specification. - Hex ID format documented as the official JSON Canvas convention alongside the descriptive ID alternative.
Version Alignment
Bumped from 1.3.0 to 1.4.0 to keep plugin.json in lockstep with the GitHub release tag (v1.4.0).
Tier 2: Important Improvements
Hooks Hardening + PostCompact
hooks/hooks.json:
- SessionStart now uses both
commandandprompttypes. The command type runs[ -f wiki/hot.md ] && cat wiki/hot.md || trueas the canonical safety check. Works in non-vault sessions without erroring. Matcher:startup|resume. - NEW PostCompact hook re-injects
wiki/hot.mdafter context compaction. Hook-injected context does NOT survive compaction (onlyCLAUDE.mddoes), so this restores the hot cache mid-session. - PostToolUse auto-commit now guarded by
[ -d .git ]so it never errors in non-git directories. - NEW
hooks/README.mddocuments all hooks plus the known plugin-hooks STDOUT bug (anthropics/claude-code#10875) and workarounds.
MCP Setup Updated
skills/wiki/references/mcp-setup.md:
- NEW Option D: Obsidian CLI (v1.12+). No MCP server, no plugins, no TLS workarounds. Recommended for new installs.
> [!warning]callout above theNODE_TLS_REJECT_UNAUTHORIZED: "0"line explaining the process-wide TLS bypass and pointing users to Option D as the secure alternative.
Custom Callouts Documented
skills/wiki-ingest/SKILL.md: explicit note that[!contradiction]is a custom callout requiringvault-colors.css.skills/wiki/references/css-snippets.md: full documentation of all four custom callouts (contradiction,gap,key-insight,stale) with their colors, icons, use cases, and built-in fallback equivalents.
Tier 3: Multi-Agent Compatibility
The plugin now ships with bootstrap files for 6 AI agents at zero compatibility cost. Skills are already in the cross-platform Agent Skills format (only name + description in frontmatter, matching the kepano/obsidian-skills convention).
| File | For |
|---|---|
AGENTS.md |
Codex CLI, OpenCode |
GEMINI.md |
Gemini CLI, Antigravity |
.cursor/rules/claude-obsidian.mdc |
Cursor (always-on rules) |
.windsurf/rules/claude-obsidian.md |
Windsurf Cascade |
.github/copilot-instructions.md |
GitHub Copilot |
bin/setup-multi-agent.sh |
Idempotent symlink installer |
Run once to wire up the skills directory in every agent's expected location:
bash bin/setup-multi-agent.shStyle Cleanup
Scrubbed all em dashes from every skill, hook, doc, and bootstrap file (249 total replacements across 26 files). Skills now use periods, commas, and colons throughout for cleaner natural prose.
Already Resolved in v1.1 (audit was outdated)
For completeness, these audit findings were already addressed in v1.1:
- defuddle, obsidian-bases, obsidian-markdown skills shipped
- URL ingestion, vision ingestion, delta tracking documented in wiki-ingest
- Multi-depth wiki-query (Quick / Standard / Deep modes)
- PostToolUse auto-commit hook
- Invalid
allowed-toolsfield removed from all SKILL.md files - All templates use plural
tags/aliases(Obsidian v1.9.10+ requirement) - Custom callouts CSS already in
.obsidian/snippets/vault-colors.css
Deferred to v1.5.0
/adoptcommand (import existing vaults)- Vault graph analysis enhancement to wiki-lint
- Semantic search via qmd MCP server
- Marp slide output
Verification
After upgrading:
- Open
wiki/meta/dashboard.basein Obsidian. Confirm the table view renders. - Disable Dataview plugin. Confirm the Bases dashboard still works.
- Open Claude Code in a non-vault directory. SessionStart hook should not error.
- Run
bash bin/setup-multi-agent.sh. Symlinks created in~/.codex/skills/, etc. - Edit any wiki page. Auto-commit hook fires.
v1.1 — URL ingestion, vision, delta tracking, 3 new skills
What's New in v1.1
3 New Skills
/obsidian-markdown — Full Obsidian Flavored Markdown syntax reference. Covers wikilinks, embeds, all callout types, properties rules, highlights, math, Mermaid diagrams, and what not to do. Consulted automatically when writing wiki pages.
/obsidian-bases — Create and edit Obsidian Bases (.base files) — Obsidian's native database layer. Correct filters:/views:/formulas: syntax with wiki-specific templates for dashboards, entity indexes, and source trackers. First LLM wiki plugin to support this feature.
/defuddle — Web page cleaner powered by defuddle-cli. Strips ads, nav bars, cookie banners, and boilerplate before ingesting web content. Saves 40–60% tokens on typical articles.
wiki-ingest Upgrades
- URL ingestion — Pass any
https://URL directly. Auto-fetches, runs defuddle if installed, saves to.raw/articles/, then proceeds through normal ingest pipeline. - Image/vision ingestion — Pass
.png,.jpg,.gif,.webpetc. Claude reads the image, extracts text and concepts via vision, saves description to.raw/images/, then ingests. - Delta tracking —
.raw/.manifest.jsontracks a hash per ingested source. Re-running ingest on unchanged files is skipped automatically. Useforce ingestto override.
wiki-query: 3 Query Depths
| Mode | Trigger | Token cost | Best for |
|---|---|---|---|
| Quick | query quick: ... |
~1,500 | Fast fact lookups from hot cache + index |
| Standard | default | ~3,000 | Most questions |
| Deep | query deep: ... |
~8,000+ | Synthesis, comparisons, full analysis |
Auto-Commit Hook
Every Write or Edit to wiki/ or .raw/ now triggers an automatic git commit. The vault is always versioned without manual intervention.
Fixes
- Removed invalid
allowed-toolsfield from all 10 SKILL.md files — it was never a valid skill frontmatter attribute and was being silently ignored. Skills now match the Agent Skills spec (same format askepano/obsidian-skills). - Canvas skill now references the JSON Canvas open standard and
kepano/obsidian-skillsas the authoritative cross-platform spec.
Ecosystem Research Filed
Comprehensive research across 16+ Claude + Obsidian projects now filed in the demo vault:
wiki/comparisons/claude-obsidian-ecosystem.md— full feature matrixwiki/concepts/cherry-picks.md— prioritised v1.2+ roadmap- 6 new entity pages for key projects in the ecosystem


