本文へ移動
cccskills
無料GitHub で公開

extract-knowledge

Extract 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.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Knowledge Extraction from Current Session

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:

  1. What was decided? (concise statement)
  2. What alternatives were rejected and why?
  3. What code does this affect? (semantic addresses: file:name:TYPE)
  4. 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:

  1. All IDs match ^kb:[a-z_]+:[a-z0-9][a-z0-9-]*[a-z0-9]$
  2. No slug collisions (check existing KB)
  3. All edge endpoints exist
  4. Code refs resolve via find_nodes (mark DANGLING if not)
  5. No duplicate facts (query_knowledge(type="FACT", text="<key phrases>"))
  6. All entities have source field

Step 8: Invalidation check (optional)

If the session modified code that existing KB entities reference:

  1. query_knowledge(include_dangling_only=true) — find newly broken refs
  2. For each dangling ref: is the code gone, renamed, or moved?
  3. If renamed/moved → update the relates_to in the KB entity
  4. 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)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Fix Elixir/Erlang AST processing bugs in Grafema beam-analyzer. Use when: (1) Elixir parser returns MODULE node but 0 functions/calls — body nesting issue, (2) Erlang parser crashes with "cannot convert list to string" on OTP 26+ — location format changed from integer to keyword list, (3) pipe operator |> creates spurious CALL nodes instead of desugared function calls — clause ordering bug, (4) multi-module .ex files return only the first module — missing __block__ handler, (5) installing Erlang/Elixir on macOS with outdated Xcode/Clang.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fires after fixing any non-trivial bug or regression. Asks: could the graph have caught this as a guarantee? Pairs with reflection-in-and-on-action — picks up after "earliest catchable signal" and asks the next question: was that signal expressible in graph? Triggers: (1) after any non-trivial bug fix is verified working, (2) after a regression report (something used to work, broke), (3) during step 6 (knowledge extraction) of the workflow, (4) when reflection-on-action surfaces a "would have been catchable" signal. Outcome is a triage decision (graph-reachable? rule expressible? rule sound?) and either a draft Linear issue + guarantee proposal, or a recorded "graph capability gap" note. Never auto-creates guarantees.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix Playwright automation failures against code-server (VS Code in browser). Use when: (1) trust dialog blocks all clicks — "monaco-dialog-modal-block intercepts pointer events", (2) button:has-text() finds wrong buttons behind modal dialog, (3) keyboard shortcuts don't work — Meta vs Control inconsistency, (4) VS Code extension activity bar icon not found by aria-label, (5) panels show placeholder text despite extension being "Connected". Covers trust dialog dismissal, keyboard shortcut hybrid mode, extension panel selectors, and database connection verification for Grafema extension.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Systematic methodology for achieving 100% backward dataflow reachability in a new language. Create gauntlet fixture, write trace, diagnose gaps, fix analyzer/algorithm, iterate to 100%. Language-agnostic process. Use when: (1) adding a new language to Grafema, (2) auditing dataflow coverage for existing language, (3) user says "/dataflow-gauntlet".

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix docker exec hanging when starting background processes (servers, daemons) inside containers. Use when: (1) docker exec never returns despite using & or nohup, (2) background server started in container causes docker exec to hang indefinitely, (3) env_startup_command in SWE-bench or similar frameworks times out, (4) setsid/disown needed for proper process detachment in Docker. Root cause: docker exec tracks ALL processes in the exec session, not just the top-level PID.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix Node.js CLI tools crashing inside Docker containers when host-installed node_modules require a newer Node version than the container provides. Use when: (1) "SyntaxError: Invalid regular expression flags" with /v flag in string-width or similar packages, (2) node_modules installed on host with Node 20+ but container has Node 18, (3) `npm install` with file: protocol creates symlinks that break inside Docker, (4) pnpm workspace packages become broken symlinks in containers. Covers version detection, Node binary mounting, and npm install strategies for cross-version compatibility.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Disentinel のスキルをすべて見る

このスキルの問題を報告する