Ingest Inbox Item
SkillFiles & storageIngests a single file from the substacker inbox/ into corpus/seeds/ as a normalized markdown seed with full frontmatter. Orchestrates format normalization, topic tagging, intuition-density scoring, dedupe, changelog, ledger update, and inbox-file move to .processed/. Use when the user drops raw material into inbox/ and runs /ingest, at session start, or whenever a single inbox file needs to become an indexed seed. Trigger keywords — ingest, inbox, new note, new transcript, new highlight, index this, add to corpus.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Ingest Inbox Item skill
What this skill tells your AI
The instructions your AI receives, as published by lyndonkl/claude in skills/ingest-inbox-item/SKILL.md and read by ahel’s review.
Table of Contents
- Workflow
- Frontmatter schema
- Worked example
- Guardrails
- Related skills
Related skills: Uses normalize-format, tag-by-topic, score-intuition-density, dedupe-against-corpus, update-topic-ledger. Called by the Librarian agent for each file in inbox/.
Workflow
Copy this checklist and track progress per file:
Ingest one inbox file:
- [ ] Step 0: Compute sha256 of file body; check .librarian-state.json for duplicate fingerprint
- [ ] Step 1: Invoke normalize-format → body + partial frontmatter
- [ ] Step 2: Invoke tag-by-topic → topics + pending_tags
- [ ] Step 3: Invoke score-intuition-density → score + signals
- [ ] Step 4: Invoke dedupe-against-corpus → CREATE | LINK | SKIPPED
- [ ] Step 5: If LINK, backlink matched seeds' related_seeds field
- [ ] Step 6: Write seed file with full frontmatter; status=seed; manual_edits=false
- [ ] Step 7: Append one line to corpus/seeds/.changelog.md
- [ ] Step 8: Invoke update-topic-ledger for each topic tag
- [ ] Step 9: mv inbox file → inbox/.processed/
- [ ] Step 10: Update .librarian-state.json with the fingerprint
Step 0: Hash the body (not frontmatter). If the fingerprint is in .librarian-state.json, exit with SKIPPED (already ingested: <seed-id>). Idempotency is a feature.
Step 1: normalize-format handles all supported formats (plain markdown, .jsonl Claude Code sessions, .json Claude.ai exports, Readwise exports, transcripts with speaker labels, link captures). Returns one or more {body, partial_frontmatter} pairs — multi-chunk outputs possible for long transcripts.
Step 2: tag-by-topic proposes 1–4 tags from the controlled vocabulary. If none match, it logs to topic-ledger.md#pending-tags and still assigns the closest existing tag.
Step 3: score-intuition-density computes 0–10 from 8 explicit signals. Auditable.
Step 4: dedupe-against-corpus returns one of SKIPPED (exact fingerprint match — exit), LINK (near-match — proceed but write related_seeds), or CREATE (no match).
Step 6: Write the seed file. Location: corpus/seeds/{id}.md where id = YYYY-MM-DD-slugified-title. If a seed with that id already exists, append -v2 rather than overwrite.
Step 7: Changelog format: YYYY-MM-DDThh:mm | ADDED | {seed-id} | from {original_path} | density={N} | topics={comma-list}
Frontmatter schema
---
id: 2026-04-23-dropout-as-ensemble-thinned-networks
title: "Dropout as ensemble over thinned networks"
created: 2026-04-21T09:14:00-07:00
source:
type: inbox-note
original_path: inbox/2026-04-21-dropout-as-ensemble.md
ingested_at: 2026-04-23T14:32:01-07:00
fingerprint: sha256:7c1d...
topics: [regularization, ensembling, dropout]
intuition_density:
score: 8
signals: [analogy_present, concrete_worked_example, counterfactual_offered, reframe_against_default, biology_to_ai]
status: seed
provenance:
author: kushal
confidence: owned
links:
related_seeds: [2026-03-11-l2-as-gaussian-prior]
parent_source: null
section_affinity: [agent-workshop]
word_count: 87
manual_edits: false
---
[body: preserved verbatim from normalize-format output]
Worked example
Input: inbox/2026-04-21-dropout-as-ensemble.md (87 words, plain markdown, user's own note).
Run:
- Step 0: fingerprint new → proceed.
- Step 1: normalize-format → body unchanged (plain markdown); title from first line or filename.
- Step 2: tag-by-topic →
[regularization, ensembling, dropout];dropoutnew → logged to pending-tags. - Step 3: score → 8; signals fired: analogy_present, concrete_worked_example, counterfactual_offered, reframe_against_default, biology_to_ai.
- Step 4: dedupe → near-match
2026-03-11-l2-as-gaussian-priorat Jaccard 0.32 (below 0.5 threshold) → CREATE (not LINK). - Step 6: Write
corpus/seeds/2026-04-21-dropout-as-ensemble-thinned-networks.mdwith full frontmatter. - Step 7: Changelog:
2026-04-23T14:32 | ADDED | 2026-04-21-dropout-as-ensemble-thinned-networks | from inbox/2026-04-21-dropout-as-ensemble.md | density=8 | topics=regularization,ensembling,dropout - Step 8: Ledger:
regularizationseeds 3→4, temperature→hot;ensembling1→2;dropoutnew row added. - Step 9:
mv inbox/2026-04-21-dropout-as-ensemble.md inbox/.processed/ - Step 10: Append fingerprint to state.
Output: one seed file, one changelog line, three ledger updates, one moved file.
Guardrails
- If
normalize-formatfails, the inbox file stays put (not moved) and the changelog recordsERROR | <file> | <reason>. No partial ingests. - If topic-tagger proposes a tag not in the controlled vocabulary that cannot map to one, log to pending-tags — never silently invent.
- If a seed with the candidate
idexists, append-v2; never overwrite. - Never ingest files under
inbox/.processed/orinbox/.trash/. - Run single-threaded. Parallel ingests corrupt the ledger and changelog.
- If
dedupe-against-corpusreturnsSKIPPED, move the inbox file to.processed/with a renamed suffix-duplicate-of-{matched-seed-id}and exit — don't re-write the matched seed.
Quick reference
- Idempotent: yes (fingerprint check in step 0).
- Writes: one seed file + one changelog line + ledger updates + one moved inbox file + state update.
- Failure mode: format error halts the pipeline for that one file; other files continue.
Signals
- GitHub stars
- 158
- Forks
- 23
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
ingest-inbox-item- Source
- github.com/lyndonkl/claude