lambenthan/empiricalwiki/ingest
Claude Code and agent skill by lambenthan/empiricalwiki
- community
Checking that the SKILL.md file is still in the repository.
Ingest a paper into the wiki — creates pages (papers + concepts + people + claims) and builds all cross-references and graph edges. Trigger whenever the user says "ingest", "add this paper", drops a `.pdf` / `.tex` / arXiv URL, or asks to fold a paper into the knowledge base.
Install
npx vskill@latest install lambenthan/empiricalwiki/ingestSKILL.md
/ingest
Turn one paper into a fully wired set of wiki pages. Emit well-formed entities and correct cross-references; leave semantic audits (backlink symmetry, dangling nodes, field-value policing) for /check.
Use these local references on demand:
references/pdf-preprocessing.md— arXiv-ID recovery, tex fetching, prepare-paper handoff for direct PDF dropsreferences/dedup-policy.md— merge-vs-create decision rule for concepts and claims, and the line that separates/ingestshape checks from/checksemantic auditsreferences/cross-references.md— forward/reverse link matrix and paper-to-paper edge-type selectionreferences/init-mode.md— manifest-driven handoff from/initand parallel-safety conventionsreferences/error-handling.md— source parse, API, and slug-collision fallbacks
Open docs/runtime-page-templates.en.md before drafting any wiki page frontmatter or body sections, and docs/runtime-support-files.en.md for index.md, log.md, and graph/ formats.
Inputs
source: one of — arXiv URL (e.g.https://arxiv.org/abs/2106.09685), local.tex, local.pdf, or acanonical_ingest_pathhanded off by/initvia.checkpoints/init-sources.json(seereferences/init-mode.md)--discover(optional, default off): after the final report, invoke/discover --anchor <this-paper's-arxiv-id>and append the shortlist to the report as "Related papers you may want to ingest next". Never auto-ingests the suggestions. Skipped automatically in INIT MODE. Treat this as a user-owned flag: do not set it based on repo state.
Outputs
- One fully-wired paper page plus linked entities (concepts, claims, people)
- Graph edges and citations appended via
tools/research_wiki.py - Terminal summary with page counts and suggested follow-up ingests
Wiki Interaction
Reads
wiki/index.mdfor existing slugs and tagswiki/papers/*.mdto detect an already-ingested paperwiki/concepts/*.mdandwiki/foundations/*.mdfor dedup matcheswiki/claims/*.mdfor dedup matcheswiki/people/*.mdfor existing authorswiki/topics/*.mdto place the paper under existing topicswiki/graph/open_questions.mdto notice when the paper addresses a known gap
Writes
wiki/papers/{slug}.md— CREATEwiki/concepts/{slug}.md— CREATE (new) or EDIT (appendkey_papers, aliases, variants)wiki/claims/{slug}.md— CREATE (new) or EDIT (appendevidenceentry)wiki/people/{slug}.md— CREATE (importance ≥ 4 only) or EDIT (appendKey papers)wiki/topics/{slug}.md— EDIT only (no CREATE from/ingest)wiki/graph/edges.jsonl— APPEND via toolwiki/graph/citations.jsonl— APPEND via toolwiki/graph/context_brief.md— REBUILD (skipped in INIT MODE)wiki/graph/open_questions.md— REBUILD (skipped in INIT MODE)wiki/index.md— APPENDwiki/log.md— APPEND via tool
Graph edges created
paper → concept:introduces_concept/uses_concept/extends_concept/critiques_conceptwithconfidencepaper → foundation:derived_from(foundation is terminal; no reverse link)paper → claim:supports/contradictspaper → paper:same_problem_as/similar_method_to/complementary_to/builds_on/compares_against/improves_on/challenges/surveyswithconfidence- bibliographic
paper → paper:citesingraph/citations.jsonl
tools/research_wiki.py add-edge rejects missing confidence/evidence for paper-paper and paper-concept semantic edges, and rejects legacy paper-to-concept or paper-to-paper types on new writes.
Workflow
Pre-condition: working directory contains wiki/, raw/, and tools/. Resolve the Python interpreter once and reuse it:
Step 1: Resolve the source
- If
/initpassed acanonical_ingest_path, enter INIT MODE and consume that path verbatim. Do not rescanraw/. Seereferences/init-mode.md. - If the source is an arXiv URL, extract the arXiv ID, use
"$PYTHON_BIN" tools/fetch_s2.py paper <arxiv-id>to recover the title when possible, then run"$PYTHON_BIN" tools/init_discovery.py download --raw-root raw --arxiv-id <arxiv-id> --title "<title-or-arxiv-id>". Continue from the returnedcanonical_ingest_path. The helper tries arXiv source first and falls back to PDF; do not callfetch_arxiv.pyfor a single paper because it is RSS-only. - If the source is a local
.tex, use it directly. - If the source is a local
.pdf, run the preprocessing pipeline inreferences/pdf-preprocessing.mdto produce a prepared.texunderraw/tmp/before continuing.
Raw persistence rule: never copy or duplicate a file already under raw/discovered/, raw/tmp/, or raw/papers/ into a different raw subtree.
Step 2: Paper identity and enrichment
- Generate the paper slug:
``bash "$PYTHON_BIN" tools/research_wiki.py slug "<paper-title>" ``
- Stop-if-exists: if
wiki/papers/{slug}.mdalready exists and the arXiv ID or title matches, report and exit. If they differ, resolve the collision perreferences/error-handling.md. - When an arXiv ID is available, query Semantic Scholar:
``bash "$PYTHON_BIN" tools/fetch_s2.py paper <arxiv-id> ``
Use the result for venue, year, s2_id, citation count, and the evidence behind the importance score (1-5).
- Optional DeepXiv enrichment, when available. Skip silently if it fails:
``bash "$PYTHON_BIN" tools/fetch_deepxiv.py brief <arxiv-id> "$PYTHON_BIN" tools/fetch_deepxiv.py head <arxiv-id> "$PYTHON_BIN" tools/fetch_deepxiv.py social <arxiv-id> ``
brief seeds the Key-idea section; head sanity-checks your tex parsing against the section structure; social is an auxiliary importance signal.
Step 3: Write the paper page
Open docs/runtime-page-templates.en.md for the paper template. Fill every required frontmatter field; leave cited_by empty for now (step 5 backfills it).
Before writing, run a shape check on the frontmatter you are about to emit — no more than this:
- every required key is present and non-empty
importance∈ {1,2,3,4,5};statuson claims ∈ the documented set;maturityon concepts ∈ the documented set; claimconfidence∈ [0,1]- YAML parses
The shape check is intentionally narrow. Backlink symmetry, dangling-node detection, and cross-entity consistency are /check's job, not this skill's.
Body sections to populate: Problem, Key idea, Method, Results, Limitations, Open questions, My take, Related.
Step 4: Concepts, claims, people
Follow references/dedup-policy.md. In short:
- For each candidate concept or claim, call the matching
find-similar-*tool first. - Prefer merging into the top result. Create a new page only when the tool returns no acceptable candidate and the paper's importance justifies it.
- For each entity you write or edit, write the reverse link in the same turn. The obligation matrix lives in
references/cross-references.md. - Create a
wiki/people/{slug}.mdonly for papers with importance ≥ 4. Otherwise append to existing author pages only.
Step 5: Paper-to-paper edges and cited_by
Skip this whole step in INIT MODE — the parent /init handles it at fan-in.
- For each reference whose arXiv ID or title resolves to an existing
wiki/papers/{slug}.md, add a bibliographiccitesrow tograph/citations.jsonl. - Add a semantic paper-to-paper edge in
graph/edges.jsonlonly when the source text gives a clear cue. Edge-type selection is inreferences/cross-references.md. If no semantic relation cleanly fits, keep only thecitesrow. - For each citation already in the wiki, append the citer's slug to this paper's
cited_by. - Surface unmatched high-citation references in the final report so the user can decide whether to follow up with another
/ingest.
Step 6: Topics and index
- Match the paper's domain and tags against existing
wiki/topics/*.md. For each match:
- importance ≥ 4 → append to the topic's
## Seminal works - importance < 4 → append under
## SOTA trackeror## Recent workby year - if the paper directly addresses a listed open problem, annotate that line on the topic page
- Do not create new topic pages from
/ingest— topic creation belongs to/initand/edit. - Append new or edited page entries to
wiki/index.mdunder their category headings. Seedocs/runtime-support-files.en.mdfor the exact format.
Step 7: Log and rebuild
Unless in INIT MODE:
Step 8: Report
Emit one compact summary covering: pages created, pages updated, graph edges added, contradictions surfaced (if any), and high-citation references not yet in the wiki (suggested follow-up ingests). Close with:
Step 9: Optional discovery (only if --discover is set)
Skip this step unless the user explicitly passed --discover. Also skip it in INIT MODE — /init's parent process decides whether to run discovery at fan-in, not individual subagents.
When active, invoke /discover with the just-ingested paper as the single anchor:
Append the markdown output to the report under a heading like "Related papers you may want to ingest next". Do not auto-ingest anything from the shortlist — the user picks. If discovery fails (S2 outage, all channels empty), note the failure in one line and continue — a failed /discover must not fail an otherwise successful /ingest.
Constraints
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingi18n/en/skills/ingest/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/lambenthan/empiricalwiki/ingest)