一键导入
wiki-ingest
Use when adding a new source to a wiki — a paper, article, URL, file, transcript, or any document. One ingest may touch 10-15 wiki pages.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when adding a new source to a wiki — a paper, article, URL, file, transcript, or any document. One ingest may touch 10-15 wiki pages.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when fact-checking a single wiki page against its cited sources — verifies that every footnote actually supports its claim and surfaces uncited factual claims. Run after ingesting a high-stakes page or any time you want confidence in one page's accuracy.
Use when bootstrapping a new personal wiki for any knowledge domain — research, codebase documentation, reading notes, competitive analysis, or any long-term knowledge accumulation project.
Use when auditing a wiki for health issues — contradictions between pages, orphan pages, broken cross-references, stale claims, missing pages, or coverage gaps. Run after every 5-10 ingests.
Use when asking a question against a personal wiki built with wiki-init and wiki-ingest. Do not answer from general knowledge — always read the wiki pages first.
Use when revising existing wiki pages because knowledge has changed, a new piece of information updates or contradicts existing content, or the user wants to directly edit wiki content with LLM assistance.
Use when two wiki pages turn out to be the same concept under different slugs (merge), or one page overloads several distinct senses of a term and should be separated into qualified slugs (split). Often run on a wiki-lint "merge candidate" or "colliding slug" finding.
| name | wiki-ingest |
| description | Use when adding a new source to a wiki — a paper, article, URL, file, transcript, or any document. One ingest may touch 10-15 wiki pages. |
Add a source to the wiki. Read it, discuss with the user, write a summary page, update entity/concept pages, and maintain the index, overview, and log.
Search for SCHEMA.md starting from the current directory and upward, or in common wiki locations (~/wikis/). If not found, tell the user to run wiki-init first.
Read SCHEMA.md to learn: wiki root path, page frontmatter format, cross-reference convention, log entry format, index category taxonomy.
Link style. Read link_style: from SCHEMA.md. If the field is missing or <wiki-root>/config/link-style.md does not exist, default to obsidian and use [[slug]] as the cross-reference form. Otherwise, read <wiki-root>/config/link-style.md for the exact emit and parse rules. Every cross-reference and citation slug-target you write below must follow that file's ## Emit rule. Every scan of existing pages (the backlink audit in step 7) must follow its ## Parse rule.
The source can be:
raw/<filename> if not already therebrowse skill to fetch it; save to raw/<slug>.<ext>Read all content. For long sources, read in sections. Do not skip.
Tell the user:
python bin/generate-index.py — then read wiki/index.md and relevant pages to check)Ask: "Anything specific you want me to emphasize or de-emphasize?"
Wait for the user's response before proceeding.
Lowercase, hyphens, no special characters.
Example: "Attention Is All You Need" → attention-is-all-you-need
Write wiki/pages/<slug>.md:
---
title: <source title>
category: <one of the wiki's Index Categories — e.g. Sources>
summary: <one-line description for the index>
tags: [<relevant tags>]
sources: [<slug>]
created: <today>
updated: <today>
---
# <Source Title>
**Source:** <original URL or file path>
**Date ingested:** <today>
**Type:** <paper | article | transcript | code | other>
## Summary
<2-3 paragraph synthesis — your own words, not abstract copy-paste>
## Key Takeaways
- <bullet>
## Entities & Concepts
<list of entities/concepts as cross-reference links — emit each in the wiki's link_style; see config/link-style.md>
## Relation to Other Wiki Pages
<how this connects to or updates existing knowledge>
While drafting the Summary, Key Takeaways, and any other prose section, every
non-common-knowledge factual claim must carry a footnote. Read the Citations
section in SCHEMA.md for the full convention.
Two citation kinds, three valid targets:
Quote: [^N]: <target> <locator> — "<verbatim quote>"
Synthesis: [^N]: <target> <locator> [synthesis] — <what supports the claim>
<target> is one of:
<slug-reference> — a source wiki page, written in the wiki's link_style
(preferred for the source you're ingesting)
raw/<file> — a path, for drive-by citations to other local files
<URL> — a live URL or post
For the source being ingested, the slug-reference target is <this-source-slug> written in the form prescribed by config/link-style.md. wiki-ingest is creating that page now, so the target exists by the time the page is read.
Line-range provenance — required for text-addressable sources. If the raw file
you are citing is markdown, plaintext, code, or cached HTML, every footnote to it must
carry a line-range token after the semantic locator: L<start>-<end> (or L<n> for a
single line). As you read the raw file, note the line numbers of the passage you are
citing — for a quote, the lines the quote is taken from; for a [synthesis] claim, the
block of lines being summarized. Example:
[^1]: [[<this-source-slug>]] §3.2 L142-143 — "We employ h = 8 parallel attention layers"
[^2]: [[<this-source-slug>]] §3.2-5.3 [synthesis] L138-202 — encoder/decoder + attention describe the architecture
Sources WITHOUT stable line numbers — PDFs, transcripts, and live URLs with no local
cached copy — are exempt: keep the semantic locator (p.N, [HH:MM:SS], URL anchor)
and omit L….
If you cannot produce either citation kind for a claim, you do not have a citation. Find one, weaken the claim ("the paper suggests..."), or drop it.
Footnotes go at the bottom of the page, below all sections. Number them sequentially in order of first reference.
Re-read the draft once. Three passes:
L… token is present.
A text-source footnote with no line-range is incomplete: go back to the raw file,
find the lines, and add the token. Exempt sources (PDF / transcript / live URL) are
fine without one.[[slug]] you wrote in this page and confirm
each resolves to an existing wiki/pages/<slug>.md or to a page you are creating in
this same ingest. See the Concept Identity rule in SCHEMA.md. Any [[slug]]
that resolves to neither is a hallucinated link: remove it, or create the page it
points to. This is the inline version of the broken-link check wiki-lint runs
wiki-wide — catching it now keeps the link graph trustworthy by construction.Only when all three passes are clean do you move on to entity pages.
For each entity/concept touched by this source:
sources list, update updated date---
title: <Entity or Concept Name>
category: <one of the wiki's Index Categories — e.g. Entities or Concepts>
summary: <one-line description for the index>
tags: [entity | concept]
sources: [<this-source-slug>]
created: <today>
updated: <today>
---
# <Name>
## Description
<synthesis across all sources that discuss this>
## Appearances in Sources
- <slug-reference to source-slug, in the wiki's link_style> — <one-line note>
## Related Concepts
- <slug-reference to related-slug, in the wiki's link_style> — <relationship>
Scan ALL existing pages in wiki/pages/ for any that mention this source's entities/concepts but don't yet link to the new page. Use the ## Parse regex from config/link-style.md to detect existing references. Add new cross-references to the new page using the ## Emit form from the same file.
This is the step most commonly skipped. A compounding wiki's value comes from bidirectional links.
Before adding each [[slug]], apply the Concept Identity rule: the target must
resolve to a real page. When you mention an entity that should have a page but doesn't,
create the page (step 6) rather than linking to a slug that resolves to nothing.
Final link-resolution sweep. Once every page this ingest touched is written
(summary, entity/concept pages, backlinks), collect all [[slug]] references across
those pages and confirm each resolves to an existing wiki/pages/<slug>.md. This
extends the step 5c check to the links written after it. Fix any unresolved link before
moving on — remove it or create its page.
Now that every page this ingest touched is written and you have its neighbors in context,
check for contradictions before committing. Read the Contradiction Check section in
SCHEMA.md for the full convention. This is a gate, not an annotation: a clean ingest
leaves no contradiction metadata on any page.
Scope — what to compare (do NOT re-read the whole wiki):
A conflict with some distant page you never opened is out of scope here — the periodic
wiki-lint sweep is the backstop for that.
Classify each contradiction you find:
Blocking — a real factual conflict on the same entity under the same scope:
incompatible dates, counts, names, or mutually-exclusive claims (e.g. the new source page
says a model launched in 2024 but [[that-model]] already says 2023). For each blocking
contradiction, write a single line into the affected page's frontmatter — the page you
touched that carries the newer claim:
contradiction-check: failed — launch year conflicts with [[that-model]] (2024 vs 2023)
Use internal in place of the [[slug]] for a within-page conflict. Then stop — do
not proceed to the commit step (step 10). Surface the conflict (both claims, both
locations) and offer the user these resolutions:
When a conflict is resolved, remove the contradiction-check line from the page.
Only once no contradiction-check: failed line remains on any touched page do you
continue.
Soft — a tension that is not a true conflict: differing emphasis, values within
plausible version/measurement variance, or claims that hold under different scope. Do
not write anything to any page and do not block. Note it for the step 11 summary
so the user can act if they wish; the periodic wiki-lint sweep is the backstop.
wiki/index.mdDo not hand-edit the index. Every page you wrote this ingest already carries
category, summary, and created in its frontmatter — that is the index's source of
truth. Regenerate it:
python bin/generate-index.py
The new source, entity, and concept pages now appear under their categories
automatically. If the generator warns about a page with no frontmatter or a page lands in
Uncategorized, fix that page's frontmatter and rerun.
wiki/overview.mdRe-read the current overview. If this source:
Update the frontmatter updated date.
Gate first: do not suggest a commit while any page touched this ingest still carries a
contradiction-check: failed line (step 7b). Resolve the blocking contradiction and remove
the line first — committed pages are always clean.
Per SCHEMA's Operation Log & Commit Convention:
docs: for an ingest — plus the trailer).
Commit on the user's confirmation; never auto-commit.
docs: summarize <source title>
Wiki-Op: ingest
wiki/log.md:
## [<today>] ingest | <source title>
Pages written: <slug>
Pages updated: <comma-separated list>
## April 27 update: or **Update:** followed by new content. Update the relevant section in-place, bump the updated frontmatter date, and record what changed in the operation log (a commit on a git wiki, or log.md otherwise). The log is the historical record; pages are the current truth.[[slug]] links — Never write a cross-reference to a slug you have not confirmed exists or are creating now. A link that resolves to nothing is a hallucinated link. Verify against the existing page set (ls wiki/pages/); see the Concept Identity rule in SCHEMA.md.wiki/pages/<slug>.md