Ingest a single source file into the vault wiki. Reads the source, extracts knowledge by file type, creates or updates wiki pages, updates _index.md and _log.md, and records the operation in _manifest.json. Use when the user wants to add a specific file to the wiki. Triggers on: wiki-ingest, ingest this file, add this to the wiki, process this source, wiki ingest.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add ihudak/ihudak-claude-plugins --skill wiki-ingest --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Wiki Ingest?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ihudak-wiki-ingest)More formats (shields.io, HTML) on the badges page.
---
name: wiki-ingest
description: >
Ingest a single source file into the vault wiki. Reads the source, extracts knowledge
by file type, creates or updates wiki pages, updates _index.md and _log.md, and records
the operation in _manifest.json. Use when the user wants to add a specific file to the
wiki. Triggers on: wiki-ingest, ingest this file, add this to the wiki, process this
source, wiki ingest.
allowed-tools: Read Write Edit Glob Grep Bash
---
# wiki-ingest
Read `skills/wiki-schema/SKILL.md` fully before proceeding.
Invoke with: `/wiki-ingest @filepath`
---
## Step 1 — Resolve VAULT_PATH
Vault path: `~/obsidian_vault` by default; set `VAULT_PATH` to override. WSL users with a Windows-side vault must set `VAULT_PATH` explicitly (e.g. `/mnt/c/Users/<name>/obsidian_vault`).
All file paths in this skill are relative to the vault root.
---
## Step 2 — Delta check
Read `wiki/_manifest.json` (create it from the schema template if it does not
exist yet).
Compute the source file hash:
```bash
md5sum "<filepath>" | cut -d' ' -f1
```
If the path exists in `_manifest.json` with the same hash: stop and report
`Already ingested (unchanged). Use 'force' keyword to re-ingest.`
Proceed if: path is absent, hash differs, or user said `force`.
---
## Step 3 — Read the source file completely
Do not skim. Read every section.
---
## Step 4 — Identify file type and extract accordingly
| Path prefix | Type | What to extract |
|---|---|---|
| `Meetings/` | Meeting note | Decisions made, technologies discussed, action items (flag them — do NOT create tasks directly; `/wiki-tasks-extract` consumes these flags later), people present, open questions |
| `Daily/` | Daily note | `## Notes` and `## Worklog` sections only. Skip all Dataview/Obsidian Tasks query blocks — those are not content |
| `Projects/` | Project file | Tech stack, decisions, key links, patterns discovered, status |
| `Customers/` | Customer note | Use cases, pain points, customer context, integrations mentioned |
| `People/` | Person note | Role, team, expertise areas, relationships |
| `Clippings/` or `Research/` | Research/clip | Key concepts, takeaways, relevant decisions |
| `.raw/` | Inbox source | Full extraction — this is a deliberate ingest target; extract everything |
> Note: Daily notes must use level-2 `## Notes` and `## Worklog` headings; other heading levels are skipped.
**For `.raw/` HTML files**: check if defuddle is available first:
```bash
npx defuddle --version 2>/dev/null && echo "available" || echo "not available"
```
If available: `npx defuddle parse "<filepath>" --md` and use that output.
If not: read the file directly.
**Action items from meeting notes**: flag them in the log entry as
`action-item: <description>` but do NOT create tasks. The user creates tasks via
`/wiki-task` or extracts them in batch via `/wiki-tasks-extract`.
---
## Step 5 — Resolve against existing wiki
Before creating any new page:
1. Read `wiki/_index.md` to see what already exists.
2. Search for an existing page with a matching or near-matching title:
```bash
find "wiki" -name "*.md" | grep -i "${CONCEPT}" # substitute the actual concept name
```
3. If an existing page covers this concept/entity/decision: **update it**, do not create
a duplicate.
4. Create a new page only if genuinely new content with no existing home.
When updating an existing page:
- Add new information; do not overwrite existing content unless it is factually wrong.
- If new info contradicts existing content, add a `> [!warning] Potential contradiction`
callout on both pages noting the conflict. Do not silently overwrite.
- Update the `updated:` frontmatter date.
---
## Step 6 — Write wiki pages
Apply the frontmatter schema from `wiki-schema` for the correct page type.
File naming: Title Case with spaces. `MCP Server.md`, not `mcp-server.md`.
Place files in the correct subdirectory:
- `wiki/concepts/`
- `wiki/entities/`
- `wiki/decisions/`
- `wiki/patterns/`
- `wiki/sources/` (.raw/ files only)
For the page body:
- Write in declarative present tense. "X does Y", not "X basically does Y".
- Cross-link on first mention of any concept, entity, or decision.
- Keep pages 100–300 lines. If content would exceed 300 lines, split into related pages.
- Do NOT add Dataview queries to wiki pages.
---
## Step 7 — Update _index.md
Add a row for every new page to the correct section table. Update the `Summary` and
`Updated` columns for any existing page that was significantly changed. Sort alphabetically
within each section. Update the `updated:` frontmatter date on `_index.md`.
---
## Step 8 — Append to _log.md
New entry at the TOP of the file (newest first):
```markdown
## [YYYY-MM-DD] ingest | <source file path>
- Pages created: [[concept/Name]], [[entity/Name]]
- Pages updated: [[entity/Existing]]
- Key insight: One sentence on what is genuinely new.
- Action items flagged: <description> (if any from meeting notes)
- tag-needed: <proposed-tag> (if any tag was missing from tag-index.md)
```
---
## Step 9 — Update _manifest.json
Write or update the entry for the ingested file:
```json
"<filepath>": {
"hash": "<md5>",
"ingested_at": "YYYY-MM-DD",
"wiki_pages": ["wiki/concepts/Name.md", ...]
}
```
---
## Step 10 — Update hot.md
Update `wiki/hot.md` following the format in `wiki-schema`:
- Set `## Last Updated` to today and one sentence describing this ingest.
- Add key facts learned to `## Key Recent Facts`.
- List created/updated pages in `## Recent Changes`.
- Keep the file ≤300 words total.
---
## Finish
Report:
```
Ingested: <source file>
Pages created: N (<list>)
Pages updated: M (<list>)
Tags flagged: <list or "none">
Action items flagged: <list or "none">
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!