wiki-setup
Skill3.7k starsChanged 8 days agoMITView on GitHub
Initialize or repair an Obsidian wiki vault's required structure and configuration. Use for new-vault setup, .env/config creation, reconfiguration, or broken setup recovery.
- Reads credentials
5 other projects use a version of this, 2 of them edited.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Most recently taken up by
- chobizzy/llm-wikiedited, first seen Nov 1, 2026
- SkinnnyJay/wiki-llmtheir own version, first seen Oct 11, 2026
- giovannifrontera/academic-research-prisma-wiki-ragtheir own version, first seen Sep 30, 2026
- dexio-wiki/llm-wiki-skillstheir own version, first seen Sep 28, 2026
- Ivy-Chen1999/llm-wiki-kitedited, first seen Jun 23, 2026
Who's talking about Ar9av/obsidian-wiki
- @ar9av.bsky.social“github.com/Ar9av/obsidi...”Bluesky · Oct 8, 2026 · 1 likes
- @pythonhub.dev“obsidian-wiki Framework for AI agents to build and maintain a digital brain through Obsidian wiki using …”Bluesky · Jun 23, 2026 · 1 likes
- sudosubin/agents.nix“claude-code-marketplaces.github.ar9av.obsidian-wiki: 2026.10.4 → 2026.11.2”GitHub · Nov 4, 2026
- sudosubin/agents.nix“claude-code-plugins.github.ar9av.obsidian-wiki: 2026.10.4 → 2026.11.2”GitHub · Nov 4, 2026
- sudosubin/agents.nix“agent-skills.github.ar9av.obsidian-wiki: 2026.10.4 → 2026.11.2”GitHub · Nov 4, 2026
The biggest 5 of 27 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 27
Talked about on GitHub and Bluesky (27 times).
On GitHub · 25
- Nov 4, 2026claude-code-marketplaces.github.ar9av.obsidian-wiki: 2026.10.4 → 2026.11.2 — sudosubin/agents.nix0 reactions
- Nov 4, 2026claude-code-plugins.github.ar9av.obsidian-wiki: 2026.10.4 → 2026.11.2 — sudosubin/agents.nix0 reactions
- Nov 4, 2026agent-skills.github.ar9av.obsidian-wiki: 2026.10.4 → 2026.11.2 — sudosubin/agents.nix0 reactions
- Nov 2, 2026fix(deps): update dependency obsidian-wiki to v2026.10.4 — lkshrk/agent-stack0 reactions · 2 comments
- Nov 1, 2026chore(deps): update dependency pipx:obsidian-wiki to v2026.10.4 — lkshrk/agent-stack0 reactions · 2 comments
20 more on GitHub
- Oct 28, 2026claude-code-plugins.github.ar9av.obsidian-wiki: init at 2026.10.4 — sudosubin/agents.nix0 reactions
- Oct 28, 2026claude-code-marketplaces.github.ar9av.obsidian-wiki: init at 2026.10.4 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-skills.github.ar9av.obsidian-wiki: 2026.10.3 → 2026.10.4 — sudosubin/agents.nix0 reactions
- Oct 21, 2026agent-skills.github.ar9av.obsidian-wiki: 2026.10.2 → 2026.10.3 — sudosubin/agents.nix0 reactions
- Oct 13, 2026agent-skills.github.ar9av.obsidian-wiki: 2026.10.1 → 2026.10.2 — sudosubin/agents.nix0 reactions
- Oct 3, 2026agent-skills.github.ar9av.obsidian-wiki: init at 2026.10.1 — sudosubin/agents.nix0 reactions
- Sep 27, 2026[Candidate] ar9av/obsidian-wiki/.skills/llm-wiki - llm-wiki — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 27, 2026[Candidate] ar9av/obsidian-wiki/.skills/impl-validator - impl-validator — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 27, 2026[Candidate] ar9av/obsidian-wiki/.skills/hermes-history-ingest - hermes-history-ingest — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 26, 2026[Candidate] ar9av/obsidian-wiki/.skills/graph-colorize - graph-colorize — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 26, 2026[Candidate] ar9av/obsidian-wiki/.skills/cross-linker - cross-linker — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 26, 2026[Candidate] ar9av/obsidian-wiki/.skills/copilot-history-ingest - copilot-history-ingest — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 26, 2026[Candidate] ar9av/obsidian-wiki/.skills/codex-history-ingest - codex-history-ingest — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 26, 2026[Candidate] ar9av/obsidian-wiki/.skills/code-understand - code-understand — ProSkillsMD/proskills0 reactions · 2 comments
- Sep 26, 2026[Candidate] ar9av/obsidian-wiki/.skills/claude-history-ingest - claude-history-ingest — ProSkillsMD/proskills0 reactions · 1 comment
- Jul 12, 2026Add obsidian-wiki as a local workspace — aristoapp/awesome-second-brain0 reactions
- Jun 20, 2026feat: Obsidian-compatible wiki.md output from compiled graph — manhhailua/lorekeep0 reactions · 1 comment
- Jun 15, 2026Daily tribute 2026-06-15: obsidian-wiki by @_ar9av — Talonsturgill/signalsniper0 reactions
- May 15, 2026Tracking: AI workflow patterns & companion plugins — brenthaertlein/universal-skills0 reactions · 1 comment
- Apr 9, 2026wiki 生成质量提高 — nashsu/llm_wiki0 reactions · 2 comments
On Bluesky · 2
- Oct 8, 2026github.com/Ar9av/obsidi... — @ar9av.bsky.social1 likes and repost
- Jun 23, 2026obsidian-wiki Framework for AI agents to build and maintain a digital brain through Obsidian wiki using Karpathy's LLM Wiki pattern.… — @pythonhub.dev1 likes and repost · 1 reply
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- Ivy-Chen1999/llm-wiki-kit★ 2179% same
- chobizzy/llm-wiki★ 314% same
Wrote their own version · 3
- giovannifrontera/academic-research-prisma-wiki-rag★ 2same name
- dexio-wiki/llm-wiki-skills★ 1same name
- SkinnnyJay/wiki-llm★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository43 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docs/agents.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- .cursor/rules/obsidian-wiki.mdcCursor rule
- claude-history-ingestSkill
- code-understandSkill
- codex-history-ingestSkill
- copilot-history-ingestSkill
- cross-linkerSkill
- daily-updateSkill
- graph-colorizeSkill
- hermes-history-ingestSkill
- impl-validatorSkill
- llm-wikiSkill
- memory-bridgeSkill
- obsidian-layout-adjustmentSkill
- openclaw-history-ingestSkill
- pi-history-ingestSkill
- session-brainSkill
- session-searchSkill
- skill-creatorSkill
- tag-taxonomySkill
- vault-skill-factorySkill
- wiki-agentSkill
- wiki-captureSkill
- wiki-context-packSkill
- wiki-dashboardSkill
- wiki-dedupSkill
- wiki-digestSkill
- wiki-exportSkill
- wiki-history-ingestSkill
- wiki-importSkill
- wiki-ingestSkill
- wiki-lintSkill
- wiki-narrateSkill
- wiki-querySkill
- wiki-rebuildSkill
- wiki-researchSkill
- wiki-stage-commitSkill
- wiki-statusSkill
- wiki-switchSkill
- wiki-synthesizeSkill
- wiki-updateSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
31 rules. 0 are common, 6 are distinctive, and 25 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
25
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
If .env doesn't exist, create it from .env.example.
- Distinctive: line 17
Must be an absolute path (after expansion)
- Very specific: line 27
Default: auto-discovers from ~/.claude
- Very specific: line 32
Default to QMD_TRANSPORT=mcp unless the user wants the agent to call the local qmd CLI directly.
- Very specific: line 38
If using CLI mode, set QMD_CLI_SEARCH_MODE=quality by default.
- Very specific: line 39
If unsure, skip for now — both skills fall back to Grep automatically.
- Very specific: line 45
Read ~/.config/qmd/index.yml, find the entry for $QMD_WIKI_COLLECTION, and check its ignore list includes _raw/ (and ideally log.md, which …
- Very specific: line 51
If the collection already exists without the ignore block, tell the user their wiki collection is indexing _raw/ (including _raw/_archived/ …
- Very specific: line 56
Default: 100000 (warn when full-wiki read would cost > 100K tokens)
- Very specific: line 61
Default: unset / false (pages written directly to their final location)
- Very specific: line 63
When enabled: all new/updated pages land in _staging/ first.
- Very specific: line 66
After resolving config, assign the global config directory with the exact obsidian_wiki_config_dir algorithm from the Config Resolution …
- Very specific: line 72
Use OBSIDIAN_WIKI_REPO when it was loaded from config.
- Very specific: line 199
Create an empty manifest so ingest skills have a tracking file to append to and obsidian-wiki doctor reports the vault as complete (it …
- Distinctive: line 209
Create minimal Obsidian config for a good out-of-box experience:
- Distinctive: line 244
Run a quick sanity check:
- Very specific: line 259
Run wiki-status to see what's available to ingest
- Very specific: line 260
Run wiki-ingest to add their first sources
- Very specific: line 261
Run claude-history-ingest to mine their Claude conversations
- Very specific: line 262
Run codex-history-ingest to mine their Codex sessions (if they use Codex)
- Very specific: line 263
Run wiki-status again anytime to check the delta
- Distinctive: line 267
Ask the user: "Want to auto-capture findings at session end?"
- Very specific: line 269
If yes, install the Stop hook into their global Claude Code settings so that every session with meaningful work automatically prompts …
- Distinctive: line 290
If neither exists (e.g. an older wheel that predates bundling the hook), fetch the canonical copy to a stable location and point at that …
- Very specific: line 303
Use the resolved absolute path as <HOOK_PATH> below.
- Very specific: line 325
If ~/.claude/settings.json already exists and has a hooks.Stop array, append the new entry rather than replacing — don't clobber existing …
- Very specific: line 339
To uninstall later: remove the hook entry from ~/.claude/settings.json or set WIKI_STOP_CAPTURE=false in your shell to skip capture for a …
- Distinctive: line 345
Ask the user: "Want to sync your vault to a private GitHub repo?"
- Very specific: line 352
Ask for the repo URL (e.g.
- Very specific: line 354
Run the CLI, which handles git init, a default .gitignore, and wiring the origin remote — this is the same code path obsidian-wiki setup's …
- Very specific: line 360
If the obsidian-wiki binary isn't on PATH (source checkout without an install), run it from the repo instead: …
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Obsidian Setup — Vault Initialization
You are setting up a new Obsidian wiki vault (or repairing an existing one).
Step 1: Create .env
If .env doesn't exist, create it from .env.example. Ask the user for:
- Where should the vault live? →
OBSIDIAN_VAULT_PATH- Default:
~/Documents/obsidian-wiki-vault - Must be an absolute path (after expansion)
- Default:
- Where are your source documents? →
OBSIDIAN_SOURCES_DIR- Can be multiple paths, comma-separated
- Default:
~/Documents - Local git repo clones (public or private, any host) can be listed here too — clone
the repo locally first, then add its path. See "Ingesting Git Repositories" in
wiki-ingest/SKILL.mdfor how repo sources are handled.
- Want to import Claude history? →
CLAUDE_HISTORY_PATH- Default: auto-discovers from
~/.claude - Set explicitly if Claude data is elsewhere
- Default: auto-discovers from
- Have QMD installed? →
QMD_WIKI_COLLECTION/QMD_PAPERS_COLLECTION/QMD_TRANSPORT- Optional. Enables semantic search in
wiki-queryand source discovery inwiki-ingest. - Default to
QMD_TRANSPORT=mcpunless the user wants the agent to call the localqmdCLI directly.
- Optional. Enables semantic search in
- Which timezone should the wiki's timestamps use? →
timezone:inindex.md(not.env)- Optional. An IANA name such as
America/Detroit; blank means UTC in theZspelling. - Lives in the vault so it applies to every writer (CLI, server, Python API) and travels with it.
- Written by
obsidian-wiki setup --timezone <name>(step 3 below) or by hand;obsidian-wiki memory nowprints stamps in it. - If using CLI mode, set
QMD_CLI_SEARCH_MODE=qualityby default; suggestbalancedif reranking is too slow. - If unsure, skip for now — both skills fall back to
Grepautomatically. - Install instructions: see
.env.example(QMD section). - If
QMD_WIKI_COLLECTIONis set, verify the collection excludes_raw/. The wiki collection and papers collection must stay disjoint —wiki-querycites them as separate layers (compiled knowledge vs. raw staging), andOBSIDIAN_VAULT_PATHcontains_raw/, so a plainqmd collection add <vault>silently merges the two. Read~/.config/qmd/index.yml, find the entry for$QMD_WIKI_COLLECTION, and check itsignorelist includes_raw/**(and ideallylog.md, which has no semantic value). If the collection doesn't exist yet, create it (qmd collection add "$OBSIDIAN_VAULT_PATH" --name <collection-name>), then add theignoreblock toindex.ymlby hand —qmdhas no--ignoreflag and refuses a secondcollection addon a path that already has one, so editing the YAML is the only way to scope it. Runqmd updateafter editing. If the collection already exists without theignoreblock, tell the user their wiki collection is indexing_raw/(including_raw/_archived/drafts left behind bywiki-ingest) and offer to add theignoreblock and re-runqmd update.
- Optional. An IANA name such as
- Token budget warning threshold? →
WIKI_TOKEN_WARN_THRESHOLD- Default:
100000(warn when full-wiki read would cost > 100K tokens) - Set to
0to disable the warning entirely wiki-statusshows a token footprint table and emits this warning automatically
- Default:
- Enable staged writes? →
WIKI_STAGED_WRITES- Default: unset /
false(pages written directly to their final location) - Set to
truefor team wikis, high-stakes domains, or any vault where the human wants final say on every LLM-written page - When enabled: all new/updated pages land in
_staging/first; run/wiki-stage-committo review and promote them wiki-statusshows a "Staged writes pending" count when files are waiting
- Default: unset /
After resolving config, assign the global config directory with the exact
obsidian_wiki_config_dir algorithm from the Config Resolution Protocol in
skills/llm-wiki/SKILL.md. Create the shared writing profile only when it does not
already exist. Preserve an existing $GLOBAL_CONFIG_DIR/WRITING.md; never overwrite it
and do not ask additional writing-style questions.
Use OBSIDIAN_WIKI_REPO when it was loaded from config. When it is absent, derive the
absolute repository/data root from this loaded skill's absolute path. Packaged installs
and source checkouts both use <root>/skills/wiki-setup/SKILL.md; checkouts from before
the rename used <root>/.skills/wiki-setup/SKILL.md. Then check both template layouts:
- Current:
<root>/skills/llm-wiki/references/WRITING.md - Older checkout:
<root>/.skills/llm-wiki/references/WRITING.md
GLOBAL_CONFIG_DIR="$(obsidian_wiki_config_dir)"
mkdir -p "$GLOBAL_CONFIG_DIR"
SKILL_FILE="<absolute path of this loaded wiki-setup/SKILL.md>"
SKILL_DIR="$(cd "$(dirname "$SKILL_FILE")" && pwd)"
if [ -n "${OBSIDIAN_WIKI_REPO:-}" ]; then
WIKI_ROOT="${OBSIDIAN_WIKI_REPO%/}"
else
case "$SKILL_DIR" in
*/.skills/wiki-setup) WIKI_ROOT="${SKILL_DIR%/.skills/wiki-setup}" ;;
*/skills/wiki-setup) WIKI_ROOT="${SKILL_DIR%/skills/wiki-setup}" ;;
*) echo "Cannot derive writing-profile template root from $SKILL_DIR" >&2; exit 1 ;;
esac
fi
WRITING_TEMPLATE=""
for candidate in \
"$WIKI_ROOT/skills/llm-wiki/references/WRITING.md" \
"$WIKI_ROOT/.skills/llm-wiki/references/WRITING.md"
do
if [ -f "$candidate" ]; then
WRITING_TEMPLATE="$candidate"
break
fi
done
[ -n "$WRITING_TEMPLATE" ] || { echo "Writing profile template not found under $WIKI_ROOT" >&2; exit 1; }
WRITING_PROFILE="$GLOBAL_CONFIG_DIR/WRITING.md"
if [ ! -e "$WRITING_PROFILE" ]; then
cp "$WRITING_TEMPLATE" "$WRITING_PROFILE"
fiStep 2: Create Vault Directory Structure
mkdir -p "$OBSIDIAN_VAULT_PATH"/{concepts,entities,skills,references,synthesis,journal,projects,_archives,_raw,_staging,.obsidian}.obsidian/— Obsidian's own config. Creates vault recognition.projects/— Per-project knowledge (populated during ingest)._archives/— Stores wiki snapshots for rebuild/restore operations._raw/— Staging area for unprocessed drafts. Drop rough notes here;wiki-ingestwill promote them to proper wiki pages and move the originals into_raw/_archived/(created on first use)._staging/— Review queue for LLM-written pages whenWIKI_STAGED_WRITES=true. Pages here are not visible in Obsidian's graph until promoted via/wiki-stage-commit.
Step 3: Create Special Files
obsidian-wiki setup --vault <path> [--timezone <IANA name>] creates all of these in one go. The templates below are what it writes, for setups done by hand.
index.md
---
title: Wiki Index
---
# Wiki Index
*This index is automatically maintained. Last updated: TIMESTAMP*
## Concepts
*No pages yet. Use `wiki-ingest` to add your first source.*
## Entities
## Skills
## References
## Synthesis
## Journallog.md
---
title: Wiki Log
---
# Wiki Log
- [TIMESTAMP] INIT vault_path="OBSIDIAN_VAULT_PATH" categories=concepts,entities,skills,references,synthesis,journalhot.md
---
title: Hot Cache
updated: TIMESTAMP
---
# Hot Cache
*A ~500-word semantic snapshot of recent activity. Updated after every major write operation.*
## Recent Activity
- [TIMESTAMP] INIT — vault created at OBSIDIAN_VAULT_PATH
## Active Threads
*None yet — start ingesting sources to populate.*
## Key Takeaways
*None yet.*
## Flagged Contradictions
*None yet.*.manifest.json
Create an empty manifest so ingest skills have a tracking file to append to and
obsidian-wiki doctor reports the vault as complete (it treats .manifest.json
as a required core file):
printf '{}\n' > "$OBSIDIAN_VAULT_PATH/.manifest.json"Step 4: Create .obsidian Configuration
Create minimal Obsidian config for a good out-of-box experience:
.obsidian/app.json
{
"strictLineBreaks": false,
"showFrontmatter": false,
"defaultViewMode": "preview",
"livePreview": true
}.obsidian/appearance.json
{
"baseFontSize": 16,
"enabledCssSnippets": ["obsidian-wiki-folders"]
}Folder colors and graph defaults
obsidian-wiki setup also writes .obsidian/snippets/obsidian-wiki-folders.css (one color per category folder in the file explorer, _ folders dimmed) and .obsidian/graph.json (the same colors in graph view, with _raw/, _archives/, _staging/, _meta/, index, log, and hot filtered out). If the CLI is available, run obsidian-wiki setup --vault "$OBSIDIAN_VAULT_PATH" rather than writing them by hand. Never overwrite an existing .obsidian file; to recolor later, use graph-colorize.
Step 5: Recommend Obsidian Plugins
Tell the user about these recommended community plugins (they install manually):
- Dataview — Query page metadata, create dynamic tables. Essential for a wiki.
- Graph Analysis — Enhanced graph view for exploring connections.
- Templater — If they want to create pages manually using templates.
- Obsidian Git — Auto-backup the vault to a git repo.
Step 6: Verify Setup
Run a quick sanity check:
- Vault directory exists with:
concepts/,entities/,skills/,references/,synthesis/,journal/,projects/,_archives/,_raw/ index.mdexists at vault rootindex.mdfrontmatter carriestimezone:if the user chose one (obsidian-wiki memory statusshows the zone in use)log.mdexists at vault roothot.mdexists at vault root.manifest.jsonexists at vault root (empty{}is fine).envhasOBSIDIAN_VAULT_PATHset.obsidian/directory exists_staging/directory exists (required even whenWIKI_STAGED_WRITESis not set — created on setup for future use)WRITING_PROFILEexists at the resolved global config directory- Source directories (if configured) exist and are readable
Report the results, including the resolved absolute WRITING_PROFILE path, and tell the user they can now:
- Open the vault in Obsidian (File → Open Vault → select the directory)
- Run
wiki-statusto see what's available to ingest - Run
wiki-ingestto add their first sources - Run
claude-history-ingestto mine their Claude conversations - Run
codex-history-ingestto mine their Codex sessions (if they use Codex) - Run
wiki-statusagain anytime to check the delta
Optional: Install the Stop Hook (Auto-Capture)
Ask the user: "Want to auto-capture findings at session end?"
If yes, install the Stop hook into their global Claude Code settings so that every session
with meaningful work automatically prompts /wiki-capture --quick before closing.
What the hook does: reads the session transcript on Stop, counts file edits and shell
calls, and if significant work happened, asks Claude to run /wiki-capture --quick once.
The wiki-capture quick-mode KEEP/SKIP gate prevents noise — routine or
inconclusive sessions are skipped automatically.
Installation steps:
- Find the obsidian-wiki repo path. If
OBSIDIAN_WIKI_REPOis set in config, use that. Otherwise, check common locations:~/Documents/projects/obsidian-wiki,~/obsidian-wiki, or ask the user. Locate the
wiki-stop-capture.shscript. Its path differs between a pip/uv install and a source checkout, so check both layouts under<REPO_PATH>and use the first that exists:<REPO_PATH>/hooks/wiki-stop-capture.sh— packaged install (OBSIDIAN_WIKI_REPOpoints at the bundled_data/dir, which ships the hook underhooks/).<REPO_PATH>/.claude/hooks/wiki-stop-capture.sh— source checkout.
If neither exists (e.g. an older wheel that predates bundling the hook), fetch the canonical copy to a stable location and point at that instead. Use the global config dir from the Config Resolution Protocol in
llm-wiki/SKILL.md(XDG-style~/.config/obsidian-wikiby default, or the legacy~/.obsidian-wikiif that already exists):CONFIG_DIR="$( [[ -d "$HOME/.obsidian-wiki" && ! -e "${XDG_CONFIG_HOME:-$HOME/.config}/obsidian-wiki" ]] && echo "$HOME/.obsidian-wiki" || echo "${XDG_CONFIG_HOME:-$HOME/.config}/obsidian-wiki" )" mkdir -p "$CONFIG_DIR/hooks" curl -fsSL https://raw.githubusercontent.com/Ar9av/obsidian-wiki/main/.claude/hooks/wiki-stop-capture.sh \ -o "$CONFIG_DIR/hooks/wiki-stop-capture.sh" chmod +x "$CONFIG_DIR/hooks/wiki-stop-capture.sh"Use the resolved absolute path as
<HOOK_PATH>below.- Merge the hook entry into
~/.claude/settings.json:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash <HOOK_PATH>"
}
]
}
]
}
}If ~/.claude/settings.json already exists and has a hooks.Stop array, append the new
entry rather than replacing — don't clobber existing hooks.
Note — expect a duplicate nudge inside this repo. The obsidian-wiki repo ships its own git-tracked
.claude/settings.jsonregistering the same Stop hook at a relative path. Claude Code merges project-level and user-level hook config rather than letting one override the other, so sessions ending inside the repo itself fire both registrations. This is expected and harmless — the hook claims an atomic per-session sentinel, so only one nudge is emitted. Leave both in place: removing the project entry dirties a tracked framework file and disables capture for anyone who clones the repo without doing the global install.
- Confirm: "Stop hook installed. Claude Code will prompt
/wiki-capture --quickat the end of any session where you write files or run ≥ 4 shell commands."
To uninstall later: remove the hook entry from ~/.claude/settings.json or set
WIKI_STOP_CAPTURE=false in your shell to skip capture for a single session
(HIVEMIND_CAPTURE=false is still honoured).
Optional: Configure GitHub Sync
Ask the user: "Want to sync your vault to a private GitHub repo?"
The vault is plain markdown, so pushing it to git gets you version history, backup, and cross-device sync for free. This is opt-in — skip it if the user declines or has no repo ready.
If yes:
- Ask for the repo URL (e.g.
https://github.com/you/my-wiki.git). Recommend it be private if the vault holds personal notes. - Run the CLI, which handles
git init, a default.gitignore, and wiring theoriginremote — this is the same code pathobsidian-wiki setup's interactive prompt andsetup.shuse, so there's one implementation to keep correct (see issue #153 for why that matters):
If theobsidian-wiki sync-setup "<repo-url>" --vault "$OBSIDIAN_VAULT_PATH"obsidian-wikibinary isn't on PATH (source checkout without an install), run it from the repo instead:PYTHONPATH="$OBSIDIAN_WIKI_REPO" python3 -m obsidian_wiki.cli sync-setup ...using whichever ofOBSIDIAN_WIKI_REPOor a local checkout path is available. - Tell the user they can run
obsidian-wiki syncany time afterward to commit and push pending vault changes (stages everything, commits with a timestamp, pushes). There's no config file to check for sync status — the vault's owngit remoteis the source of truth.
Optional: Refresh QMD After Setup
If QMD_WIKI_COLLECTION is configured and the local QMD CLI is available, run qmd update after the initial vault files exist so the fresh vault is immediately queryable. No embedding pass is usually needed at setup time because the vault starts empty, so a plain update is enough unless you have already populated pages. Before running it, confirm the _raw/ exclusion described in Step 1.4 is in place — otherwise this update indexes the (currently empty) staging directory into the wiki collection too, and every future draft dropped there joins it silently.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

