agentleFS
nicholasglazernicholasglazer/gnosis-mcp/skills/ingest/SKILL.md

ingest

Skill30 starsChanged 7 months agoMITView on GitHub

Populate the gnosis-mcp knowledge base — from local files, git history, or a crawled website. Handles the full matrix of flags (--force, --prune, --wipe, --embed, --include-crawled) in one place.

  • Installs packages

88 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use daily-arxiv, exp-eval 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.
  • LambenthanSkill

    daily-arxiv

    每日从 arXiv 拉取新论文,过滤相关性,auto-ingest 高优先级论文,检测 SOTA 更新

    Also in 5 projects that use this

  • LambenthanSkill

    exp-eval

    实验判决门:Review LLM 独立评判实验结果 → 4 种判决路径 → 自动更新 claims confidence、ideas status、graph edges

    Also in 5 projects that use this

  • phanghonghaoSkill

    poster

    HTML/CSS A4 海报生成。从沙龙/活动 Markdown 文件生成科技风 A4 海报 PDF/PNG。Use when user mentions: poster, 海报, 海报生成, make poster, generate poster, 活动海报, 沙龙海报.

    Also in 5 projects that use this

  • skyllwtSkill

    exp-pilot-eval

    Pilot result evaluation — read pilot results, apply success criteria, update idea page (pilot_result, failure_reason if failed), generate PILOT_VERDICT_REPORT. Called by /ideate Phase 5 after /exp-pilot-run.

    Also in 4 projects that use this

  • skyllwtSkill

    exp-pilot-run

    Pilot experiment execution — read Pilot Spec YAML, write pilot code, run experiment(Confirm with the user before operation and require the applicant to conduct manual inspection), return results. Called by /ideate Phase 5. Does NOT modify wiki pages or judge pass/fail.

    Also in 4 projects that use this

  • +6 more from Lambenthan
  • +1 more from skyllwt

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 2 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 72 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Default entry point. Handles .md, .txt, .ipynb, .toml, .csv, .json (+ .rst / .pdf if those extras are installed).

    line 24
  2. Distinctive:

    Default is 2000 characters (~600 tokens) — peak of the Feb 2026 sweep on a real dev-docs corpus.

    line 42
  3. Very specific:

    If you're unsure, run /gnosis:tune to sweep sizes against your own golden queries.

    line 53
  4. Very specific:

    Always run gnosis-mcp stats (or /gnosis:status stats) after a big ingest to confirm:

    line 209
  5. Distinctive:

    No vec0 table errors

    line 215

“Common” is measured: kept by at least 6 in 10 of the 72 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Ingest

One skill that covers every way to get content into gnosis-mcp. Routes based on $ARGUMENTS:

  • Path to a directory / file → local file ingest
  • git <repo> → git-history ingest
  • crawl <url> → web-crawl ingest
  • reingest → full reset + re-ingest from the default path
  • prune <path> → delete DB chunks whose source is gone

Action: $ARGUMENTS


ingest <path> — local files

Default entry point. Handles .md, .txt, .ipynb, .toml, .csv, .json (+ .rst / .pdf if those extras are installed).

First-time ingest

gnosis-mcp ingest ./docs --embed
  • --embed runs the bundled ONNX embedder (requires [embeddings] extra). Without it you get keyword-only search — usually enough for dev-doc corpora (see bench-experiments), but --embed costs nothing on a first ingest and enables hybrid later if you want it.
  • Incremental: every file's content hash is stored, so re-running only processes changed files. Use --force to re-ingest regardless.

Chunk size

Default is 2000 characters (~600 tokens) — peak of the Feb 2026 sweep on a real dev-docs corpus. Override per-ingest or globally:

# This invocation only
GNOSIS_MCP_CHUNK_SIZE=1500 gnosis-mcp ingest ./docs --embed

# Persistent (put in shell profile)
export GNOSIS_MCP_CHUNK_SIZE=3000   # long-form blogs / ADRs

If you're unsure, run /gnosis:tune to sweep sizes against your own golden queries.

Reorganized your knowledge folder

Files moved, deleted, renamed. Pick one:

# Safest: re-ingest + drop chunks for files that no longer exist
gnosis-mcp ingest ./docs --embed --prune

# Nuclear: drop everything first, then re-ingest
gnosis-mcp ingest ./docs --embed --wipe

# Preview what prune would delete
gnosis-mcp prune ./docs --dry-run

