Gno
gmickel/gno
Search local documents, files, notes, and knowledge bases. An agent skill from gmickel/gno.
Builds and queries a local contextual BM25 index over an Obsidian vault, with optional Nomic reranking through Ollama and strict consent rules before any text leaves the machine.
$ npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install AgriciDaniel/claude-obsidian wiki-retrieve --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-obsidian.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/wiki-retrieve .claude/skills/wiki-retrieve && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "wiki-retrieve" agent skill from https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-retrieve into .claude/skills/wiki-retrieve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-retrieve", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-retrieveType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install AgriciDaniel/claude-obsidian wiki-retrieve --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-obsidian.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/wiki-retrieve .agents/skills/wiki-retrieve && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "wiki-retrieve" agent skill from https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-retrieve into .agents/skills/wiki-retrieve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-retrieve", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install AgriciDaniel/claude-obsidian wiki-retrieve --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-obsidian.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/wiki-retrieve .cursor/skills/wiki-retrieve && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "wiki-retrieve" agent skill from https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-retrieve into .cursor/skills/wiki-retrieve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-retrieve", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/AgriciDaniel/claude-obsidian.git --path skills/wiki-retrieve--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install AgriciDaniel/claude-obsidian wiki-retrieve --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-obsidian.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/wiki-retrieve .gemini/skills/wiki-retrieve && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "wiki-retrieve" agent skill from https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-retrieve into .gemini/skills/wiki-retrieve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-retrieve", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install AgriciDaniel/claude-obsidian wiki-retrieveInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-obsidian.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/wiki-retrieve .github/skills/wiki-retrieve && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "wiki-retrieve" agent skill from https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-retrieve into .github/skills/wiki-retrieve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-retrieve", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install AgriciDaniel/claude-obsidian wiki-retrieve --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AgriciDaniel/claude-obsidian.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/wiki-retrieve .opencode/skills/wiki-retrieve && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "wiki-retrieve" agent skill from https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-retrieve into .opencode/skills/wiki-retrieve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-retrieve", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
wiki-retrieveBuilds and queries a local contextual BM25 index over an Obsidian vault, with optional Nomic reranking through Ollama and strict consent rules before any text leaves the machine.
A three-step pipeline derives search data from the wiki folder into .vault-meta without touching canonical notes. contextual-prefix.py splits pages on paragraph boundaries and stores each raw chunk with a short page-level prefix, bm25-index.py builds a local BM25 index using only the standard library, and retrieve.py picks BM25 candidates, optionally reranks them, drops invalid records, deduplicates by page and returns paths and snippets. The caller still has to read the pages, since retrieval output is not evidence.
Provisioning starts with a preview and builds synthetic prefixes locally with no network use. Chunk and index files are disposable, incremental runs skip unchanged records, and a busy vault fails closed instead of publishing a partial index. Prefix generation through the Anthropic API or a claude subprocess can send page bodies off the machine, so it needs your explicit consent plus an egress flag, and consent is never inferred from an API key. Remote Ollama endpoints need separate approval, and the default reranker accepts localhost only.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 32ac5a0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Vault Contextual Retrieval loads about 1.4k tokens when it runs. Until then it costs about 107 tokens; SKILL.md has 601 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from AgriciDaniel/claude-obsidian at commit 32ac5a0, republished under its MIT licence (© AgriciDaniel). 601 words, ~1,397 tokens.
.claude/skills/wiki-retrieve/SKILL.md (or your agent's skills folder).This extension derives search data from wiki/ into .vault-meta/. It never
changes canonical notes. Always pass the selected vault explicitly.
Resolve the installed product root from this skill's own location, not from the vault or current working directory:
PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
PREFIX="$PRODUCT_ROOT/scripts/contextual-prefix.py"
BM25="$PRODUCT_ROOT/scripts/bm25-index.py"
RETRIEVE="$PRODUCT_ROOT/scripts/retrieve.py"
RERANK="$PRODUCT_ROOT/scripts/rerank.py"
test -f "$PREFIX" && test -f "$BM25" && test -f "$RETRIEVE" && test -f "$RERANK"contextual-prefix.py splits pages on paragraph boundaries and stores the
raw chunk plus a short page-level prefix.bm25-index.py builds a local, standard-library BM25 index over the
contextualized text.retrieve.py selects BM25 candidates, optionally reranks them, rejects
invalid records, deduplicates by page, and returns paths and snippets.Preview first, then build synthetic prefixes without network egress:
python3 "$PREFIX" --vault "$VAULT" --all --no-llm --peek
python3 "$PREFIX" --vault "$VAULT" --all --no-llm
python3 "$BM25" --vault "$VAULT" build
python3 "$RETRIEVE" --vault "$VAULT" "wiki" --top 1 --no-rerank --explainChunk and index files are disposable runtime state. Incremental prefixing skips records whose chunk and page hashes still match. A complete scan removes surplus records for deleted pages, and the prefixer invalidates the BM25 index before changing its chunk set so a mixed stale index is not served. Prefix and BM25 build operations share the vault-wide mutation lock with every other writer; a busy vault fails closed instead of publishing a partial index.
Synthetic prefixes use only local frontmatter and page text. The Anthropic API
and claude subprocess tiers can send page bodies off-machine and therefore
require the user's explicit consent plus --allow-egress. Never infer consent
from an API key or installed binary. Preview the scope first and state which
provider will receive what data.
Remote Ollama endpoints also require explicit approval and
--allow-remote-ollama; the default reranker accepts localhost only.
For a strictly read-only lookup, use the prebuilt BM25 index:
python3 "$RETRIEVE" --vault "$VAULT" "$QUERY" --top 5 --no-rerank --explainFor an explicitly requested rerank, omit --no-rerank. The default is Ollama's
multilingual nomic-embed-text-v2-moe model (approximately 958 MB); the product
never pulls it automatically. To use an already-installed, smaller,
English-oriented v1.5 model, pass --model nomic-embed-text explicitly.
Nomic models use search_query: for the query and search_document: for
candidate text. Nomic v2 has a 512-token input context and Ollama truncates
longer embedding inputs by default; BM25 still scores the complete chunk.
Embeddings are cached by exact model, input scheme, and hash of the exact
prefixed input. A missing local Ollama service, missing selected
model, unusable vector, or any candidate embedding failure falls back for the
complete result set to the original BM25 order; it never mixes cosine and BM25
score scales.
Query input is bounded at 8,000 normalized characters and result counts must be
between 1 and 1,000. Oversized queries and invalid limits fail with an
actionable usage error instead of looking like an empty successful search.
An untagged model request matches only the installed untagged name or its
:latest alias; select any other tag explicitly.
Use direct diagnostics when needed:
python3 "$BM25" --vault "$VAULT" stats
python3 "$BM25" --vault "$VAULT" query "$QUERY" --top 10
python3 "$RERANK" --vault "$VAULT" "$QUERY" --peek
python3 "$RERANK" --vault "$VAULT" "$QUERY" --model nomic-embed-text --peek$VAULT/.vault-meta/chunks/ and $VAULT/wiki/ respectively.--top.retrieve.py exit 10 with a stable rebuild command; callers fall back to the
standard vault query/text-search path and do not fabricate matches.Observe cache readiness and privacy boundaries, think about whether lexical or semantic ranking is needed, verify returned paths and source freshness, and grow by measuring retrieval misses against a maintained local query set.
© AgriciDaniel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/wiki-retrieve of AgriciDaniel/claude-obsidian.
Open the folder on GitHubat commit 32ac5a0
Vault Contextual Retrieval next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Vault Contextual Retrieval this skillAgriciDaniel/claude-obsidian | 15k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Gnogmickel/gno | 115 | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| LLM Wikipraneybehl/llm-wiki-plugin | 118 | — | ~5.7k | Automated safety check: Pass | MIT | |
| Gnogmickel/gno | 115 | — | ~11k | Automated safety check: Pass | MIT | |
| Engraphdevwhodevs/engraph | 171 | — | ~792 | Automated safety check: Pass | MIT | |
| Langchain4j RAG Implementation Patternsgiuseppe-trisciuoglio/developer-kit | 356 | — | ~3.3k | Automated safety check: Notes | MIT |
gmickel/gno
Search local documents, files, notes, and knowledge bases. An agent skill from gmickel/gno.
praneybehl/llm-wiki-plugin
Build and maintain an LLM-curated knowledge base from papers, articles, transcripts, notes and project findings.
gmickel/gno
Search local documents, files, notes, and knowledge bases. An agent skill from gmickel/gno.
devwhodevs/engraph
Index and search document collections using hybrid semantic + graph + full-text search.
giuseppe-trisciuoglio/developer-kit
Provides Retrieval-Augmented Generation (RAG) implementation patterns with LangChain4j for Java.
evolution-foundation/evo-nexus
Hybrid search (vector + BM25 via RRF + metadata boost) against the pgvector Knowledge base, with optional RAG synthesis.
AgriciDaniel/claude-obsidian
Runs a bounded, source-grounded research loop that drafts a cited dossier and can propose a separately reviewed merge into an Obsidian vault.
AgriciDaniel/claude-obsidian
Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.
AgriciDaniel/claude-obsidian
Sets up or adopts a separate Obsidian knowledge vault through the claude-obsidian core script and routes follow-up work to the right wiki sub-skill.
AgriciDaniel/claude-obsidian
Creates a bounded, extractive rollup of recent Obsidian wiki log entries, previewed by default, with one optional apply step and no changes to child pages.
AgriciDaniel/claude-obsidian
Plans, and with explicit network consent runs, an external Defuddle extractor that turns an article-like HTTPS page into clean Markdown for later wiki ingestion.
AgriciDaniel/claude-obsidian
Explains, drafts and validates Obsidian Bases .base files, building filters, formulas and table, card or list views, and applying edits only through one inspected transaction.
Works with
Categories
Builds and queries a local contextual BM25 index over an Obsidian vault, with optional Nomic reranking through Ollama and strict consent rules before any text leaves the machine. vault-meta without touching canonical notes.py picks BM25 candidates, optionally reranks them, drops invalid records, deduplicates by page and returns paths and snippets.
Vault Contextual Retrieval fits situations like: building a search index for an Obsidian vault; finding relevant passages in a vault with BM25 or a reranked hybrid search; diagnosing why retrieval returns stale or empty results.
Run `npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a claude-code`. Or copy the skill folder (skills/wiki-retrieve in AgriciDaniel/claude-obsidian) into .claude/skills/wiki-retrieve in your project. Claude Code loads it when a task matches its description.
Run `npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a codex`. Or copy the skill folder (skills/wiki-retrieve in AgriciDaniel/claude-obsidian) into .agents/skills/wiki-retrieve in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AgriciDaniel/claude-obsidian --skill wiki-retrieve -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wiki-retrieve, .gemini/skills/wiki-retrieve, .github/skills/wiki-retrieve and .opencode/skills/wiki-retrieve in your project.
Going by SKILL.md and its folder, Vault Contextual Retrieval needs the command-line tools its instructions call (python3). Our summary lists: An Obsidian vault with the claude-obsidian plugin; Python 3 for the bundled scripts; Ollama on localhost for optional reranking.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Vault Contextual Retrieval is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Vault Contextual Retrieval: Gno (gmickel/gno, 115 stars), LLM Wiki (praneybehl/llm-wiki-plugin, 118 stars), Gno (gmickel/gno, 115 stars) and Engraph (devwhodevs/engraph, 171 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
AgriciDaniel (a GitHub user) maintains it in AgriciDaniel/claude-obsidian, which has 15,420 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 10, 2026.
Source: AgriciDaniel/claude-obsidian on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.