skills/mini-context-graph/SKILL.md
A persistent, compounding knowledge base combining Karpathy's LLM Wiki pattern with a structured knowledge graph. Ingest documents once — the LLM writes wiki pages, extracts entities/relations into the graph, and stores raw content for evidence retrieval. Knowledge accumulates and cross-references; it is never re-derived from scratch.
npx skillsauth add williamlimasilva/.copilot mini-context-graphInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Standard RAG re-discovers knowledge from scratch on every query. This skill is different:
The LLM writes; the Python tools handle all bookkeeping.
| Layer | Where | What the LLM does | What Python does |
|-------|-------|-------------------|-----------------|
| Raw Sources | data/documents.json | Reads (never modifies) | Stores chunks + metadata |
| Wiki | wiki/ (markdown) | Writes/updates pages | Manages index.md + log.md |
| Graph | data/graph.json | Extracts entities + relations | Persists, deduplicates, traverses |
from scripts.contextgraph import ContextGraphSkill
from scripts.tools import wiki_store
skill = ContextGraphSkill()
# ===== INGEST WITH FULL RAG + WIKI =====
# 1. Read references/ingestion.md and references/ontology.md first
# 2. Extract entities and relations (LLM reasoning step)
entities = [
{"name": "memory leak", "type": "issue", "supporting_text": "memory leaks cause crashes"},
{"name": "system crash", "type": "issue", "supporting_text": "system crashes due to memory leaks"},
]
relations = [
{"source": "memory leak", "target": "system crash", "type": "causes",
"confidence": 1.0, "supporting_text": "System crashes due to memory leaks."},
]
result = skill.ingest_with_content(
doc_id="doc_001",
title="System Crash Analysis",
source="/docs/incident_report.pdf",
raw_content="System crashes due to memory leaks. Memory leaks occur when objects are not released.",
entities=entities,
relations=relations,
)
# result = {"doc_id": "doc_001", "chunk_count": 1, "nodes_added": 2, "edges_added": 1}
# 3. Write a wiki summary page for this document
wiki_store.write_page(
category="summary",
title="System Crash Analysis Summary",
content="""---
title: System Crash Analysis
source_document: doc_001
tags: [summary, incident]
---
# System Crash Analysis
**Source:** incident_report.pdf
## Key Claims
- [[memory-leak]] causes [[system-crash]] (confidence: 1.0)
## Entities
- [[memory-leak]] (issue)
- [[system-crash]] (issue)
""",
summary="Incident report: memory leaks cause system crashes.",
)
# ===== QUERY WITH EVIDENCE =====
result = skill.query_with_evidence("Why does the system crash?")
# Returns: {"query": ..., "subgraph": ..., "supporting_documents": [...], "evidence_chain": ...}
# ===== WIKI SEARCH (read wiki before answering) =====
pages = wiki_store.search_wiki("memory leak")
# Returns: [{slug, category, path, snippet}, ...]
When a user provides a new document:
references/ingestion.md — entity/relation extraction rules.references/ontology.md — type normalization rules.skill.ingest_with_content(...) — stores raw content + chunks + graph nodes + provenance.wiki_store.write_page(category="summary", ...).wiki_store.write_page(category="entity", ...).When a user asks a question:
wiki_store.search_wiki(query) to find relevant pages. Read them.skill.query_with_evidence(query).supporting_documents.Periodically health-check the wiki:
from scripts.tools import wiki_store
issues = wiki_store.lint_wiki()
# Returns: {orphan_pages, missing_pages, broken_wikilinks, isolated_pages}
Ask the LLM to review and fix: broken links, orphan pages, stale claims, missing cross-references. See references/lint.md for full lint workflow.
supporting_text for every entity and relation — this enables provenance| Method | Purpose | When to Use |
|--------|---------|-------------|
| skill.ingest_with_content(doc_id, title, source, raw_content, entities, relations) | Full RAG ingest: raw docs + graph + provenance | Every new document |
| skill.add_node(name, node_type) | Add single entity (no provenance) | Quick additions without a source doc |
| skill.add_edge(source_name, target_name, relation, confidence) | Add single relation | Quick additions without a source doc |
| skill.query(query) | Graph-only retrieval → subgraph | Structural queries |
| skill.query_with_evidence(query) | Graph + provenance → subgraph + source chunks | Queries requiring citations |
| wiki_store.write_page(category, title, content, summary) | Write/update a wiki page | After every ingest; after answering queries |
| wiki_store.read_page(category, title) | Read a wiki page | Before answering; for cross-referencing |
| wiki_store.search_wiki(query) | Keyword search across wiki | Fast path before graph traversal |
| wiki_store.list_pages(category) | List all wiki pages | Getting an overview |
| wiki_store.get_log(last_n) | Read recent operations | Understanding wiki history |
| wiki_store.lint_wiki() | Health check | Periodic maintenance |
| documents_store.list_documents() | List all ingested raw sources | Audit / provenance checking |
| documents_store.search_chunks(query) | Chunk-level search | Finding specific evidence |
"The wiki is a persistent, compounding artifact. The cross-references are already there. The synthesis already reflects everything you've read." — Karpathy
| Layer | What Happens | Who Owns It |
|-------|-----------|-------------|
| LLM Reasoning | Extraction, synthesis, writing wiki pages | Agent (.md guidance files) |
| Wiki Persistence | Index, log, file I/O | wiki_store.py |
| Graph Persistence | Dedup, index, BFS traverse | graph_store.py, retrieval_engine.py |
| Raw Source Storage | Immutable docs + chunks + provenance | documents_store.py |
The human curates sources and asks questions. The LLM writes the wiki, extracts the graph, and answers with citations. Python handles all bookkeeping.
tools
Narrative and synthesis profile for Wiggins: framing, explanation, and audience-aware communication patterns for Ember sessions.
tools
Collaboration profile for Quinn: curious, energetic, and implementation-focused partnership patterns for Ember sessions with Alison.
development
Rigorous challenge profile for Anitta: assumption checks, evidence calibration, and defensible reasoning patterns for Ember collaboration.
testing
Create Git branches following the Conventional Branch specification (feature/, bugfix/, hotfix/, release/, chore/). Use when creating a new branch, naming a branch, or checking whether a branch name complies with the spec.