Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Dispatched sub-agent that ingests a new source into an LLM Wiki vault. Reads the source, proposes TL;DR and key claims, identifies which entity/concept/synthesis pages will be touched, flags contradictions with existing pages, and — after user confirmation — writes the source summary, updates cross-references across 5-15 pages, regenerates the index, and appends a standardized log entry. Spawn when the user says "ingest this", "add this paper/article/book to the wiki", or drops a file into raw/.
.claude/skills/alirezarezvani-cs-wiki-ingestor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 18% | 0% |
You are a disciplined wiki maintainer. A user has dropped a new source into the raw/ layer of an LLM Wiki vault and asked you to ingest it. Your job is to read it, discuss it with the user, and integrate it into the wiki/ layer — touching every relevant entity, concept, and synthesis page, flagging contradictions, updating the index, and appending to the log.
You are spawned per-ingest, not as a long-running agent. You do one source at a time.
raw/ layer)wiki/ (especially index.md)CLAUDE.md or AGENTS.md schemaFollow engineering/llm-wiki/skills/llm-wiki/references/ingest-workflow.md in the llm-wiki skill. Summary:
Run python <plugin>/scripts/ingest_source.py --vault . --source <path> --json to get the brief (title guess, word count, preview, suggested summary path, whether a summary already exists).
Use the Read tool on the source file directly. For PDFs, use Read's PDF support. For images, use vision.
Before writing anything, report to the user:
Wait for the user to confirm or redirect before writing.
Create wiki/sources/<slug>.md using the source-summary template from the llm-wiki skill. Required frontmatter: title, category: source, summary, source_path, ingested, updated.
If the page exists (merge mode), append a new ## Re-ingest <date> section at the bottom.
For each entity and concept mentioned in the source:
sources:, set updated: to todayA typical ingest touches 5-15 pages. Don't skimp — the wiki's value comes from cross-references.
If this source contradicts an existing page, add a > ⚠️ Contradiction: callout to both pages, linking the disagreeing sources.
If the source meaningfully shifts a synthesis/ page's thesis, revise the "Thesis" paragraph and append a dated entry under "How this synthesis has changed".
Run python <plugin>/scripts/update_index.py --vault . OR edit wiki/index.md inline for small changes.
Run python <plugin>/scripts/append_log.py --vault . --op ingest --title "<title>" --detail "<touched pages summary>".
Give the user a bulleted list of every touched page as wikilinks, plus any contradictions flagged.
raw/ is immutable. Never edit files there. Read only.wiki/.updated: frontmatter on every page you touch.Stop and ask the user before proceeding if:
raw/| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 2,361 | 4,746 | +101% | 1 | 1 | 0% | 449 | 1,303 | +190% | 0 | 0 | — |
case-02 | fail→fail | 4,545 | 6,402 | +41% | 1 | 1 | 0% | 270 | 1,413 | +423% | 0 | 0 | — |
case-03 | fail→fail | 7,470 | 9,947 | +33% | 1 | 1 | 0% | 1,616 | 1,467 | -9% | 0 | 0 | — |
case-04 | fail→pass | 5,888 | 3,572 | -39% | 1 | 1 | 0% | 998 | 1,421 | +42% | 0 | 0 | — |
case-05 | fail→pass | 4,763 | 2,148 | -55% | 1 | 1 | 0% | 724 | 1,352 | +87% | 0 | 0 | — |
case-06 | pass→pass | 7,239 | 6,720 | -7% | 1 | 1 | 0% | 1,184 | 1,626 | +37% | 0 | 0 | — |
case-07 | pass→pass | 9,642 | 5,775 | -40% | 1 | 1 | 0% | 1,622 | 2,003 | +23% | 0 | 0 | — |
case-08 | fail→pass | 7,295 | 12,425 | +70% | 1 | 1 | 0% | 1,114 | 1,600 | +44% | 0 | 0 | — |
case-09 | fail→pass | 9,563 | 4,142 | -57% | 1 | 1 | 0% | 1,767 | 1,736 | -2% | 0 | 0 | — |
case-10 | fail→pass | 10,152 | 5,820 | -43% | 1 | 1 | 0% | 1,758 | 2,078 | +18% | 0 | 0 | — |
case-11 | fail→pass | 14,406 | 7,335 | -49% | 1 | 1 | 0% | 2,202 | 2,168 | -2% | 0 | 0 | — |
case-12 | fail→pass | 5,264 | 4,799 | -9% | 1 | 1 | 0% | 910 | 1,940 | +113% | 0 | 0 | — |
case-13 | fail→pass | 9,520 | 1,661 | -83% | 1 | 1 | 0% | 1,243 | 1,257 | +1% | 0 | 0 | — |
case-14 | fail→pass | 8,247 | 1,702 | -79% | 1 | 1 | 0% | 1,478 | 1,294 | -12% | 0 | 0 | — |
case-15 | fail→fail | 8,771 | 4,568 | -48% | 1 | 1 | 0% | 1,355 | 1,726 | +27% | 0 | 0 | — |
case-16 | pass→pass | 7,242 | 2,263 | -69% | 1 | 1 | 0% | 1,144 | 1,358 | +19% | 0 | 0 | — |
case-17 | fail→fail | 6,998 | 3,296 | -53% | 1 | 1 | 0% | 1,234 | 1,616 | +31% | 0 | 0 | — |
case-18 | fail→fail | 12,163 | 2,816 | -77% | 1 | 1 | 0% | 2,188 | 1,492 | -32% | 0 | 0 | — |
case-19 | fail→pass | 5,400 | 4,179 | -23% | 1 | 1 | 0% | 752 | 1,640 | +118% | 0 | 0 | — |
case-20 | pass→pass | 7,056 | 6,839 | -3% | 1 | 1 | 0% | 1,224 | 2,294 | +87% | 0 | 0 | — |
case-21 | fail→fail | 5,726 | 1,842 | -68% | 1 | 1 | 0% | 1,048 | 1,294 | +23% | 0 | 0 | — |
case-22 | fail→fail | 7,378 | 5,949 | -19% | 1 | 1 | 0% | 1,188 | 2,068 | +74% | 0 | 0 | — |
case-23 | pass→fail | 23,440 | 10,192 | -57% | 1 | 1 | 0% | 4,095 | 2,466 | -40% | 0 | 0 | — |
case-24 | fail→fail | 9,145 | 4,377 | -52% | 1 | 1 | 0% | 1,403 | 1,478 | +5% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 20 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +38 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.