Help us improve
Share bugs, ideas, or general feedback.
From kg
Ingests research material into a knowledge graph by extracting entities, creating links, and verifying density. Useful for organizing papers, concepts, and implementations.
npx claudepluginhub ohdearquant/khive --plugin kgHow this skill is triggered — by the user, by Claude, or both
Slash command
/kg:digestThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You have material to add to the knowledge graph. This skill walks you through a complete
Wires new concepts into a knowledge graph: searches for related entities, creates typed links (extends, depends_on, etc.), and checks minimum connection density.
Builds Wikipedia-style Obsidian vaults from academic PDFs, extracting concepts into linked notes with atomic sentences and citations. Expands existing networks with new papers.
Builds knowledge graphs from folders of code, docs, papers, or images with community clustering, generating interactive HTML, GraphRAG JSON, audit reports, and Neo4j exports.
Share bugs, ideas, or general feedback.
You have material to add to the knowledge graph. This skill walks you through a complete ingestion: extract → create → link → annotate → verify.
search(kind="entity", query="<key terms from the material>")
Never create duplicates. If the entity exists, skip to linking or enriching it.
For each nameable concept, paper, person, project, dataset, or org in the material:
create(kind="entity", entity_kind="<kind>", name="<short canonical name>",
description="<1-2 sentence summary>",
properties={"domain": "...", "type": "...", "year": "..."})
6 entity kinds (closed — pick the best fit, don't invent):
| Kind | Use for |
|---|---|
concept | Algorithms, techniques, architectures, models, research gaps |
document | Papers, preprints, reports, blog posts |
dataset | Benchmarks, corpora, evaluation sets |
project | Codebases, libraries, tools, frameworks |
person | Researchers, engineers, authors |
org | Labs, companies, institutions |
Naming: short canonical name people actually say. LoRA not Low-Rank Adaptation of Large Language Models. Full titles go in properties.
For each relationship you identified in the material:
link(source_id="<from>", target_id="<to>", relation="<relation>", weight=<0.4-1.0>)
13 relations (closed — map to these, don't invent):
| Category | Relation | Direction | When |
|---|---|---|---|
| Structure | contains | parent → child | System has component |
| Structure | part_of | child → parent | Inverse of contains |
| Structure | instance_of | specific → general | X is a case of Y |
| Derivation | extends | child → parent | Builds on, generalizes |
| Derivation | variant_of | variant → original | Modified version |
| Derivation | introduced_by | concept → paper/person | First described in |
| Derivation | supersedes | new → old | Replaces entirely |
| Dependency | depends_on | consumer → dep | Hard requirement |
| Dependency | enables | prerequisite → outcome | Makes possible |
| Implementation | implements | code → concept | Code realizes algorithm |
| Lateral | competes_with | A ↔ B | Alternative approaches |
| Lateral | composed_with | A ↔ B | Used together |
| Annotation | annotates | note → any substrate | Note observes/comments on |
Direction matters. introduced_by goes FROM the concept TO the paper (the concept was introduced by the paper). If you get direction wrong, the traversal breaks.
Weight: 1.0 = definitional, 0.7-0.9 = strong, 0.4-0.6 = plausible.
For anything worth recording that isn't a nameable entity:
create(kind="note", note_kind="<kind>", content="<the observation>",
salience=<0.0-1.0>, annotates=["<entity-uuid>"])
5 note kinds: observation (I noticed), insight (I concluded), question (I wonder), decision (I chose), reference (I read).
Always use annotates to attach notes to the entities they're about.
After ingestion, check each new entity:
neighbors(node_id="<entity-id>", direction="both")
Minimum edges: concepts ≥ 4, projects ≥ 3, documents ≥ 2. If below target, add edges — every concept should have at least instance_of or extends (parent), introduced_by (if a paper exists), and competes_with (if alternatives exist).
Summarize: what entities were created, what edges link them, what notes captured, and what gaps remain (questions filed as question notes).
Material exhausted. Every entity above minimum density. No orphans (0-edge nodes). Gaps identified as question notes for follow-up.
If a tool returns an error, read the message — it lists valid values. Common cases:
entity_kind or note_kind → the error says which values are validrelation → use only the 13 abovesearch to find the correct one