embeddings
Skill1 starsChanged 3 months agoMITView on GitHub
Inspect or switch how br8n embeds text for semantic search — remote (API key) or local (keyless, on-device ONNX). Use when the user asks why search returns nothing, wants search to work without an API key, wants to stop paying for embeddings, or asks which embedding model br8n is using.
- Reads credentials
- Installs packages
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
Call mcp__plugin_br8n_br8n__br8n_embeddings_get().
- Very specific: line 35
Call mcp__plugin_br8n_br8n__br8n_embeddings_set(provider) with auto, remote, local or none.
- Distinctive: line 79
If the rebuild itself genuinely fails partway (a locked DB, a transient I/O error — distinct from a deliberate defer), the tool does not …
- Distinctive: line 87
Do not tell the user local embeddings match the remote model's quality.
“Common” is measured: kept by at least 6 in 10 of the 7 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
br8n — Embeddings (which provider, and switching it)
Semantic search needs vectors. br8n produces them one of three ways:
| Provider | When it applies | Dim |
remote | AI_GATEWAY_API_KEY or OPENAI_API_KEY is set | 1536 |
local | the br8n[local-embeddings] extra is installed, no key is set, and the KB is on the local tier — cloud pgvector columns are 1536-wide, so local always refuses on cloud | 384 |
none | neither — capture and chronological surfaces still work, search is text-only | — |
Step 1 — Report the current state
Call mcp__plugin_br8n_br8n__br8n_embeddings_get(). Lead with the provider,
model and why it was chosen (source), then flag anything actionable:
ready: falsewithprovider: local→ the model is still downloading (~130 MB, first use only). Search stays text-only for a minute; nothing is lost.pending_findings/pending_nodesabove zero → a re-embed is draining in the background. It refills on ordinary reads; no action needed.provider: none→ say what would fix it: either set a key, orpip install 'br8n[local-embeddings]'and switch to local.pending_switchnotnull→ the environment quietly changed (e.g. a key went missing) and would flip the space (pending_switch.stored→pending_switch.detected), but existing vectors are at risk, so br8n left them alone instead of rebuilding. Tell the user what changed and offer to apply it — that offer is exactly Step 2.
Step 2 — Switch, if asked
Call mcp__plugin_br8n_br8n__br8n_embeddings_set(provider) with auto,
remote, local or none. auto is the default and means "use a key if
there is one, else local". To actually apply a deferred pending_switch,
pass the concrete detected.provider from Step 1 — that always rebuilds
immediately. Passing auto instead re-runs detection but is still subject to
the same work-at-risk gate, so if the vectors it would discard are still
there it defers again ({ok: true, deferred: true, ...}) rather than forcing
the rebuild through.
The change lands in ~/.br8n/settings.json and applies to the next call — no
MCP server restart. If the tool returns ok: false, relay error and, when
present, run nothing yourself: show the user the fix command.
What a switch costs
Vectors from different models are not comparable, so an explicit switch via
this tool rebuilds the index in place: br8n resizes the vector tables, drops
the old vectors, and re-embeds in the background from content it already has.
queued_rebuild in the response says how many rows were just flagged. Search
quality dips until the drain finishes, then recovers — nothing is lost,
because the text is canonical (in the DB and, on the vault tier, on disk).
An auto-detected environment change (no br8n_embeddings_set call — the
key just came or went) behaves differently once real vectors exist: br8n
does not rebuild on its own. Discarding a corpus of vectors is not a
decision to make silently mid-flow, so the space is left exactly as it is and
the pending switch surfaces via pending_switch (Step 1) / the --check
doctor line instead. The only case that still rebuilds with no confirmation
is a fresh install with nothing to lose (an empty vector table), which is
what keeps a brand-new keyless machine zero-interaction.
Calling this tool with auto is what applies that offer — but the same
work-at-risk gate still governs it: if auto currently resolves to a
different space than what's stored and real vectors are present, the tool
defers instead of forcing the rebuild through. That response looks like
{ok: true, deferred: true, ...}, still carries pending_switch (unchanged
from Step 1 — nothing was applied), and the setting is saved as "auto"
exactly as asked; nothing is rolled back. This is success, not failure — it
means "auto" was recorded, but the space itself is still waiting on an
explicit remote/local/none (or a repeat auto call once the vectors
are no longer at risk, e.g. after python -m br8n.vault.reindex). Passing a
concrete provider (remote/local/none) always rebuilds immediately
when it changes the space — the gate only ever defers auto.
If the rebuild itself genuinely fails partway (a locked DB, a transient I/O
error — distinct from a deliberate defer), the tool does not report success
on a half-done switch: it rolls the setting back to whatever it was before
the call, so the provider and the index stay consistent — never a persisted
setting pointing at an index that was never actually rebuilt. That case
returns {ok: false, error, fix}, with fix suggesting a retry or
python -m br8n.vault.reindex.
Do not tell the user local embeddings match the remote model's quality. They are a good keyless fallback; a configured key is still the better path.
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- ruvnet/claude-flow★ 80ksame name
- ruvnet/ruflo★ 79ksame name
- 0gfoundation/0g-agent-skills★ 15same name
- Zekiog/ruflo★ 2same name
- fidgetcoding/fidgetflo★ 1same name
- jpoindexter/theft-kit★ 1same name
- Soulcynics404/AgentForge★ 1same name
- Wellux/claude-code-deprecated★ 1same 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.
Used alongsideProjects with it also use agent-agent, agent-analyze-code-quality and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
ZekiogSkillagent-agent
Agent skill for agent - invoke with $agent-agent
Also in 5 projects that use this
ZekiogSkillagent-analyze-code-quality
Agent skill for analyze-code-quality - invoke with $agent-analyze-code-quality
Also in 5 projects that use this
- +10 more from Zekiog
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
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.

