Skip to content
Back to skills

Wiki Ingest

ASecurity

Use when the user wants to ingest external sources into the vault — PDFs, markdown files, transcripts, Readwise exports, or any document. Triggers on "ingest", "process document", "import into vault", "distill this", "add to vault", or "extract knowledge from".

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
ai-agents

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add thoreinstein/obsidian-rag --skill wiki-ingest --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Wiki Ingest?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Wiki Ingest
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thoreinstein-wiki-ingest/badge)](https://www.skillsdirectory.com/skills/thoreinstein-wiki-ingest)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: wiki-ingest
description: >-
  Use when the user wants to ingest external sources into the vault — PDFs,
  markdown files, transcripts, Readwise exports, or any document. Triggers on
  "ingest", "process document", "import into vault", "distill this", "add to
  vault", or "extract knowledge from".
---

# Wiki Ingest

Distill external sources into vault-native notes following VAULT_CONVENTIONS, with provenance tracking and deduplication.

## Workflow

### 1. Identify Sources

Accept one or more source paths from the user. Sources can be:
- Files on disk (markdown, PDF, text, transcripts)
- Vault-internal notes (Readwise highlights, working notes to promote)
- A directory to scan for ingestible files

For vault-internal sources, use `obsidian_read_note`. For external files, use the `Read` tool.

### 2. Check Manifest

Read `.manifest.json` from the vault root using `Read` tool.

For each source path, check if it exists in `sources`:
- **Not present** → new source, proceed to extract
- **Present but source modified since `ingested_at`** → re-ingest
- **Present and unchanged** → skip (tell user "already ingested, use --force to re-process")

### 3. Extract Knowledge

Read the source content. Identify:
- **Patterns** — reusable approaches, techniques, or practices
- **Traps** — pitfalls, anti-patterns, things that went wrong
- **Decisions** — architectural or design choices with rationale
- **Concepts** — definitions, mental models, frameworks

For each extraction, classify its **provenance**:
- **Extracted** (unmarked) — directly stated in the source
- **Inferred** `^[inferred]` — synthesized, generalized, or implied but not stated
- **Ambiguous** `^[ambiguous]` — source is unclear or contradicts other sources

### 4. Deduplicate

For each extracted concept, search the vault:
1. Call `obsidian_rag_query` with the concept name/summary, `limit: 5`
2. If a strong match exists, read the existing note with `obsidian_read_note`
3. Decide: **merge** into existing note or **create** new note

**Merge** when: the existing note covers the same concept and the new source adds information.
**Create** when: no existing note covers this concept, or the angle is sufficiently different.

### 5. Present Plan

Before creating or modifying any notes, present the plan to the user:

```
## Ingest Plan for: <source name>

### New Notes
- Engineering/Patterns/<name>.md — <one-line summary>
- Engineering/Traps/<name>.md — <one-line summary>

### Merge Into Existing
- Engineering/Patterns/<existing>.md — adding: <what's new>

### Skipped
- <concept> — already covered in [[existing-note]]
```

Wait for user confirmation before proceeding.

### 6. Write Notes

For **new notes**, use `obsidian_create_note` with content following VAULT_CONVENTIONS templates:

- Set `type:` to pattern, trap, or decision
- Set `project:` to the source project or "general"
- Set `tags:` from content
- Set `created:` to today's date
- Set `provenance:` fractions based on inline marker counts
- Include `## Links` section with `[[wikilinks]]` to related vault notes
- Add `## Sources` section citing the ingested source

For **merges**, use `obsidian_insert_at_heading` or `obsidian_replace_section` to add new content to existing notes. Update the `provenance:` frontmatter if the mix changed, using `obsidian_update_frontmatter`.

### 7. Placement Rules

- Cross-project patterns/traps/decisions → `Engineering/Patterns/`, `Engineering/Traps/`, `Engineering/Decisions/`
- Project-specific knowledge → `working/<project>/knowledge/`
- If unclear, ask the user

### 8. Update Manifest

After all notes are written, update `.manifest.json`:

For each processed source, add/update an entry in `sources`:
```json
{
  "<source-path>": {
    "ingested_at": "<ISO8601 now>",
    "size_bytes": <file size>,
    "modified_at": "<source file mtime>",
    "source_type": "document",
    "pages_created": ["Engineering/Patterns/foo.md"],
    "pages_updated": ["Engineering/Traps/bar.md"]
  }
}
```

Update `stats.total_sources_ingested` and `stats.total_pages`. Set `last_updated` to now.

Write the updated manifest back using the `Write` tool.

### 9. Suggest MOC Updates

For each new Engineering/ note created, check which thematic MOCs it belongs in. Suggest additions but don't auto-edit MOCs — use `/moc-update` for that.

## Arguments

- Source path(s): `/wiki-ingest ~/Documents/paper.pdf`
- Optional project scope: `/wiki-ingest working/appiary/knowledge/auth-notes.md`
- Optional force flag: `/wiki-ingest --force <path>` to re-ingest unchanged sources

## Tips

- Run `/index` first if `obsidian_rag_query` returns poor results
- For Readwise books, ingest the book's highlight file (e.g., `Readwise/Books/<title>.md`)
- Large sources may yield many extractions — review the plan carefully before confirming
- Provenance fractions don't need to be exact; approximate to the nearest 0.05

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.