Add canvas/visual keywords, See Also section in canvas SKILL.md,
and callout in README pointing users to claude-canvas for advanced
canvas orchestration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Stop hook used "type": "prompt" with an empty matcher, which caused an
infinite loop: Claude responds to evaluate the condition → that triggers Stop
again → hook fires again → repeat forever.
Changes:
- Stop hook: changed to "type": "command" that checks git diff for actual
wiki/ file changes before outputting anything. Silent exit = no loop.
- SessionStart: added matcher "startup|resume" so it only fires on relevant
events, plus a command hook to cat hot.md directly.
- Added PostCompact hook to re-inject hot cache after context compaction.
- Added PostToolUse hook to auto-commit wiki changes on Write/Edit.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Files the complete v1.1 to v1.4.1 release cycle as a session note in
wiki/meta/. Documents everything shipped, all key lessons (plugin install
syntax, allowed-tools frontmatter, Bases vs Dataview, PostCompact hook
necessity, git filter-repo two-pass scrub), and the current plugin state.
Updated:
- wiki/meta/claude-obsidian-v1.4-release-session.md (NEW)
- wiki/log.md (new entry at top)
- wiki/hot.md (refreshed with current session context)
- wiki/overview.md (page count 25 to 26)
- wiki/index.md (page count 25 to 26)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Claude Code plugin installation is a two-step process per the official
docs at code.claude.com/docs/en/plugin-marketplaces. There is no
'claude plugin install github:owner/repo' form. Users must first add the
marketplace catalog, then install the plugin from it by name.
Fixes:
* README.md: Option 2 install section now shows the two-step flow:
claude plugin marketplace add AgriciDaniel/claude-obsidian
claude plugin install claude-obsidian@claude-obsidian-marketplace
* docs/install-guide.md: Same correction, same syntax.
* plugin.json: 1.4.0 to 1.4.1
* marketplace.json: 1.4.0 to 1.4.1 (both metadata.version and
plugins[0].version)
This fixes the reported "Plugin not found in any configured marketplace"
error users see when they try the old single-command form.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaces owner.email field in marketplace.json with owner.url pointing to
GitHub profile. Also removes email mentions from the v1.2.0 release session
note and the full-repo-audit plan doc. No real contact email should ship in
the public plugin manifest.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
External audit flagged 8 actionable items against current best practices for
Agent Skills, Claude Code hooks, Obsidian v1.9-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.
Tier 1, critical fixes:
* wiki/meta/dashboard.base: NEW Obsidian Bases dashboard (native, no plugin
needed). Replaces Dataview as the primary dashboard. Six views: Recent
Activity, Seed Pages, Entities Missing Sources, Open Questions,
Comparisons, Sources.
* wiki/meta/dashboard.md: now embeds dashboard.base. Legacy Dataview queries
retained as optional fallback for users on Obsidian < 1.9.10.
* README.md and skills/wiki/references/plugins.md: Plugins section
reorganized to recommend Bases (core, no install) primary, Dataview
optional/legacy.
* skills/canvas/references/canvas-spec.md: added missing JSON Canvas 1.0
fields. Group nodes now document background and backgroundStyle (cover,
ratio, repeat). Edges document fromEnd (default 'none') and toEnd
(default 'arrow') asymmetric defaults. Hex ID convention noted alongside
descriptive ID alternative.
* .gitignore: track wiki/meta/dashboard.base explicitly.
Tier 2, important improvements:
* hooks/hooks.json: SessionStart now uses both command type
([ -f wiki/hot.md ] && cat ...) and prompt type. Command type is the
canonical safety check that works in non-vault sessions without erroring.
Matcher: startup|resume.
* hooks/hooks.json: NEW PostCompact hook re-injects hot cache after context
compaction (hook-injected context does not survive compaction; CLAUDE.md
does).
* hooks/hooks.json: PostToolUse auto-commit now guarded by [ -d .git ].
* hooks/README.md: NEW documentation including known plugin-hooks STDOUT bug
(anthropics/claude-code#10875) and workarounds.
* skills/wiki/references/mcp-setup.md: added Option D (Obsidian CLI) for
v1.12+. Added warning callout above NODE_TLS_REJECT_UNAUTHORIZED line
explaining process-wide TLS bypass and recommending Option D as the
secure alternative.
* skills/wiki-ingest/SKILL.md: documented [!contradiction] custom callout
CSS dependency on vault-colors.css snippet.
* skills/wiki/references/css-snippets.md: full documentation of all four
custom callouts (contradiction, gap, key-insight, stale) with built-in
fallback equivalents.
Tier 3, multi-agent compatibility (low complexity, high reach):
* AGENTS.md: Codex CLI / OpenCode bootstrap.
* GEMINI.md: Gemini CLI / Antigravity bootstrap.
* .cursor/rules/claude-obsidian.mdc: Cursor always-on rules.
* .windsurf/rules/claude-obsidian.md: Windsurf Cascade rules.
* .github/copilot-instructions.md: GitHub Copilot conventions.
* bin/setup-multi-agent.sh: idempotent symlink installer for Codex,
OpenCode, Gemini, Cursor, Windsurf. Wires up the skills/ directory in
each agent's expected location.
Style 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.
Version: 1.3.0 to 1.4.0 (aligns plugin.json with GitHub release tag format).
Already resolved in v1.1 (no action needed):
* defuddle, obsidian-bases, obsidian-markdown skills shipped
* URL ingestion, vision ingestion, delta tracking docs
* Multi-depth wiki-query (Quick / Standard / Deep)
* PostToolUse auto-commit hook
* allowed-tools field removed from all SKILL.md files
* All templates already use plural tag/alias forms
* Custom callouts CSS already in vault-colors.css
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Removes all 41 skool-hub images from tracking, cleans all canvas
and workspace.json references. Adds _attachments/images/skool-hub/
to .gitignore. History purge follows.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- Header: claude-obsidian-gif-cover-16x9.gif (16:9 animated cover)
- What It Does: 1x1 gif + welcome-canvas side by side
- Also adds static PNG variants (cover-16x9, cover-square) to wiki/meta/
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Renames wiki/meta/cover.gif → wiki/meta/cosmic-brain-cover.gif to
force GitHub CDN to serve a fresh URL. Also removes stray root-level
cover.gif from a previous commit.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Cleans up the README hero — welcome-canvas.gif now leads alone.
Graph and workflow GIFs moved to the bottom near Seed Vault where
they're contextually relevant.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Visual demo of the welcome.canvas board showing the three-zone
drop-process-grow layout.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
workspace.json — Obsidian saved state with main.canvas as active tab
- Active leaf: wiki/canvases/main.canvas (opened when vault loads)
- Contains user's canvas: title card, General zone, Wiki Pages zone
- Nodes: logo, LLM Wiki Pattern note, insight text card + user additions
workspace-visual.json — updated default tab order
- Tab 1 (default): wiki/canvases/main.canvas
- Tab 2: projects/visual-vault/design-ideas.canvas
- Tab 3: wiki/Wiki Map.canvas
- Tab 4: Graph view
- Right sidebar: Calendar + Thino + Backlinks (open)
wiki/canvases/main.canvas — first real canvas with user content
- General zone: logo-pro.png, LLM Wiki Pattern note, insight text
- Wiki Pages zone: Cosmic Brain cover + GIFs (user additions)
.gitignore — added patterns for personal files Obsidian drops in root
Critical:
- find precedence bug fixed: added \( -name '*.png' -o -name '*.jpg' \) grouping
so -newer applies to BOTH extensions, not just .jpg
- Auto-positioning row y-detection: replaced broken right-half heuristic with
min(n.y for all inside) — matches canvas-spec.md pseudocode
- WIKI.md canvas color table corrected: 1=red,2=orange,3=yellow,4=green,5=cyan,6=purple
(was wrong mapping 1=blue etc from the graph CSS scheme, not canvas colors)
High:
- ID generation: full Unix timestamp (10 digits) instead of last-4-digits
+ added collision fallback (-2, -3 suffix)
- README: added /canvas add text and /canvas add pdf to commands table
- Aspect ratio: removed duplicate partial table from SKILL.md — now defers
to canvas-spec.md as single source of truth
- new op: writes to wiki/overview.md not wiki/index.md (index has fixed schema)
- from banana: added explicit note that /banana is an optional external skill
Medium:
- add note: clarified 'type: file' vs 'type: link' — .md files use file nodes
- zone fallback y: changed from -140 (overlaps starter) to 280 (safe below all content)
- CLAUDE.md: added /save, /autoresearch, /canvas to Plugin Skills table
Low:
- allowed-tools: removed Grep (unused by any documented operation)
- Frontmatter: flattened description to single-line quoted string (fixes IDE
YAML block scalar parsing diagnostic on lines 4-9)
New files:
commands/canvas.md — slash command with full trigger table
skills/canvas/SKILL.md — complete skill: open, new, add image/text/pdf/note,
zone, list, from-banana operations
skills/canvas/references/canvas-spec.md — Obsidian canvas JSON spec:
coordinate system, all node types, color table,
image sizing by aspect ratio, auto-positioning
pseudocode, common mistakes, full example
Auto-positioning algorithm (bbox math):
- Finds rightmost node in target zone
- Places next node at rightmost_x + 40, same row y
- If overflow: wraps to new row (max_y_in_zone + 20)
- Falls back to below all content if no zone found
Banana integration:
- /canvas from banana: checks .recent-images.txt first, then
filesystem find -newer 10min, presents list for confirmation
- After any /banana run: suggests /canvas from banana
Updated:
skills/wiki/SKILL.md — added /canvas to routing table
skills/wiki/references/plugins.md — added Calendar + Thino with
pre-installed note + manual install fallback
README.md — /canvas in commands table + file structure
calendar/data.json — configured through Obsidian UI:
- Word count dots: #ebcb8b, 250 words/dot, calendar + menu
- Task dots: #d08770, max 1 incomplete, calendar + menu
- Link indicators: #a3be8c, menu only
- Backlink indicators: #5e81ac, menu only
- Zettel tracking: #b48ead, calendar + menu
community-plugins.json — enabled through Obsidian (may include dataview etc)
workspace.json — updated open tabs/layout state
graph.json — Obsidian reset colors on close (expected behavior)
Copyright clean-up for public educational vault:
- Deleted wiki/sources/Nate Herk LLM Wiki Transcript.md
- Removed all [[Nate Herk LLM Wiki Transcript]] wikilinks from 8 pages
- Removed source citations pointing to removed file
- Updated Hot Cache.md: removed attribution to specific person
- Updated Andrej Karpathy.md: first_mentioned now points to concept page
- Updated Wiki Map.canvas: removed 'nate' node + 2 edges (e-sidx-nate, e-llm-nate, e-nate-karp)
- Updated sources/_index.md: empty transcripts section
- Updated index.md, hot.md, log.md, overview.md: no Nate Herk entries
Vault now contains 100% original synthesis content:
3 concept pages + 1 entity page + navigation pages
All original, attribution-free, safe for public distribution
calendar/data.json:
- shouldConfirmBeforeCreate: false
- localeOverride: en-GB
- weekStart: monday
- showNoteIndicator: true
- showWeeklyNote: false
thino/data.json: full UI config with daily save mode, list view
.gitignore updated:
.obsidian/plugins/*/data.json (still blocks API keys, sync tokens, etc)
!calendar/data.json (exception — safe config, no secrets)
!thino/data.json (exception — safe config, no secrets)
Future users now get full plugin configuration out of the box.
Users who clone the repo now get the full setup automatically:
- workspace.json tracked in git (removed from .gitignore)
- Opens with Wiki Map canvas as default view
- Graph view pre-configured: path:wiki filter, 5 color groups, proper physics
- Obsidian reads this on first open before any state reset occurs
- bin/setup-vault.sh — one-time setup script
- Writes correct graph.json (filter + colors)
- Writes app.json (excludes plugin dirs from graph)
- Writes appearance.json (enables vault-colors CSS)
- Prints clear next-step instructions
- Usage: bash bin/setup-vault.sh
- README updated: Option 1 now shows clone + setup.sh as recommended path
- Clear explanation of what the script does
- 2-minute setup flow vs manual configuration
Result: users clone, run setup.sh, open Obsidian — done.
Graph shows only wiki pages, color-coded, no noise.