Ai Lab — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ai Lab (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.
A retrieval-augmented knowledge base that runs entirely on your machine. It ingests markdown and an Obsidian vault, embeds every chunk locally with no API key, stores the vectors in SQLite, and answers semantic queries over hybrid keyword + vector search. It plugs into Claude Code over MCP so an AI assistant can pull your own notes before it answers.
No cloud. No API key for retrieval. Your notes never leave the machine.
$ npm run search "how do I keep my notes private without a cloud API"
[note] Local Embeddings and Local LLMs (score 0.550)
You do not have to send your notes to a cloud API to embed them. transformers.js
runs sentence-embedding models directly in Node with no API key and no network...That match came from pure semantic similarity - the query shares no keywords with the note title.
| Capability | How |
|---|---|
| RAG | Ingest -> chunk by heading -> embed -> retrieve -> assemble context. src/ingest.ts, src/search.ts |
| Vector DB | Embeddings stored as BLOBs in SQLite; brute-force cosine scan + FTS5 keyword index in one file. src/db.ts |
| Local embeddings (key-free) | all-MiniLM-L6-v2 (384-dim) via transformers.js - runs on CPU, no network after first download. src/embeddings.ts |
| Second brain -> Obsidian | Point OBSIDIAN_VAULTS at a vault root; every note becomes retrievable. Content-hashing re-embeds only what changed. src/ingest.ts |
| Exposed to Claude Code (MCP) | kb_search and kb_context tools an assistant calls on its own. src/mcp-server.ts |
npm install # native build needs Python <= 3.13
npm run ingest # embeds the bundled sample notes
npm run search "vector search" # semantic + keyword retrieval
npm run ask "what is a second brain" # assembled context block
npm run statsIndex your own Obsidian vault:
OBSIDIAN_VAULTS="$HOME/Documents/My Vault" npm run ingestWire it into Claude Code as a tool:
claude mcp add ai-lab -- npx tsx /absolute/path/to/ai-lab/src/mcp-server.tstopically coherent, with a hard cap (~1600 chars) on long sections.
so a raw dot product equals cosine similarity.
table indexes the same chunks for keyword recall.
every chunk; FTS5 keyword hits get a small boost. Keyword catches exact terms, vectors catch paraphrase - the blend beats either alone.
to ground a prompt.
tsx)@huggingface/transformers - local sentence embeddingsbetter-sqlite3 - vectors + FTS5, single-file store@modelcontextprotocol/sdk - MCP server for Claude CodePart of a wider set of AI tooling:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.