Skip to content
Back to skills

Ingest

ASecurity

Use this skill when the user wants to ingest, index, import, load, add, upload, or process files or folders into Retriever, or to refresh changed files, ingest a processed production, or explain what was ingested — including phrasings like "index this folder", "import these files", "load the Downloads directory", "add this PST to the collection", "upload and process this batch", "re-index the gmail-max mbox", or "what did you ingest". It bootstraps the workspace if needed, chooses between ing...

  • 25 stars
  • 0 votes
  • 1 copy
  • 3 views
  • Added June 8, 2026
businesspythonshellsqldebuggingbackend

Works with

  • claude code

Security analysis

A100/100

Scanned June 8, 2026

npx -y skills add sdemyanov/retriever --skill ingest --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ingest?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ingest
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sdemyanov-ingest/badge)](https://www.skillsdirectory.com/skills/sdemyanov-ingest)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ingest
description: >
  Use this skill when the user wants to ingest, index, import, load, add, upload,
  or process files or folders into Retriever, or to refresh changed files, ingest a
  processed production, or explain what was ingested — including phrasings like
  "index this folder", "import these files", "load the Downloads directory",
  "add this PST to the collection", "upload and process this batch", "re-index the
  gmail-max mbox", or "what did you ingest". It bootstraps the workspace if needed,
  chooses between ingest and ingest-production, and summarizes the results.
metadata:
  version: "1.1.17"
---

> Operates under `retriever:routing`. If the user's intent actually fits a different tier — another `retriever:*` skill, a Tier 2 slash, a Tier 3 `tools.py` subcommand, or (last resort) direct DB access — stop and re-route against the ladder before continuing.

# Retriever Ingest

Use this skill when the user says things like:

- "index these documents"
- "refresh the workspace"
- "re-ingest this folder"
- "scan for new files"
- "ingest this PST"
- "ingest this production"
- "load this DAT/OPT set"
- "index this Bates production"

## Load order

1. Read [../workspace/workspace.md](../workspace/workspace.md).
2. Read [../parsing/parsing.md](../parsing/parsing.md) if parsing or failure behavior matters.
3. Use [../tool-template/tools.py](../tool-template/tools.py) as the canonical tool entrypoint.

## Execution rules

- Confirm or infer the workspace root.
- For a newly selected workspace, always run `python3 skills/tool-template/tools.py workspace status --quick <workspace>` before the first ingest. For already-known workspaces, run it whenever runtime state is unclear.
- If `workspace init` or the first ingest fails with SQLite `WAL`, journal-mode, mount, or sandbox wording, stop normal ingest execution and follow the [mounted/sandboxed SQLite bootstrap troubleshooting](../workspace/workspace.md#mounted-fs-bootstrap).
- Do not conclude the workspace is unsupported from `df`, `mount`, or host filesystem labels alone.
- Existing DB writes do not prove fresh bootstrap will succeed; distinguish existing-DB behavior from fresh-create behavior on the exact target `.retriever/retriever.db` path.
- Follow the shared ingest preflight in [../workspace/workspace.md](../workspace/workspace.md) before running workspace-local commands. That contract handles missing tools, clean-but-stale auto-upgrades, user-modified tool protection, and mounted-path bootstrap troubleshooting without changing the chosen ingest intent.
- Prefer plain `ingest` for normal Claude Code indexing and refresh tasks. It is the bounded V2 facade by default.
- Use plain one-shot ingest for normal local work:
  `python3 skills/tool-template/tools.py ingest <workspace> --recursive`
- Do not use background jobs or shell loops for ingest. Do not manually call `ingest-start` / `ingest-run-step` unless you need to inspect or recover a specific active run.
- If an active ingest run already exists, `ingest` will fail with `active_ingest_run`; resume or cancel that run intentionally instead of starting another one.
- For `.pst` sources, use regular `ingest`, not `ingest-production`.
- If `workspace status` reports `pst_backend.status == fail`, explain that PST ingest needs the required `libpff-python` / `pypff` backend installed.
- If the user target is a processed production root during normal Claude Code use, prefer plain ingest with `--path <production-root-relative-path>` and no `--file-types`; it will auto-route the production.
- Use `ingest-production` only when the user explicitly asks for that command, when running a targeted script outside the normal bounded Claude Code command window, or when debugging parity with the production-only path.
- Treat `DAT` + companion `TEXT/`, `IMAGES/`, and optional `NATIVES/` folders as a production signature, not as loose files.
- Run plain `ingest` with `--recursive` when the user wants the whole tree scanned.
- When the user asks to reingest only a subtree or file inside the workspace, keep the positional workspace root unchanged and pass one or more `--path <relative-path>` flags.
- Plain `ingest` without `--file-types` now auto-routes detected production roots through the production ingest pipeline while still indexing loose files elsewhere in the tree.
- If plain `ingest` reports `skipped_production_roots`, explain that Retriever detected a processed production but skipped it because a file-type filter was present; use `ingest-production` when the user's intent is to index that production root explicitly.
- Summarize `new`, `updated`, `renamed`, `missing`, `skipped`, and `failed` for plain ingest.
- When plain ingest auto-routes productions, also summarize `ingested_production_roots` plus the production document create/update/unchanged/retired and linked-part counters.
- Summarize `created`, `updated`, `unchanged`, `retired`, family reconstruction, linked images, and missing linked parts for `ingest-production`.
- If failures are present, list the failed relative paths and short reasons.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.