obsidian-brain-eval — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited obsidian-brain-eval (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Measure whether your Obsidian RAG actually works. Generate a gold-set from your vault, score any retrieval backend on Recall@10, and get a PASS or BELOW TARGET grade against a 0.85 default threshold.
Trigger this skill whenever the user wants to:
score --backend ... in CI to block retrieval regressions.entities, topics, related). Costs roughly $1-2 of OpenAI for 40 questions. Idempotent: skips notes already in the gold-set unless --force.After installation (see ## Install below):
# Step 1 (optional): generate a 40-question gold-set with GPT-4.1.
# Skip this and use the shipped sample if you don't want to spend GPT.
export OPENAI_API_KEY=...
obsidian-brain-eval generate --vault ~/Documents/MyVault --out gold.jsonl --n 40
# Step 2: score with the zero-infra BM25 backend.
obsidian-brain-eval score --vault ~/Documents/MyVault --gold gold.jsonl --backend naive
# Or score with the LanceDB hybrid backend, against a table you already populated.
obsidian-brain-eval score --vault ~/Documents/MyVault --gold gold.jsonl \
--backend lancedb --db ~/Documents/MyVault/.lancedb
# CI gate: exit 1 if Recall@10 < 0.85.
obsidian-brain-eval score --vault ~/Documents/MyVault --gold gold.jsonl \
--backend naive --quiet --json-out result.json
# Try it instantly on the shipped 10-note demo vault.
obsidian-brain-eval score --vault examples/demo-vault \
--gold examples/sample-gold-set.jsonl --backend naiveDefault exit codes:
0: score met or exceeded the target (default 0.85)1: score below target2: vault or gold-set missing/unreadable================================================================
RECALL@10 - obsidian-brain-eval
================================================================
questions 40
hits 37
Recall@10 0.9250 (target >= 0.85)
status PASS
----------------------------------------------------------------
MISSES
x Where do I find notes that compare cloud providers?
want: vault/concepts/cloud-comparison.md
----------------------------------------------------------------
HITS (first-relevant rank distribution)
rank 1: 24
rank 2: 8
rank 3: 3
rank 5: 1
rank 7: 1
================================================================Read it in three passes:
pip install "obsidian-brain-eval[naive]"
mkdir -p ~/.claude/skills
git clone https://github.com/build-with-dhiraj/obsidian-brain-eval ~/.claude/skills/obsidian-brain-evalThen ask Claude Code: "test my obsidian rag at ~/Documents/MyVault using the shipped gold set", or "generate a 40-question gold-set for ~/Documents/MyVault and score it with the naive backend".
pip install "obsidian-brain-eval[naive]"
mkdir -p ~/.cursor/skills
git clone https://github.com/build-with-dhiraj/obsidian-brain-eval ~/.cursor/skills/obsidian-brain-evalpip install "obsidian-brain-eval[naive]"
mkdir -p ~/.gemini/skills
git clone https://github.com/build-with-dhiraj/obsidian-brain-eval ~/.gemini/skills/obsidian-brain-evalpip install "obsidian-brain-eval[naive]"
mkdir -p ~/.codex/skills
git clone https://github.com/build-with-dhiraj/obsidian-brain-eval ~/.codex/skills/obsidian-brain-evalTwo backends ship by default. Both implement the same topk(question, k) -> list[str] protocol so you can drop in your own (see obsidian_brain_eval.backends for the protocol definition).
| Backend | Install extra | What it does | When to use |
|---|---|---|---|
naive (BM25) | pip install "obsidian-brain-eval[naive]" | BM25 over title + body, ASCII fold + stopword strip, no embeddings, no API | Baseline. Run this first. If your fancy stack does not beat it, your fancy stack is wrong. |
lancedb (hybrid) | pip install "obsidian-brain-eval[lancedb]" | Hybrid FTS + BAAI/bge-small vector search over a LanceDB items table you already populated | Benchmark production vault-RAG stacks. The exact backend the upstream engine ships against. |
Custom backends are a 10-line class:
from obsidian_brain_eval.eval import score, load_gold
class MyBackend:
def __init__(self, vault):
# Index whatever you want.
...
def topk(self, question: str, k: int) -> list[str]:
# Return the top-k vault paths, in the canonical 'vaultname/folder/file.md' shape.
...
result = score(load_gold("gold.jsonl"), MyBackend("/path/to/vault"), k=10)score step. The default target is the pure retrieval-layer Recall@10.docs/RUBRIC.mddocs/COMPARISON.md~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.