From jx-kb
Ingest a source document into the LLM Wiki. Reads the raw source, extracts entities, concepts, ideas, and other knowledge, creates or updates wiki pages, resolves cross-references, updates index and log. Triggers on: "ingest this document", "add to wiki", "process this source", "ingest into knowledge base", /jx-kb:ingest, or any request to add/ingest/import a document into the wiki. Do not trigger for querying, linting, triaging, or initializing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jx-kb:ingest <source_path> [wiki_path]<source_path> [wiki_path]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Read a source, extract knowledge across all taxonomy types, create/update wiki pages with cross-references.
Read a source, extract knowledge across all taxonomy types, create/update wiki pages with cross-references.
| Argument | Required | Default | Notes |
|---|---|---|---|
source_path | Yes | — | Path to source file. Must be within project root |
wiki_path | No | wiki/ | Wiki directory. Must contain _schema.md |
No files are copied or written in this phase.
_schema.md at wiki_path. If not found: "Wiki not found. Run /jx-kb:init first."_schema.md to load wiki configuration and taxonomy rules.source_path provided: check _watchlist.md for pending files and present them as candidates. The watchlist is additive only — the user can always specify any file path, including files not on the watchlist.wiki-tools.py fingerprint <source_path> to get SHA-256 hash + size._log.md and search for matching SHA-256 hash in prior ingest entries.
<date>. Re-ingest (updates existing pages) or skip?"Read source from its original location (read-only). Do not copy yet.
Detect source type by file extension:
.md, .txt, .text)Full content extraction. Extract:
.py, .ts, .js, .sh, .go, .rs, .java, etc.)Treat as text. Extract:
For PDF, DOCX, images, HTML, and other binary formats: stop with clear message. "This source format is not directly supported. Please convert to markdown or plain text first."
Present planned changes as a table. Wait for user confirmation before any writes.
| Action | Page | Type | Directory | Reason |
|--------|------|------|-----------|--------|
| CREATE | [[Acme Corporation]] | entity | entities/ | New entity, primary subject |
| UPDATE | [[Machine Learning]] | concept | concepts/ | New claims from this source |
| CREATE | [[Plugin Hot-Reload]] | idea | ideas/ | Raw idea, needs triage |
| CREATE | [[Source - Paper Title]] | source | sources/ | Source summary page |
Classification rules:
ideas/ with status: rawideas/ (tiebreaker rule from schema)Ask: "Proceed with these changes? You can add, remove, or modify entries." Do not proceed until user confirms.
After user confirms, run:
wiki-tools.py snapshot <source_path> <wiki_path>
This copies the source into wiki/raw/sources/<sha256_prefix>-<filename>.
Record the returned dest path and sha256 for the log entry.
If user cancelled at Phase 3, nothing was written. Clean exit.
For each planned change:
Write file in the appropriate taxonomy directory (e.g., entities/Acme Corporation.md).
Include YAML frontmatter:
---
title: Acme Corporation
type: entity
tags: [company, tech]
created: <today's date>
updated: <today's date>
source_count: 1
aliases: [Acme, Acme Corp]
---
For idea pages, add lifecycle fields:
status: raw
Write structured content with sections appropriate to the type.
Add [[wikilinks]] for every cross-reference to other wiki pages (existing or planned in this batch).
End every page with:
## Sources
- [[Source - <Document Title>]]
> [!conflict] <topic>
> [[Source - Article A]] claims X.
> [[Source - Article B]] claims Y.
> Needs resolution.
Never silently overwrite existing claims.updated date in frontmatter.source_count.## Sources section.Create in sources/:
Source - <Sanitized Title>.mdRun wiki-tools.py backlinks <wiki_path> to get the full link graph.
For each newly created page, check if other existing pages mention its title in prose without a [[wikilink]]. If so, read those pages and add the missing wikilinks where the name appears naturally.
This ensures bidirectional linking across the wiki.
_index.mdRead current index. For each new or updated page, ensure it appears in the correct taxonomy section:
- [[Page Name]] — One-line summary (#tag1, #tag2)
page_count and updated date in frontmatter._No <type> yet._ placeholders when first entry is added._log.md## <date and time> — Ingest
- **Operation**: ingest
- **Source**: <original source path>
- **Snapshot**: <wiki/raw/sources/sha256prefix-filename>
- **SHA-256**: <full hash>
- **Pages created**: <list>
- **Pages updated**: <list>
- **Ideas extracted**: <count>
- **Conflicts flagged**: <count>
- **Cross-references added**: <count>
- **Outcome**: Success
_watchlist.md (if exists)If _watchlist.md exists in the wiki directory:
Print structured summary:
## Ingest Complete
📄 Source: <filename>
🔗 Snapshot: <wiki/raw/sources/...>
### Pages Created
- [[Entity Name]] (entity)
- [[Concept Name]] (concept)
- [[Raw Idea]] (idea — needs triage)
- [[Source - Title]] (source)
### Pages Updated
- [[Existing Page]] — added new claims from this source
### Stats
- Conflicts flagged: <n>
- Cross-references added: <n>
- Ideas needing triage: <n>
- Total wiki pages: <n>
/jx-kb:init<path>. Check the path and try again."npx claudepluginhub jairosoft-com/jodex-plugins --plugin jx-kbProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.