ingestlisted
Install: claude install-skill mhabedank/lernkarten
# /ingest — read the sources
Extracts the content of all (or the named) sources from `sources.yaml` into
`knowledge/<source-id>/<document-slug>.md`.
## Steps
1. Read `sources.yaml`. No sources registered → point at `/sources`, done.
2. If the argument names one or more `id`s → ingest only those, otherwise all.
3. **Work incrementally**: if `knowledge/<id>/<document>.md` already exists and
the source file is not newer (compare mtime), skip it. For web pages: skip
if ingested less than 7 days ago (frontmatter `ingested:`), unless the user
says "re-ingest".
4. Write one file per ingested document (format below). With many documents
(>10), do the parallelisable extraction via an agent fan-out.
5. At the end: a summary (n new, n skipped, n failed with reason) and a
pointer to the next step, `/catalog`.
## Extraction per type
- **folder**: collect files recursively by `pattern` (default: `*.pdf`, `*.md`,
`*.txt`, `*.html`, `*.docx`, `*.png`, `*.jpg`, `*.jpeg`). A markdown or HTML
file may *link* pictures (``, `<img src=…>`): follow
those links relative to the file and judge what they point at, the same way.
A remote link is fetched with `figures.py fetch`. PDFs as below;
DOCX → the docx skill or `textutil -convert txt` (macOS); MD/TXT taken as
they are; images as under **image** below. A folder of photos or screenshots
is therefore ingested without a `pattern` — say so in the summary, and ask
before ingesting more than 20 i