ingest

Route and run organizational ingestion through Egregore Runtime for files, folders, meetings, Google Workspace, Notion, interviews, or bulk corpora. Use for 'ingest', 'bring this into Egregore', 'inde

SKILL.md

GitHub

Ingest

Route external material into an authorized intake plane, then promote selected evidence into curated organizational memory. Do not collapse intake and promotion.

When to invoke

Route and run organizational ingestion through Egregore Runtime for files, folders, meetings, Google Workspace, Notion, interviews, or bulk corpora. Use for 'ingest', 'bring this into Egregore', 'index this folder', or 'import our docs'.

Route

  • One URL/document/reference → use the add skill and bin/ingest-item.sh.
  • meeting ... → use the meeting skill.
  • user-interview ... → use the ingest-user-interview skill.
  • google ... → use the ingest-google skill.
  • notion ... → use the ingest-notion skill.
  • A large question-answering corpus or “build a knowledge base” → use the ingest-corpus skill and keep its Connected capability gate.
  • No readable path → bash bin/ingest.sh select.
  • File/folder/export/bulk path → use the corpus pipeline below.
  • Ambiguous → ask which source class applies; do not guess a connector.

Preserve connector authorization/revocation in connector-specific Runtime adapters. This skill must not write connector lifecycle files or project state.

Invariants

  • Resolve organization only from the active Egregore instance, never content or arguments.
  • Keep selected/unverified bytes in gitignored local staging/quarantine.
  • Canonical shared state contains admitted Markdown or reference manifests with stable ids, revisions, provenance, boundaries, errors, and tombstones.
  • Register canonical state successfully before any derived retrieval refresh.
  • Hard boundaries are authorization filters, never descriptive tags. Missing required boundary evidence fails closed.
  • Graph projection is optional and cannot complete, block, or override intake.
  • Telemetry contains structured counts/status only, never source content.

Local selection

When no path was provided:

bash bin/ingest.sh select

If cancelled, stop. If it returns a Google or Notion connector, continue in that connector skill. Otherwise always submit the reviewed selection, using {selection-path} for the selection path printed by the select command:

bash bin/ingest.sh add-selection '{selection-path}'

The selection adapter verifies staging containment, relative paths, byte counts, and hashes before extraction. Register harness-native extraction for a selected PDF only when the reader actually produced normalized text; {selection-path} is the select command's returned path, {relative-pdf-path} is the selected PDF's path relative to the selection root, {extractor} identifies the reader that produced the text, and {normalized-file} is the normalized text file written under tmp/:

bash bin/ingest.sh register-extraction '{selection-path}' \
  '{relative-pdf-path}' --extractor '{extractor}' < '{normalized-file}'

Report unreadable/scanned pages; never imply complete extraction.

Corpus intake

Infer only safe metadata. Ask for a stable source id, sensitivity/visibility, hard boundaries, and whether the directory is an authoritative snapshot.

Use {source-path} for the user-selected file or folder, {source-id} for the user's stable source id, {name} and {kind} for the reviewed source name and content kind, and {boundary} for a user-confirmed key=value boundary:

bash bin/ingest.sh add '{source-path}' \
  --source '{source-id}' \
  --name '{name}' \
  --kind '{kind}' \
  --boundary '{boundary}'

Repeat boundaries. Use --prune only for an explicitly authoritative full snapshot. The adapter owns deterministic extraction, stable document/chunk identity, local quarantine, canonical manifest registration, retrieval refresh, and background embedding. Skills do not invoke those mechanics separately.

Verify

bash bin/ingest.sh status

Use {known-phrase} for a phrase observed in the admitted source and {source-id} for the stable source id supplied during intake:

bash bin/ingest.sh search '{known-phrase}' --source '{source-id}' -n 5

Include every required hard boundary in verification searches. Open exact evidence before making consequential claims. Report indexed/skipped/failed counts and gaps honestly.

Promote

Intake is not curated knowledge. Retrieve candidate evidence, open its exact source, then use the appropriate Runtime ritual for a decision, finding, research synthesis, meeting, or domain claim. Preserve source id, document id, revision/content hash, exact chunk ids, boundaries, reviewer, confidence, and conflicts. No evidence chunk means no promoted claim.

Completion

Report source id, documents/chunks admitted, extraction failures, boundaries, canonical manifest/writeback status, semantic-build state, and next review or promotion step. Do not run a second save, index, telemetry, or projection step.