Two strands of work. Session brain — a topic graph over raw agent session history, so you can find the session where something happened instead of remembering its UUID. Reads every Claude transcript plus the pruned sessions that survive only as prompts in history.jsonl, clusters them with local TF-IDF and community detection (no embeddings, no API calls, no new dependencies), and writes a sidecar at ~/.claude/session-brain/ — the vault is never touched. Ships five modules, the sessions-* CLI commands, an interactive graph.html, and the /session-brain and /wiki-sessions skills. This is retrieval, deliberately distinct from wiki-history-ingest, which distils sessions into permanent vault pages. Docs — README.md was 598 lines and put trust-check flags and a 17-row agent matrix in front of anyone evaluating the project. Cut it to a 129- line landing page (problem statement, 60-second install, four blocks of runnable commands, graph screenshot, why-not-a-notes-folder) and move the reference material into docs/: installation, agents, skills, cli, configuration, architecture, session-brain, contributing. README_TW.md mirrors the new structure; docs/ stays English-only for now. The restructure also closed real drift: - Ten skills existed but appeared in no reference — session-brain, session-search, wiki-dedup, wiki-digest, wiki-import, wiki-context-pack, wiki-stage-commit, wiki-switch, vault-skill-factory, and obsidian-layout-adjustment. - SETUP.md listed 12 of 39 skills and still claimed "no scripts, no dependencies" despite the pip package. It is now a signpost into docs/. - Eight config variables were undocumented anywhere, including WIKI_STAGED_WRITES, which wiki-setup prompts for and three skills read. Added to .env.example and docs/configuration.md. - sessions-name and a number of CLI flags were missing from the docs. Two details worth noting. README links are absolute GitHub URLs because pyproject sets readme = "README.md" as the PyPI long_description, and PyPI resolves relative hrefs against pypi.org rather than the repo — docs/ links would have 404'd on the package page. And three doc-drift guards asserted their facts against README.md; since those facts moved rather than disappeared, the assertions were repointed at the page that now owns each one instead of padding content back into the README. Also gitignore /vault/ (a local knowledge vault, not a fixture) and the packed browser extension. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
6.4 KiB
Agent Compatibility
Works with any AI coding agent that can read files. setup.sh and obsidian-wiki setup handle skill discovery for each one automatically.
Each agent has its own convention for discovering skills. Setup symlinks the canonical .skills/ directory into each agent's expected location — you write skills once, every agent can use them.
Matrix
| Agent | Bootstrap | Skills Directory | Slash Commands |
|---|---|---|---|
| Claude Code | CLAUDE.md |
.claude/skills/ + ~/.claude/skills/ |
✅ /wiki-ingest, /wiki-status, etc. |
| Cursor | .cursor/rules/obsidian-wiki.mdc |
.cursor/skills/ |
✅ /wiki-ingest, /wiki-status, etc. |
| Windsurf | .windsurf/rules/obsidian-wiki.md |
.windsurf/skills/ |
✅ via Cascade |
| Codex (OpenAI) | AGENTS.md |
~/.codex/skills/ |
$wiki-ingest (Codex uses $) |
| Gemini CLI | GEMINI.md |
~/.gemini/skills/ |
✅ /wiki-ingest, /wiki-query, etc. |
| Google Antigravity | .agent/rules/ + .agent/workflows/ |
.agents/skills/ |
✅ via workflows registry |
| Kiro IDE/CLI | .kiro/steering/obsidian-wiki.md |
.kiro/skills/ + ~/.kiro/skills/ |
✅ /wiki-ingest, /wiki-status, etc. |
| Hermes | .hermes.md |
~/.hermes/skills/ |
✅ /wiki-history-ingest hermes, etc. |
| OpenClaw | AGENTS.md |
~/.openclaw/skills/ + ~/.agents/skills/ |
✅ /wiki-ingest, /wiki-history-ingest openclaw, etc. |
| OpenCode | AGENTS.md |
~/.agents/skills/ |
✅ /wiki-ingest, /wiki-query, etc. |
| Aider | AGENTS.md |
~/.agents/skills/ |
Describe intent in chat |
| Factory Droid | AGENTS.md |
~/.agents/skills/ |
✅ /wiki-ingest, /wiki-query, etc. |
| Trae / Trae CN | AGENTS.md |
~/.trae/skills/ / ~/.trae-cn/skills/ |
✅ via Agent tool |
| GitHub Copilot (VS Code) | .github/copilot-instructions.md |
— | Describe intent in chat |
| GitHub Copilot (CLI) | — | ~/.copilot/skills/ |
✅ /wiki-ingest, /wiki-query, etc. |
| Kilocode | AGENTS.md / CLAUDE.md |
.agents/skills/ + .claude/skills/ |
✅ /wiki-ingest, /wiki-status, etc. |
| Pi | AGENTS.md |
.pi/skills/ + ~/.pi/agent/skills/ |
✅ /wiki-ingest, /wiki-history-ingest pi, etc. |
Slash commands work in Claude Code, Cursor, Windsurf, and most CLI agents. Everywhere else, just describe what you want — the agent matches your intent against the skill descriptions.
Named-vault routing (@work update wiki) works in every agent above, because @name is documented in the shared skills and bootstrap context that all of them load.
Manual setup
Only needed if you're not running setup.sh or obsidian-wiki setup.
Claude Code
Skills are auto-discovered from .claude/skills/. Either run setup.sh or copy .skills/* to .claude/skills/. The CLAUDE.md file at the repo root is automatically loaded as project context.
cd /path/to/obsidian-wiki && claude "set up my wiki"
Cursor
Skills are auto-discovered from .cursor/skills/. The .cursor/rules/obsidian-wiki.mdc file provides always-on context. Either run setup.sh or copy .skills/* to .cursor/skills/. Then type /wiki-setup in the chat.
Windsurf
Cascade reads rules from .windsurf/rules/ and skills from .windsurf/skills/. Either run setup.sh or copy .skills/* to .windsurf/skills/. Then tell Cascade: "set up my wiki".
Codex
Reads AGENTS.md for project context. setup.sh installs skills globally to ~/.codex/skills/. Either run setup.sh or manually symlink .skills/* to ~/.codex/skills/.
cd /path/to/obsidian-wiki && codex "set up my wiki"
Gemini CLI
Reads GEMINI.md and discovers global skills from ~/.gemini/skills/. Either run setup.sh or manually symlink .skills/* to ~/.gemini/skills/.
cd /path/to/obsidian-wiki && gemini "set up my wiki"
Google Antigravity
Always-on via .agent/rules/ + .agent/workflows/. setup.sh ships both files and symlinks skills into .agents/skills/. The legacy ~/.gemini/antigravity/skills/ path is also wired.
Kiro IDE/CLI
Always-on via .kiro/steering/*.md with inclusion: always. setup.sh symlinks .skills/* into both .kiro/skills/ and ~/.kiro/skills/. Invoke with /wiki-ingest, /wiki-query, etc.
OpenCode / Aider / Factory Droid / Trae
All read AGENTS.md at the repo root. setup.sh symlinks skills into ~/.agents/skills/ (shared discovery path). Trae also gets ~/.trae/skills/ and ~/.trae-cn/skills/.
Hermes
Reads .hermes.md first, then falls back to AGENTS.md. Skills discovered from ~/.hermes/skills/. Run setup.sh or manually symlink .skills/* there.
cd /path/to/obsidian-wiki && hermes "set up my wiki"
# Mine Hermes history into the wiki:
/wiki-history-ingest hermes
OpenClaw
Reads AGENTS.md (priority 10). Discovers skills from ~/.openclaw/skills/ and ~/.agents/skills/. Skills auto-register as slash commands.
cd /path/to/obsidian-wiki && openclaw "set up my wiki"
# Mine OpenClaw history:
/wiki-history-ingest openclaw
GitHub Copilot
VS Code Chat: reads .github/copilot-instructions.md. Say "set up my wiki" in Copilot Chat.
CLI: discovers skills from ~/.copilot/skills/. Run setup.sh or manually symlink .skills/* there.
Pi
Reads AGENTS.md (walking up from cwd). Discovers skills from .pi/skills/, .agents/skills/, and ~/.pi/agent/skills/. Run setup.sh or manually symlink .skills/* to ~/.pi/agent/skills/.
cd /path/to/obsidian-wiki && pi "set up my wiki"
# Mine Pi session history:
/wiki-history-ingest pi