By default --prune leaves crawled URLs alone (since those don't correspond to local files). Add --include-crawled if you want those gone too.


ingest git <repo> — git commit history

Indexes each file's commit history as a searchable markdown document. Lets your agent answer "why does this code exist" queries.

gnosis-mcp ingest-git /path/to/repo --since 6m --embed

Common flags:

FlagEffect
--since 6m / --since 2025-01-01Window of commits to include
--until 2026-03-01Upper bound
--author "alice@"Filter by author name or email substring
--max-commits 20Commits per file, most recent first (default 10)
--include "src/**"Glob filter on touched files
--exclude "*.lock,package.json"Skip noisy files
--mergesInclude merge commits (excluded by default; takes no value)

Each indexed doc's file_path is git-history/<original-path>.md. Cross-file co-edits generate git_co_change edges; source-file references get git_ref. Query them via mcp__gnosis__search_git_history (or filter mcp__gnosis__get_related by relation_type=git_co_change).

Re-run ingest-git whenever your history grows past the window you already indexed.


ingest crawl <url> — web crawl

Indexes a documentation website. Requires the [web] extra (pip install 'gnosis-mcp[web]').

# Preferred — discover URLs from sitemap.xml
gnosis-mcp crawl https://docs.stripe.com --sitemap --embed

# No sitemap? BFS link crawl, one hop deep
gnosis-mcp crawl https://docs.example.com --depth 1 --embed

# Subset only
gnosis-mcp crawl https://docs.example.com --sitemap \
  --include "/docs/api/**" --exclude "*.pdf"

# Preview, don't fetch
gnosis-mcp crawl https://docs.example.com --dry-run

Other flags:

FlagEffect
--max-urls 5000Maximum URLs to crawl (default 5000)
--depth 2BFS link-crawl depth (default 1; ignored with --sitemap)
--forceIgnore the ETag / Last-Modified / hash cache

Behaviour:

  • Respects robots.txt. A same-host redirect on /robots.txt is treated as disallow (prevents spoofing).
  • Caches ETag + Last-Modified + content hash at ~/.local/share/gnosis-mcp/crawl-cache.json — subsequent crawls issue conditional GETs and skip unchanged pages.
  • Extracts markdown via trafilatura with a 30 s per-page timeout (GNOSIS_MCP_CRAWL_EXTRACT_TIMEOUT_S).

Vendor docs strategy: crawl them once, commit the indexed SQLite to version control, and you have offline, searchable vendor docs alongside your private docs. No Context7 subscription required.


ingest reingest — full reset

Drop everything, reinitialise, reindex. Use when:

  • You changed embedder (GNOSIS_MCP_EMBED_MODEL or _EMBED_DIM) — old vectors are now incompatible
  • You want to force a clean baseline before a benchmark
  • Schema drifted (rare, but init-db is idempotent so rerunning is safe)
gnosis-mcp init-db                        # ensure schema is current
gnosis-mcp ingest ./docs --embed --wipe   # delete everything + reingest
gnosis-mcp stats                           # confirm

ingest prune <path> — dead-chunk cleanup

Standalone prune, independent of re-ingest.

# What would go
gnosis-mcp prune ./docs --dry-run

# Delete chunks for files no longer on disk under ./docs
gnosis-mcp prune ./docs

# Also drop crawled URLs (normally spared)
gnosis-mcp prune ./docs --include-crawled

Safer than --wipe because it only deletes rows whose original file_path resolved as a local file under the given root AND is now missing. Crawled URLs, git-history docs (git-history/*), and any path outside the root are untouched unless you explicitly opt in.


Watch mode (server-side auto-reingest)

Skip the manual re-run loop — the server can watch a folder and re-ingest on file changes.

gnosis-mcp serve --watch ./docs --transport streamable-http --rest

Mtime polling + debounce. Works on every OS, no fsnotify dependency. Ideal for docs-as-code repos where you push a doc and want it searchable by your editor within a few seconds.


Verify afterwards

Always run gnosis-mcp stats (or /gnosis:status stats) after a big ingest to confirm:

  • Doc count matches expectations
  • Chunk count is sensible (~1-5 chunks per doc for ~2000-char chunk size)
  • Embeddings coverage is 100 % if you used --embed
  • No vec0 table errors
$ gnosis-mcp stats
Documents: 558
Chunks:    1,742
Embeddings: 1,742 / 1,742 (100.0 %)
Last access log entry: 2026-04-18 07:12 UTC
Backend: sqlite

See also

  • /gnosis:tune — chunk-size sweep on your own corpus
  • /gnosis:status — connectivity + DB health
  • /gnosis:search — query the index you just populated
  • config reference for every GNOSIS_MCP_* env var
  • CLI reference for every flag

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.