mfs-ingest
Register, update, or re-sync data sources for MFS so they become searchable — postgres / mysql / mongo / snowflake / bigquery,…
Search, grep, browse, and read across registered MFS data sources via the `mfs` CLI — codebases, docs, PDFs, web crawls, databases (postgres/mysql/mongo/snowflake/bigquery), issue trackers (jira/linear/github), CRMs (hubspot), chat (slack/discord/gmail/feishu), object stores
Claude Code
$ npx -y skills add zilliztech/mfs --skill mfs-find --agent claude-code
Codex
$ npx skills add zilliztech/mfs --skill mfs-find -a codex -y
Cursor
$ npx skills add zilliztech/mfs --skill mfs-find -a cursor -y
Gemini CLI
$ npx skills add zilliztech/mfs --skill mfs-find -a gemini-cli -y
GitHub Copilot
$ npx skills add zilliztech/mfs --skill mfs-find -a github-copilot -y
OpenCode
$ npx skills add zilliztech/mfs --skill mfs-find -a opencode -y
Windsurf
$ npx skills add zilliztech/mfs --skill mfs-find -a windsurf -y
name: mfs-find version: 0.4.0 mfs_compat: ">=0.4,<0.5" description: >- Search, grep, browse, and read across registered MFS data sources via the `mfs` CLI — codebases, docs, PDFs, web crawls, databases (postgres/mysql/mongo/snowflake/bigquery), issue trackers (jira/linear/github), CRMs (hubspot), chat (slack/discord/gmail/feishu), object stores (s3/gdrive). Use whenever the user asks to find, locate, look up, look across, or read something out of an already-configured MFS index. Trigger phrases include "search the codebase for", "find anywhere about", "where is X mentioned", "look across our [slack/jira/postgres/etc]", "any past tickets/RFCs/commits about", "what does our wiki say about", "cat / head / tail / ls / tree this MFS path". Do NOT use for: registering a NEW data source (use `mfs-ingest`), changing connector config, kicking off re-ingest, or any write/delete operation — `mfs` is read-only.
A retrieval layer that exposes many kinds of content as a unified path tree and makes that tree searchable through one hybrid index:
Slack workspace, S3 bucket, BigQuery dataset — all addressed as paths under their `<scheme>://` URI. Same verbs everywhere: `ls / tree / cat / head / tail / grep / search / export`.
per query — covers conceptual recall and exact-token recall in one call.
reopens the exact unit: `{"lines":[s,e]}` for text/code, a PK dict for rows/issues/threads.
| Situation | Use MFS? | |---|---| | 1000+ files / rows / pages, you don't know where the answer is | ✅ | | Cross-source question ("any past tickets / commits / RFCs about X") | ✅ `--all` | | Concept-style query that won't match literally | ✅ `--mode semantic` | | You already know the exact file + roughly where to look | ❌ plain `cat`/`grep` | | Exact identifier / error code in 5 files you can list | ❌ plain `grep`/`rg` | | Real-time tailing of a live log | ❌ index lags ingest | | The source isn't in MFS yet | wrong skill, use `mfs-ingest` to register first |
**Rule:** use the smallest tool that answers the question. MFS pays off when the scope is too big for `rg`.
**Borderline — ASK the user:**
| Ask | Likely answer | Why | |---|---|---| | "Summarise these 10 PDFs" | ✅ `mfs search` + `cat --peek` per hit | each PDF gets a `converted_md` artifact + searchable chunks | | "Find similar tickets to this one" | ✅ paste the ticket text as the search query | semantic over `row_text` does similarity matching | | "Watch for new slack messages" | ❌ no `watch` capability; use Slack's API | index lags ingest | | "Look up user 12345" | ❌ `mfs cat <source> --locator '{"id":12345}'` directly (skip search) | one-record-by-id doesn't need ranking |
Before running any query, especially on cross-source asks:
mfs status # server up? any connectors registered? mfs connector inspect <uri> # this connector's object/job summary mfs ls <uri> --json # per-entry capabilities + indexable / search_status
self-hosted), or this skill can't proceed.
`mfs-ingest`** — don't try to search nothing.
`cat` work; offer those or redirect to `mfs-ingest` for a re-sync.
index) until done.
search locate browse ┌──────────────────┐ ┌──────────────────┐ ┌─────────────────────┐ │ semantic + BM25 │ → │ result has lines │ → │ cat --range / cat │ │ finds candidates│ │ or a locator │ │ --peek to confirm │ └──────────────────┘ └──────────────────┘ └─────────────────────┘
On large corpora this loop is the whole point: read only the part that matters. On small corpora it's still fine, just lighter.
Concrete:
1. **Search:**
mfs search "<what the user actually wants>" <path-or-uri> --top-k 10
2. **Locate** — every hit's envelope carries `locator`:
3. **Browse** — verify only what's needed:
mfs cat --peek <file> # outline (headings / function signatures) mfs cat --skim <file> # peek + one-line summaries per section mfs head -n 20 <uri> # first records of a structured object mfs tree <uri> -L 2 # subtree shape
`mfs search` defaults to `hybrid`. Override only when you know why.
| `--mode` | Mechanic | When | |---|---|---| | **`hybrid`** *(default)* | dense + BM25 fused with RRF | almost always | | `semantic` | dense only | conceptual query, wording won't match literally | | `keyword` | BM25 only | exact-term (config key, error code) without semantic drift |
Other useful flags:
A context harness for AI agents: all your scattered context — code, memory, docs, databases, SaaS — in one searchable, browsable, file-like interface.
Register, update, or re-sync data sources for MFS so they become searchable — postgres / mysql / mongo / snowflake / bigquery,…
Believable agent cost report for any period, default the last 7 full days PT, not counting today. Measured tokens from Claude…
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…
Keep a durable record of work passed between Bots in the shared Hindsight memory bank. Use when handing work to another Bot, when…