From para-knowledge-base
Ingest documents into the PARA Knowledge Base. Classifies, moves, links, and indexes new documents from Inbox or a specified path. Use when new documents need processing into the vault.
How this skill is triggered — by the user, by Claude, or both
Slash command
/para-knowledge-base:kb-ingestThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Process new documents into the Knowledge Base. Reads content, classifies into the right PARA location, generates metadata, creates wikilinks, updates related documents, and maintains indexes.
Process new documents into the Knowledge Base. Reads content, classifies into the right PARA location, generates metadata, creates wikilinks, updates related documents, and maintains indexes.
/kb-ingest # Process all files in Inbox/
/kb-ingest path/to/file.md # Process a specific file
/kb-ingest path/to/folder/ # Process all .md files in a folder
For each document to ingest:
_index.md files for context (NOT full documents — token-efficient)| Signal | Classification |
|---|---|
| Has deadline, phases, deliverables | 1. Projects/ → which project? |
| Paper/논문, research, study | 2. Areas/Paper/ |
| Career, Interview/면접, resume | 2. Areas/Career/ |
| Ongoing responsibility, no end date | 2. Areas/ → which area? |
| Tutorial, how-to, reference guide | 3. Resources/ → which category? |
| Completed, historical, inactive | 4. Archive/ |
| Unclear | Ask user |
Add or update frontmatter fields:
---
title: Document Title
created: 2026-04-05 # preserve original if exists
type: paper # paper|note|reference|meeting|idea|log|data
summary: One-line summary of the document's content and purpose.
tags:
- "#proj/project-name" # if project-related
- "#type/paper" # document type
- "#topic/kubernetes" # subject matter
related:
- "[[Related Document]]" # discovered relationships
source: https://... # URL or citation (if applicable)
---
summary is required on every ingested document, not just long ones. It is what kb-query reads instead of the full body when narrowing candidates. Write it as a single sentence describing what the document contains — not a teaser. For documents under 500 words, this frontmatter line is the only summary produced; for longer documents, Step 5 below adds a second, longer summary as a body callout.
Use type: data for large data-style listings that are not meant to be read in full — raw exports, link/reference dumps, generated tables, telemetry-adjacent lists. kb-query skips the body of type: data documents and relies on summary and frontmatter alone, so make the summary field precise about what the data covers (source, scope, row/item count) since it carries more weight than usual.
For documents over 500 words, add a second, longer summary as a body callout in addition to the required frontmatter summary line:
> **Summary:** ... callout blockScan document content for existing vault entities:
[[Document Title]][[project-name]][[term]]Rules:
For each strongly related document (max 3):
## Related Documents section (create section if missing; use ## 관련 문서 for Korean vaults)- [[New Document]] — brief context_index.md0. Common/index.md1. Projects/<slug>/ and that folder has a project hub _index.md, update the hub's local document list as well. Create a new project hub only when the vault convention or user request calls for project-level entrypoints.Append to 0. Common/log.md:
[2026-04-05] ingest | Document Title | → 2. Areas/Paper/ | updated 2 docs
When processing multiple files (Inbox/ or folder):
Projects are not born in 1. Projects/ and archived unchanged — knowledge should flow in and out as a project moves through PARA. Apply this lifecycle at project start, during active work, and at completion; it runs independently of the per-document ingest flow above, which handles individual incoming notes.
Ideas and reference material usually already live in 2. Areas/ or 3. Resources/ before a project exists. When a project starts:
| Signal | Action |
|---|---|
| Document is a project-unique deliverable, plan, or decision record | Move into 1. Projects/<slug>/ |
| Document is reference material the project draws on but doesn't own | Keep it in place (2. Areas/ or 3. Resources/); link with [[wikilink]] from the new project instead of moving |
Do not drag reference material into the project folder just because the project uses it — moving breaks the resource's existing backlinks and duplicates ownership. Link, don't move.
While a project is active, new knowledge surfaces that outlives the project itself (a reusable pattern, a technique, a decision framework). Ask: would this still be useful after the project ends?
| Answer | Action |
|---|---|
| Yes — reusable beyond this project | Create or update the page in 3. Resources/; link it from the project instead of duplicating content in the project folder |
| No — specific to this project's execution | Keep it in the project folder as a project-unique record |
Keep the project folder lean: unique history and decisions, not general knowledge that belongs in Resources.
Do not move a completed project folder into 4. Archive/ wholesale without a decompose pass first. Archiving unprocessed folders turns Archive into an unsearched dumping ground and strands reusable knowledge where kb-query won't look for it.
Before the move:
3. Resources/. Anything future projects could reuse (patterns, techniques, findings) gets its own Resources page or merges into an existing one.2. Areas/. If the project revealed or spawned a standing responsibility with no end date, it becomes (or merges into) an Areas page, not a project artifact.4. Archive/<project>/, moved as a folder once the two extractions above are done.4. Archive/_index.md, and 3. Resources//2. Areas/ indexes if something was extracted) and append one log.md line covering the whole decompose + move.kb-query treats 3. Resources/ as first-class search surface and 4. Archive/ as a lookup of last resort for historical questions only. Reusable knowledge left trapped inside an archived project folder becomes effectively unsearchable — the decompose pass is the return step that makes it retrievable again, not just an organizational tidy-up.
When available, prefer CLI — uses Obsidian's actual link/tag graph and avoids reading files into context.
# Discovery
obsidian search:context query="related term" # related docs with surrounding context
obsidian backlinks file="Document" # existing backlinks
obsidian tags # full tag inventory
obsidian tag name=<tag> # files carrying a tag
# Move (auto-updates wikilinks across vault)
obsidian move path="Inbox/foo.md" to="2. Areas/Paper/foo.md"
# Frontmatter
obsidian property:read name=tags file="Doc"
obsidian property:set name=tags value="['#proj/product-launch','#type/note']" file="Doc"
# Create + append (for backlink updates)
obsidian create file="Doc" content="..."
obsidian append file="Related Doc" content="- [[New Doc]] — context"
obsidian move is preferred for the MOVE step — auto-updates all [[wikilinks]] across the vault. Manual mv requires post-grep, manual wikilink replacement, affected index updates, and one structural log entry per vault CLAUDE.md.
Fallback (no CLI):
mv then grep '[[<old name>]]' and replace## Related Documents (or ## 관련 문서) sectionnpx claudepluginhub ernestolee13/para-knowledge-base --plugin para-knowledge-baseOrganizes an Obsidian vault: adds documents with auto-categorization, restructures misplaced files, processes meeting notes, and runs health checks.
Ingests specific markdown files into Knowledge Base: distills content to KB format, creates files with frontmatter, registers in CLAUDE.md. Targeted alternative to /kb-absorb.
Bulk imports knowledge from files, directories, or URLs into structured backlogs, or captures a single document with a 5-section template (claims, worth-keeping, contested, action, reaction).