Knowledge Extraction from Current Session
SkillDocs & knowledgeExtract knowledge (decisions, facts, session metadata) from the current Claude Code session into the Grafema Knowledge Base. Run after completing a task or at any point when substantive knowledge was produced. Follows runbook _ai/runbooks/02-claude-sessions.md.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Knowledge Extraction from Current Session skill
What this skill tells your AI
The instructions your AI receives, as published by disentinel/grafema in .claude/skills/extract-knowledge/SKILL.md and read by ahel’s review.
Step 0: Detect context
TASK_ID = parse from current git branch (e.g., task/REG-629 → REG-629)
SESSION_DATE = today's date (YYYY-MM-DD)
SESSION_SLUG = <date>-<task-topic-slug> (e.g., 2026-03-07-knowledge-runbooks)
If no task branch → use topic of the session for the slug.
Step 1: Check existing session
Call query_knowledge(type="SESSION", text="<SESSION_DATE>").
If a session for today + same task already exists → this is an UPDATE, not create. Load existing session to avoid duplicating entities.
Step 2: Extract decisions
Review the conversation for architectural decisions made. For each:
Ask yourself:
- What was decided? (concise statement)
- What alternatives were rejected and why?
- What code does this affect? (semantic addresses:
file:name:TYPE) - What facts informed this decision?
Create via add_knowledge:
add_knowledge(
type="DECISION",
slug="<descriptive-slug>",
content="<decision statement + rejected alternatives>",
status="active",
projections=["epistemic"],
relates_to=["<code semantic addresses>"]
)
Step 3: Extract facts
Three prompts to self:
A) Explicit facts: What facts about the codebase were confirmed or discovered? B) Side-effect facts: What non-obvious facts emerged as side effects of the main task? C) Preferences: What conventions or preferences were established?
For each fact, create via add_knowledge:
add_knowledge(
type="FACT",
slug="<descriptive-slug>",
content="<fact description with evidence>",
confidence="high|medium|low",
projections=["epistemic"],
relates_to=["<code semantic addresses>"]
)
Step 4: Collect created artifacts
Check what was created during this session:
- Linear tickets (REG-NNN, RFD-NNN patterns in conversation)
- Git commits (
git log --oneline --since="today"on current branch) - Files created/modified significantly
Step 5: Create/update SESSION node
add_knowledge(
type="SESSION",
slug="<SESSION_SLUG>",
content="<session summary: what was done, key outcomes>",
task_id="<TASK_ID>",
projections=["epistemic"]
)
Then manually update the session file's produced: list in frontmatter
to include all entity IDs from steps 2-4.
Step 6: Create edges
Append to knowledge/edges.yaml:
- PRODUCED: session → each decision, fact
- CREATED_IN: each ticket/commit → session
- INFORMED_BY: decision → facts that informed it (with evidence)
- IMPLEMENTS: ticket → decision (if applicable)
- SUPERSEDES_APPROACH: decision → rejected approach (if applicable)
Step 7: Validate
Run validation checks from _ai/runbooks/README.md:
- All IDs match
^kb:[a-z_]+:[a-z0-9][a-z0-9-]*[a-z0-9]$ - No slug collisions (check existing KB)
- All edge endpoints exist
- Code refs resolve via
find_nodes(mark DANGLING if not) - No duplicate facts (
query_knowledge(type="FACT", text="<key phrases>")) - All entities have
sourcefield
Step 8: Invalidation check (optional)
If the session modified code that existing KB entities reference:
query_knowledge(include_dangling_only=true)— find newly broken refs- For each dangling ref: is the code gone, renamed, or moved?
- If renamed/moved → update the
relates_toin the KB entity - If gone → leave as dangling (staleness signal)
Output summary
Print a summary:
Knowledge extracted:
Session: kb:session:<slug>
Decisions: N (list IDs)
Facts: N (list IDs)
Artifacts: N tickets, N commits
Edges: N new
Validation: N OK, N warnings
Dangling refs: N (list if any)
Skip conditions
Do NOT extract if:
- Session was trivial (typo fix, single-line change, no decisions made)
- Session only read code without producing knowledge
- All knowledge from this session was already extracted (update check in Step 1)
Signals
- GitHub stars
- 36
- Forks
- 3
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
extract-knowledge- Source
- github.com/disentinel/grafema