Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/eric-cielo/moflonpx agentmods add skills/eric-cielo/moflo/vector-searchWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/eric-cielo/moflo/vector-search)<a href="https://agentmods.dev/skills/eric-cielo/moflo/vector-search"><img src="https://agentmods.dev/badge/skills/eric-cielo/moflo/vector-search/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/eric-cielo/moflo/vector-search"><img src="https://agentmods.dev/badge/skills/eric-cielo/moflo/vector-search.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00048 | $0.01337 |
| Opus 5.5 | $0.00019 | $0.00535 |
| Sonnet 5.5 | $0.00010 | $0.00267 |
| Haiku 4.5 | $0.00005 | $0.00134 |
Grade A, and why
vector-search scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 142 lines — stays where its author put it; the contents beside it link to each section on GitHub.
MoFlo Vector Search (RAG)
Semantic search over your own documents, backed by moflo's HNSW index in .moflo/moflo.db (node:sqlite, Node 22+ built-in). Small enough to ship in a devDependency; fast enough for interactive retrieval at 100k–1M vectors.
When to Use This vs memory-patterns
memory-patterns— structured, namespaced memory you own (sessions, learnings, patterns). Keys matter. Entries are conceptual units.- This skill (
vector-search) — search over documents you've ingested for retrieval. Entries are content chunks. Keys are just stable IDs for dedupe.
Both use the same index; the difference is how you chunk and what you put in the value field.
Ingest
Two paths. Pick the one that matches your source of truth:
A. Ad-hoc ingest from Claude Code
for (const [id, text] of chunks) {
await mcp.memory_store({
namespace: 'docs', // your RAG corpus
key: id, // stable ID for this chunk (file path + offset, etc.)
value: text, // the chunk content — what gets embedded
tags: ['doc', docType],
upsert: true,
});
}
B. Repeatable ingest from the filesystem
Use moflo's shipped indexers (cross-platform, skip unchanged chunks via a hash file):
# Guidance docs → namespace 'guidance'
node .claude/scripts/index-guidance.mjs
# Code structure → namespace 'code-map'
node .claude/scripts/generate-code-map.mjs
# Your own corpus — write a small indexer that loops over files and calls
# memory_store. Model it on bin/index-patterns.mjs.
Retrieve
const hits = await mcp.memory_search({
namespace: 'docs',
query: userQuestion,
limit: 8,
threshold: 0.35, // drop irrelevant noise; tune per-corpus
});
// hits[] = [{ key, namespace, value, similarity, ... }]
Plug the retrieved value strings into your prompt as context. Filter or rerank higher up if needed.
Chunking Rules That Actually Matter
- One idea per chunk. 200–800 tokens. Smaller for code, larger for prose.
- Include enough context for the chunk to stand alone. A bare "it does X" chunk won't retrieve well because the embedding has no subject.
- Deduplicate by stable ID. Re-ingest is a no-op if
key+valuehash match. Cheap to re-run. - Keep metadata minimal in
value. The embedding is built from the full value — noisy prefixes dilute the vector. Put structured metadata intagsor a separatemeta:${id}key.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 142 lines · 48 tokens per session scan A fb0ff5946b2c
vector-search is a skill published in the GitHub repository eric-cielo/moflo (19 stars, last pushed yesterday), licensed MIT. It adds 48 tokens to every session and 1,337 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
qdrant
Vector search engine for production RAG systems.
dspy
DSPy: declarative LM programs, auto-optimize prompts, RAG.
chroma
Embedding database for RAG and semantic search.
pinecone
Managed vector DB for production RAG and search.
faiss
Fast vector similarity search at billion scale.
pinecone-research
Agent RAG and long-term memory with Pinecone.