feat: v1.4.0 audit fixes, multi-agent compatibility, Bases dashboard
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>
This commit is contained in:
@@ -9,7 +9,7 @@ description: >
|
||||
"running notetaker", "persistent memory", "llm wiki".
|
||||
---
|
||||
|
||||
# wiki — Claude + Obsidian Knowledge Companion
|
||||
# wiki: Claude + Obsidian Knowledge Companion
|
||||
|
||||
You are a knowledge architect. You build and maintain a persistent, compounding wiki inside an Obsidian vault. You don't just answer questions. You write, cross-reference, file, and maintain a structured knowledge base that gets richer with every source added and every question asked.
|
||||
|
||||
@@ -74,7 +74,7 @@ updated: YYYY-MM-DDTHH:MM:SS
|
||||
# Recent Context
|
||||
|
||||
## Last Updated
|
||||
YYYY-MM-DD — [what happened]
|
||||
YYYY-MM-DD. [what happened]
|
||||
|
||||
## Key Recent Facts
|
||||
- [Most important recent takeaway]
|
||||
@@ -132,7 +132,7 @@ Steps:
|
||||
Create this file in the vault root when scaffolding a new project vault (not this plugin directory):
|
||||
|
||||
```markdown
|
||||
# [WIKI NAME] — LLM Wiki
|
||||
# [WIKI NAME]: LLM Wiki
|
||||
|
||||
Mode: [MODE A/B/C/D/E/F]
|
||||
Purpose: [ONE SENTENCE]
|
||||
@@ -146,16 +146,16 @@ Created: YYYY-MM-DD
|
||||
## Conventions
|
||||
|
||||
- All notes use YAML frontmatter: type, status, created, updated, tags (minimum)
|
||||
- Wikilinks use [[Note Name]] format — filenames are unique, no paths needed
|
||||
- .raw/ contains source documents — never modify them
|
||||
- wiki/index.md is the master catalog — update on every ingest
|
||||
- wiki/log.md is append-only — never edit past entries
|
||||
- Wikilinks use [[Note Name]] format: filenames are unique, no paths needed
|
||||
- .raw/ contains source documents: never modify them
|
||||
- wiki/index.md is the master catalog: update on every ingest
|
||||
- wiki/log.md is append-only: never edit past entries
|
||||
- New log entries go at the TOP of the file
|
||||
|
||||
## Operations
|
||||
|
||||
- Ingest: drop source in .raw/, say "ingest [filename]"
|
||||
- Query: ask any question — Claude reads index first, then drills in
|
||||
- Query: ask any question: Claude reads index first, then drills in
|
||||
- Lint: say "lint the wiki" to run a health check
|
||||
- Archive: move cold sources to .archive/ to keep .raw/ clean
|
||||
```
|
||||
|
||||
@@ -71,7 +71,18 @@ Guide the user to set these in Graph View settings (click the settings icon in t
|
||||
|
||||
---
|
||||
|
||||
## How the Callouts Look
|
||||
## Custom Callouts
|
||||
|
||||
This vault defines **four custom callout types** beyond Obsidian's built-in set (`note`, `tip`, `warning`, `info`, `todo`, `success`, `question`, `failure`, `danger`, `bug`, `example`, `quote`). They render correctly **only when `vault-colors.css` is enabled**. Without the snippet, they fall back to default callout styling (still readable, just plain).
|
||||
|
||||
| Custom callout | Color | Icon | Use for |
|
||||
|---|---|---|---|
|
||||
| `contradiction` | reddish-brown (rgb 209,105,105) | `lucide-alert-triangle` | New source conflicts with existing claim |
|
||||
| `gap` | beige (rgb 220,220,170) | `lucide-help-circle` | Topic has no source yet |
|
||||
| `key-insight` | bright blue (rgb 79,193,255) | `lucide-lightbulb` | Important takeaway worth highlighting |
|
||||
| `stale` | gray (rgb 128,128,128) | `lucide-clock` | Claim may be outdated, source older than threshold |
|
||||
|
||||
### Usage
|
||||
|
||||
Use these in wiki pages to flag important states:
|
||||
|
||||
@@ -89,6 +100,21 @@ Use these in wiki pages to flag important states:
|
||||
> This claim may be outdated. Source was from 2022.
|
||||
```
|
||||
|
||||
### Why custom callouts (vs built-in)
|
||||
|
||||
The four custom types map to wiki-specific concepts that don't fit cleanly into Obsidian's default set:
|
||||
|
||||
- `contradiction` is more specific than `warning`: it signals a **resolvable conflict** between two wiki pages, not a generic warning.
|
||||
- `gap` is more specific than `question`: it signals a **missing source**, an actionable improvement.
|
||||
- `key-insight` is more specific than `tip`: it marks **the** most important takeaway from a section, used sparingly.
|
||||
- `stale` has no built-in equivalent: it signals time-based decay of a claim.
|
||||
|
||||
If you don't want custom callouts, replace them with built-ins:
|
||||
- `[!contradiction]` → `[!warning] Contradiction`
|
||||
- `[!gap]` → `[!question] Gap`
|
||||
- `[!key-insight]` → `[!tip] Key insight`
|
||||
- `[!stale]` → `[!warning] Stale`
|
||||
|
||||
---
|
||||
|
||||
## Minimal Theme (Recommended)
|
||||
|
||||
@@ -26,10 +26,10 @@ sources:
|
||||
```
|
||||
|
||||
**status values:**
|
||||
- `seed` — exists, barely populated
|
||||
- `developing` — has real content, not yet complete
|
||||
- `mature` — comprehensive, well-linked
|
||||
- `evergreen` — unlikely to need updates
|
||||
- `seed`: exists, barely populated
|
||||
- `developing`: has real content, not yet complete
|
||||
- `mature`: comprehensive, well-linked
|
||||
- `evergreen`: unlikely to need updates
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
# MCP Setup
|
||||
|
||||
MCP lets Claude read and write vault notes directly without copy-paste. Two options.
|
||||
MCP lets Claude read and write vault notes directly without copy-paste. Four options ordered from simplest to most featureful.
|
||||
|
||||
> [!tip] Recommendation
|
||||
> If you have **Obsidian v1.12 or newer**, start with **Option D: Obsidian CLI**. It needs no MCP server, no plugins, and no TLS workarounds. Use Options A or B only if you need persistent MCP integration or are on an older Obsidian version.
|
||||
|
||||
---
|
||||
|
||||
@@ -41,7 +44,8 @@ claude mcp add-json obsidian-vault '{
|
||||
}' --scope user
|
||||
```
|
||||
|
||||
`NODE_TLS_REJECT_UNAUTHORIZED: "0"` is required because the REST API uses a self-signed certificate.
|
||||
> [!warning] Security
|
||||
> `NODE_TLS_REJECT_UNAUTHORIZED: "0"` **disables TLS certificate verification process-wide** for the MCP server. It is required here because the Local REST API plugin uses a self-signed certificate. This is acceptable for `127.0.0.1` (localhost) connections only. Never use this setting for any non-loopback connection. If you are uncomfortable with the global TLS bypass, prefer **Option D (Obsidian CLI)** or **Option B (filesystem-based)** which avoid this entirely.
|
||||
|
||||
Capabilities: read notes, write notes, search, patch frontmatter fields, append under headings.
|
||||
|
||||
@@ -71,6 +75,45 @@ No MCP needed. Use curl in bash throughout the session. See `rest-api.md` for al
|
||||
|
||||
---
|
||||
|
||||
## Option D: Obsidian CLI (recommended for v1.12+)
|
||||
|
||||
Obsidian shipped a native CLI in v1.12 (2026). It exposes vault operations directly to the terminal. No REST API plugin, no MCP server, no self-signed certs, no TLS workarounds. Claude calls it through the Bash tool.
|
||||
|
||||
**Check if available:**
|
||||
```bash
|
||||
which obsidian-cli 2>/dev/null && obsidian-cli --version
|
||||
# or, on flatpak:
|
||||
flatpak run md.obsidian.Obsidian --cli --version
|
||||
```
|
||||
|
||||
**Common operations:**
|
||||
```bash
|
||||
# List all notes in a folder
|
||||
obsidian-cli list /path/to/vault wiki/
|
||||
|
||||
# Read a note
|
||||
obsidian-cli read /path/to/vault wiki/index.md
|
||||
|
||||
# Create or update a note
|
||||
obsidian-cli write /path/to/vault wiki/new-note.md < content.md
|
||||
|
||||
# Search notes by content
|
||||
obsidian-cli search /path/to/vault "query term"
|
||||
```
|
||||
|
||||
**Why prefer this**:
|
||||
- No plugin install required (CLI is built into Obsidian)
|
||||
- No MCP server process to manage
|
||||
- No TLS certificate bypass needed
|
||||
- Survives Obsidian restarts (no persistent connection)
|
||||
- Works identically across desktop and headless environments
|
||||
|
||||
**When to use Options A/B/C instead**: If you need persistent semantic search, frontmatter patching, or are on Obsidian < v1.12.
|
||||
|
||||
The `kepano/obsidian-skills` repo includes an `obsidian-cli` skill that wraps these commands as reusable patterns. Install it alongside this plugin for first-class CLI support.
|
||||
|
||||
---
|
||||
|
||||
## Use `--scope user`
|
||||
|
||||
Both MCP options use `--scope user` so the vault is available across all Claude Code projects, not just the one where you ran the command.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Install Obsidian
|
||||
|
||||
### Linux (Flatpak — recommended)
|
||||
### Linux (Flatpak: recommended)
|
||||
|
||||
Check if installed:
|
||||
```bash
|
||||
@@ -41,28 +41,39 @@ After installing: Obsidian > Manage Vaults > Open Folder as Vault > select your
|
||||
|
||||
---
|
||||
|
||||
## Recommended Plugins
|
||||
## Core Plugins (Built-in: No Install Required)
|
||||
|
||||
These ship with Obsidian. Enable them in Settings > Core Plugins:
|
||||
|
||||
| Plugin | Purpose |
|
||||
|--------|---------|
|
||||
| **Bases** | Native database-like views for `.base` files. Powers `wiki/meta/dashboard.base`. Available since Obsidian v1.9.10 (August 2025). **Replaces Dataview for most wiki use cases.** |
|
||||
| **Properties** | Visual frontmatter editor. Always enabled. |
|
||||
| **Backlinks** | Outgoing/incoming links pane. |
|
||||
| **Outline** | Document heading navigation. |
|
||||
|
||||
## Recommended Community Plugins
|
||||
|
||||
Install via Settings > Community Plugins > Turn off Restricted Mode > Browse.
|
||||
|
||||
| Plugin | Purpose |
|
||||
|--------|---------|
|
||||
| **Dataview** | Query vault as a database. Powers dashboards in `wiki/meta/`. |
|
||||
| **Templater** | Auto-populate frontmatter on note creation from `_templates/`. |
|
||||
| **Obsidian Git** | Auto-commit every 15 minutes. Protects against bad writes. |
|
||||
| **Calendar** | Right-sidebar calendar with word count, task, and link indicators. Pre-installed in this vault via `.obsidian/plugins/calendar/`. |
|
||||
| **Thino** | Quick memo capture panel in right sidebar. Pre-installed via `.obsidian/plugins/thino/`. |
|
||||
| **Iconize** | Visual folder icons for navigation. |
|
||||
| **Minimal Theme** | Best dark theme for dense information display. |
|
||||
| **Dataview** *(optional/legacy)* | Only needed if you're on Obsidian < 1.9.10 or want to use the legacy `dashboard.md` queries. The primary dashboard now uses Bases. |
|
||||
|
||||
**Calendar and Thino are pre-installed** — they ship with this vault. Enable them in Settings → Community Plugins → toggle on. No download needed.
|
||||
**Calendar and Thino are pre-installed**. They ship with this vault. Enable them in Settings → Community Plugins → toggle on. No download needed.
|
||||
|
||||
If installing in a different vault: download `main.js` + `manifest.json` from their GitHub releases into `.obsidian/plugins/calendar/` and `.obsidian/plugins/thino/` respectively.
|
||||
|
||||
Optional additions:
|
||||
- **Smart Connections** — semantic search across all notes
|
||||
- **QuickAdd** — macros for fast note creation
|
||||
- **Folder Notes** — click a folder to open an overview note
|
||||
- **Smart Connections**: semantic search across all notes
|
||||
- **QuickAdd**: macros for fast note creation
|
||||
- **Folder Notes**: click a folder to open an overview note
|
||||
|
||||
---
|
||||
|
||||
@@ -78,7 +89,8 @@ Set the default folder to `.raw/` in the extension settings.
|
||||
|
||||
## After Installing Plugins
|
||||
|
||||
1. Enable Dataview: Settings > Community Plugins > toggle on
|
||||
1. Enable Bases: Settings > Core Plugins > toggle on (already on by default in Obsidian v1.9.10+)
|
||||
2. Enable Templater: Settings > Templater > set template folder to `_templates`
|
||||
3. Enable Obsidian Git: Settings > Obsidian Git > Auto backup interval: 15 minutes
|
||||
4. Enable the CSS snippet: Settings > Appearance > CSS Snippets > toggle on `vault-colors`
|
||||
5. *(Optional)* Enable Dataview only if you want the legacy `wiki/meta/dashboard.md` queries to work alongside the primary `dashboard.base`
|
||||
|
||||
Reference in New Issue
Block a user