Knowledge について
Knowledgeは、6つのエンティティ領域にまたがる型付きノートグラフ、LifeOS Knowledge Archiveを管理するスキルです。検索、ソースの取り込み、グラフ探索、矛盾の確認に加え、新しいソースに関連するノートの更新も行えます。
主な機能
- 016つのエンティティ領域のノート管理
- 02アーカイブ内のノート検索と取得
- 03ソースを取り込み関連ノートを更新
- 04主張間の矛盾を検出
- 05型付きノート関係を探索
- 06会話から記憶候補を抽出
活用シーン
- 01複数の領域を横断してノートを検索
- 02ソースを追加して既存ノートと関連付け
- 03アーカイブ内の矛盾する主張を確認
- 04ノートを起点に関連項目を探索
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ danielmiessler/ lifeos --skill knowledgeインストール後、Claude Code で/knowledgeを入力して読み込まれたか確認します。
詳細
ナレッジスキル
概要
LifeOS ナレッジアーカイブを管理します。People、Companies、Ideas、Research、Blogs、Books の6つのエンティティドメインにわたる、厳選された型付きグラフです。操作には、検索、追加、収集、発展、取り込み、矛盾の検出、グラフの探索、圧縮検索、最近の会話からの記憶候補の抽出が含まれます。すべてのノートには型付きの related: クロスリンクが付属するため、アーカイブはファイルの寄せ集めではなく、つながりのあるグラフです。
解決する課題
個別に保存したノートは、二度と見つけられないノートになりがちです。事実を平坦に並べたフォルダーには、2つのノートが互いに矛盾していること、新しいソースが古い主張を更新していること、あるアイデアが数か月前にまとめた人物や企業とつながっていることを判断する方法がありません。知識は、検索したり関連付けたりできなければ失われます。このアーカイブでは、すべてのノートを必須のクロスリンク付きの型付きスキーマに沿って作成し、取り込み時には関連ノートにも更新を波及させます。これにより、後から手作業でつなぎ直すのではなく、書き込む時点でつながりが組み込まれます。
仕組み
LifeOS ナレッジアーカイブを ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ で管理します。各操作は以下のサブコマンドを通じて実行され、ノートはアーカイブのスキーマに従い、型付きクロスリンクを備えています。
アーカイブスキーマ: ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/_schema.md
ワークフローの振り分け
ワークフローはこのファイル内のコマンドセクションとして記述されています(Workflows/ ディレクトリはありません)。各行は、以下の対応する H2 セクションに振り分けられます。
| トリガー | ワークフロー | アクション |
|---|---|---|
/knowledge(引数なし) | status | ヘルスダッシュボード |
/knowledge <query> | search | クエリに一致するノートを検索 |
/knowledge search <query> | search | 明示的な検索 |
/knowledge add <type> | add | 新しいノートを作成(People、Companies、Ideas) |
/knowledge harvest | harvest | すべてのソースに対して KnowledgeHarvester を実行 |
/knowledge develop | develop | 成長段階のアイデアを提示して充実させる |
/knowledge ingest <url-or-file> | ingest | ソースを読み込み、ノートを作成し、関連ノートに更新を波及させる |
/knowledge contradictions | contradictions | ノート間の矛盾する主張を見つけて確認 |
/knowledge graph | graph | ナレッジグラフの統計とナビゲーション |
/knowledge graph <slug> | graph | ノートを起点にグラフを探索 |
/knowledge retrieve <query> | retrieve | 圧縮されたコンテキストを検索 |
/knowledge mine | mine | 最近の会話から記憶候補を抽出 |
$ARGUMENTS がサブコマンドに一致しない場合は、検索クエリとして扱います。
status(デフォルト、引数なし)
harvester の status コマンドを実行し、結果を表示します。
bun ~/.claude/LIFEOS/TOOLS/KnowledgeHarvester.ts status
さらに、以下を表示します。
- 各ドメインのノート数の簡単な概要
- 孤立した wikilink
- 古くなった成長段階のアイデア
- 最後の harvest からの経過時間
NATIVE モードで表示します。
search
ナレッジアーカイブから $ARGUMENTS に一致するノートを検索します。
ステップ 1 — 語彙検索:
rg -i "$ARGUMENTS" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md -l
ステップ 2 — フロントマター検索(タグとタイトル):
rg -i "title:.*$ARGUMENTS|tags:.*$ARGUMENTS" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md -l
ステップ 3 — Wikilink 検索:
rg "\[\[.*$ARGUMENTS.*\]\]" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md -l
3つすべての結果から重複を除外します。一致した各ノートについて、フロントマターの先頭5行を読み込み、タイトル、ドメイン、ステータス、タグを表示します。
結果を次の表形式で表示します。
| Note | Domain | Status | Tags | Relevance |
結果が見つからない場合は、その旨を伝え、MEMORY/ システム全体を確認するか、harvest を実行するよう提案します。
add
指定したエンティティタイプに新しいノートを手動で作成します。
- type が次のいずれかであることを検証します:People、Companies、Ideas、Research
- タイトルを尋ねます(または type の後に続く残りの引数を使用します)
- タイトルから kebab-case のファイル名を生成します
- 必須:まず関連ノートを2~3件見つけます。 新しいノートを書き込む前に、既存の Knowledge を grep して、トピック/タグ/名前で関連エンティティを探します。これらを
related:フロントマター配列に設定します。型付きリンクのない Knowledge ノートは作成できません。下記の「Canonical Linking Requirement」を参照してください。 _schema.mdに基づく適切なフロントマターを使ってノートを作成します。バリデーター(LIFEOS/TOOLS/KnowledgeSchema.tsENVELOPE)では、次の8項目すべてが必要です:id(mintId(slug, created)で生成 —kb_+ 12桁の16進数)、type、title、tags(最低1つ)、quality(0~10)、created、updated、convention: kb-v3— さらにタイプ固有の本文セクションも必要です。古い6項目のリストに基づいて作成したノートは、決して検証に合格しません(公開 issue #1678、@christauff)。created:とupdated:にはdate +%Y-%m-%dで取得した今日の日付を設定します — アーカイブへの登録日であり、ソースの公開日ではありません(公開 PR #1604、@asdf8675309)。- ファイルを
KNOWLEDGE/<Type>/<kebab-case-title>.mdに書き込みます — slug は最大60文字です - 保存前に、
related:内のすべての slug がアーカイブ内に存在することを確認します - タイプの MOC を再生成します:
bun ~/.claude/LIFEOS/TOOLS/KnowledgeHarvester.ts index
トピックはタグであり、タイプではありません。 セキュリティに関する洞察は、security タグを付けた Idea です。セキュリティ関連企業は、security タグを付けた Company です。エンティティタイプがスキーマを決定し、タグがトピックを決定します。
Canonical Linking Requirement(必須)
新しい Knowledge ノートにはすべて、型付きクロスリンクを含める必要があります。 これは任意ではありません。アーキテクチャは MEMORY/KNOWLEDGE/Ideas/pai-knowledge-linking-architecture.md(quality 9)で定義され、スキーマは _schema.md で定義されています。
すべての書き込みに次の項目を含めます:
related:フロントマター配列 — 他の Knowledge エントリー(People、Companies、Ideas、Research のいずれのドメインでも可)にリンクする、2~4件の型付きエントリー- 本文のウィキリンク — 自然な箇所(Implications、Evidence、または Context セクション)に織り込んだ
[[slug]]参照を1~3件
9種類の関係タイプ(最も適切なものを選び、汎用的なものより具体的なものを優先します):
| タイプ | 意味 |
|---|---|
related | 一般的な関連(より適切なものがない場合のみデフォルトとして使用) |
supports | リンク先のノートを裏付ける証拠を提供する |
contradicts | リンク先のノートと矛盾する |
extends | リンク先のノートを発展させる |
part-of | より大きな全体の構成要素 |
instance-of | あるパターンの例 |
caused-by | リンク先のノートの結果 |
preceded-by | 時系列で先行した |
derived-from | リンク先のソースノートから抽出したもの(例:ブログ → アイデア) |
フロントマターの形式:
related:
- slug: other-note-slug
type: extends
- slug: another-note-slug
type: supports
書き込み前に関連ノートを見つける方法:
# By topic/keyword
rg -l "TOPIC" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md
# By tag overlap
rg "^tags:.*TAG" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md -l
# For People/Companies — grep by name
rg -l "Person Name" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/
適用ルール:
related:を省略した書き込みは不完全です。スキル/ワークフローが成功を返す前に修正する必要がありますingestワークフローでは、リップルパスの一部としてこれを実行します- Algorithm の LEARN フェーズでは、ナレッジ取得ステップにこれを含めます
- Knowledge エントリーを書き込むすべてのエージェントはこのルールに従う必要があります — これはスキーマの一部であり、任意の拡張ではありません
harvest
KnowledgeHarvester を実行して、すべての LifeOS ソースから新しいナレッジを取り込みます:
bun ~/.claude/LIFEOS/TOOLS/KnowledgeHarvester.ts harvest
結果を表示します。何も取り込まれなかった場合は、ソースがすでに最新であることを説明します。
任意で --source フィルターを指定できます:/knowledge harvest work または /knowledge harvest memory。
develop
週次のガーデニングワークフローです。内容を充実させる準備ができた苗木ノートを見つけます。
Step 1 — 苗木ノートを探す:
rg "^status: seedling" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md -l
Step 2 — 各苗木ノートについて:
- ノートを読みます
- 関連するノートを読みます(ウィキリンクをたどり、同じタグを検索します)
- 新しい WORK/ ISA や自動メモリーの項目に、関連するコンテキストがないか確認します
- ノートを充実させます:コンテキストを追加し、ウィキリンクを提案し、内容を掘り下げます
Step 3 — 差分をユーザーに提示し、承認を求めます。
Step 4 — 承認された場合:
- 更新したノートを書き込みます
- ステータスを
seedlingからbuddingに変更します(内容が包括的な場合はevergreenに変更します) updated:をdate +%Y-%m-%dで取得した今日の日付に更新します。created:は変更しません- 影響を受ける MOC を再生成します
苗木ノートが存在しない場合は、アーカイブがクリーンであると報告します。
ingest
ソースをナレッジアーカイブに取り込みます。これは Karpathy に着想を得た重要なアップグレードです。ソースを読んでもノートが1つ作成されるだけではなく、既存の関連ノートにも更新が波及します。
引数が指定されていない場合: 使用方法を表示します:/knowledge ingest <url-or-file-path>
Step 1 — ソースを取得する
- URL: WebFetch を使ってコンテンツを取得し、読み取ります。WebFetch が失敗した場合は、Bash 経由で
curl -sLを試します。 - ファイルパス: Read ツールを使ってローカルファイルを読み取ります。
ソースを2~3文で要約します。主要なエンティティ、主張、知見を特定します。
Step 2 — 分類してプライマリノートを作成する
_schema.md の分類ルールを使って、エンティティの種類(People、Companies、Ideas、Research)を判定します。取り込んだソースのほとんどは Ideas になります。
該当する種類のスキーマに従ってプライマリノートを作成します:
- タイトルから kebab-case のスラッグを生成します(最大60文字)
KNOWLEDGE/<Type>/<slug>.mdに適切なフロントマターを付けて書き込みますcreated:とupdated:をdate +%Y-%m-%dで取得した今日の日付に設定します。どちらもノートがアーカイブに追加された日を記録するものであり、ソースの公開日ではありません。記載された公開日はsource_date:に記入します。created:に公開日を設定してはいけません。また、ソースに記載されていない日付を推測してはいけません(公開 PR #1604、@asdf8675309)- フロントマターに
source_url:またはsource_path:を含めます - 必須:2~4件の型付きリンクを含む
related:配列を記載します — 波及処理(Step 3)でこれらを特定し、後から追加するのではなく、プライマリノートの作成時にフロントマターへ含める必要があります
Step 3 — 波及処理(重要な革新点)
この新しいコンテンツに関連する既存のノートを検索します:
# Search by extracted tags
rg -i "TAG1|TAG2|TAG3" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md -l --glob '!_*'
# Search by key entities/concepts mentioned
rg -i "ENTITY1|ENTITY2" ~/.claude/LIFEOS/MEMORY/KNOWLEDGE/ --type md -l --glob '!_*'
見つかった関連ノート(最大10件)ごとに:
- ノートを読みます
- 新しいソースによって情報やコンテキストが追加されるか、既存の主張と矛盾するかを判断します
- 追加される情報がある場合、具体的な更新内容を提案します(ウィキリンクを追加する、根拠を追加する、矛盾を記載する)
波及更新の計画をユーザーに提示します:
📥 INGEST RIPPLE PLAN:
PRIMARY: Ideas/new-note-slug — "Title" (created)
PRIMARY related: frontmatter links (MANDATORY):
→ Ideas/existing-note-1 — type: extends
→ Ideas/existing-note-2 — type: supports
→ People/person-slug — type: related
RIPPLE (reverse-direction updates to existing notes):
→ Ideas/existing-note-1 — add body [[new-note-slug]] wikilink + add to its related: array (type: extends)
→ Ideas/existing-note-2 — update Evidence section with new data point + add to related:
→ Ideas/existing-note-3 — ⚠️ CONTRADICTION: new source says X, note says Y — type: contradicts
NO CHANGE: Ideas/tangentially-related — mentioned same tag but no substantive connection
Step 4 — 波及更新を実行する
ユーザーが承認した後(または、更新が低リスクの相互参照だと判断した場合):
- プライマリノート:
related:フロントマター配列に2~4件の型付き項目があることを確認します。これは任意ではなく必須です - 関連ノート: 適切な種類を指定した逆方向の
related:項目をフロントマターに追加します - 本文のウィキリンク: 自然な箇所に既存の文章へ
[[wikilinks]]を追加します(無理に追加しないでください) - 変更したノートの
updated:をdate +%Y-%m-%dで取得した今日の日付に更新し、created:は変更しません - 矛盾がある場合:
> ⚠️ **Contradiction:** [note] claims X — see [[new-note]] for counter-evidenceのコールアウトを追加し、related:配列にもtype: contradictsを追加します
Step 5 — 記録してインデックスを更新する
KNOWLEDGE/_log.md に追記します:
## [YYYY-MM-DD] ingest | Title
- Source: <url or path>
- Primary: <Type>/<slug>
- Ripple: N notes updated, N contradictions flagged
MOC を再生成します:
bun ~/.claude/LIFEOS/TOOLS/KnowledgeHarvester.ts index
NATIVE モードで提示します。
contradictions
Knowledge ノート間で矛盾する主張を見つけ、確認します。
Step 1 — 矛盾の候補を取得する
KnowledgeHarvester の矛盾検索を実行します:
bun ~/.claude/LIFEOS/TOOLS/KnowledgeHarvester.ts contradictions
タグの重複が多い(共通タグが2つ以上ある)ノートのペアを、重複数の多い順に出力します。
ステップ 2 — 意味のレビュー
各ペア(重複度が最も高い上位 10 ペアまで)について:
- 両方のノートを読みます
- 各ノートから主な主張を抽出します(Thesis、Evidence、Key Facts の各セクション)
- 以下を確認します:
- 直接的な矛盾 — ノート A は X と述べ、ノート B は X ではないと述べている
- 時間的な置き換え — ノート B の新しい証拠により、ノート A の主張が古くなっている
- スコープの競合 — 両方が同じトピックについて権威があると主張しているが、異なる結論に達している
ステップ 3 — レポート
調査結果を提示します:
🔍 CONTRADICTION SCAN:
Pairs checked: N
Contradictions found: N
Superseded claims: N
⚠️ CONTRADICTION:
[[note-a]] claims: "X"
[[note-b]] claims: "Y"
Resolution: [suggest which is correct, or flag for the user]
📅 SUPERSEDED:
[[older-note]] (2026-01-15): "X was true"
[[newer-note]] (2026-03-20): "X is no longer true because Y"
Action: Update older note with correction
ネイティブモードで提示します。
graph [slug]
ナレッジアーカイブをグラフとしてたどります。
引数なし — 統計の概要:
bun ~/.claude/LIFEOS/TOOLS/KnowledgeGraph.ts stats
ノード数、エッジ数、主要なクラスター、最も多く接続されたハブ、孤立したノードを表示します。
slug を指定 — ノートからたどる:
bun ~/.claude/LIFEOS/TOOLS/KnowledgeGraph.ts traverse <slug> --hops 2
タグ、ウィキリンク、型付きの関係を通じて、2 ホップ以内に接続されたすべてのノートを表示します。ドメインをまたいだ知識のつながりを調べるのに便利です。
関連ノートのみ:
bun ~/.claude/LIFEOS/TOOLS/KnowledgeGraph.ts related <slug>
ネイティブモードで提示します。
retrieve
BM25-lite スコアリングを使用して、ナレッジアーカイブからコンテキストを圧縮して取得します。
bun ~/.claude/LIFEOS/TOOLS/MemoryRetriever.ts "<query>" --top 5
タイトルの一致度、タグの重複度、コンテンツ内の出現頻度に基づいて順位付けされた、最も一致するノートと圧縮された要約を返します。ファイル全体を読まずに、関連する知識のコンテキストを読み込むのに便利です。
LLM による圧縮を行わず、生の抜粋を取得する場合:
bun ~/.claude/LIFEOS/TOOLS/MemoryRetriever.ts "<query>" --raw
ネイティブモードで提示します。
mine
最近の会話から、記憶の候補(決定事項、好み、マイルストーン、問題)を抽出します。
bun ~/.claude/LIFEOS/TOOLS/SessionHarvester.ts --mine --recent 10
候補はレビュー用に KNOWLEDGE/_harvest-queue/ に書き込まれます。KNOWLEDGE/ に直接書き込むことはありません。キューを処理するには /knowledge harvest を使用します。
ドライラン(プレビューのみ)の場合:
bun ~/.claude/LIFEOS/TOOLS/SessionHarvester.ts --mine --recent 10 --dry-run
ネイティブモードで提示します。
注意点
- エンティティタイプは現在 4 種類です。 People(人間)、Companies(組織)、Ideas(洞察/主張/分析)、Research(方法論を用いた複数ソースの調査)です。いずれにも当てはまらないものは知識ではなく、WORK/ または LEARNING/ に属します。
- トピックはドメインではなくタグです。 セキュリティに関する洞察は、
securityタグが付いた Idea です。トピック別のフォルダーは作成しないでください。 - 参照テスト。 「ユーザーは名前でこれを調べるか?」—そうでなければ、それは知識ではありません。
- スキーマの適用。 各エンティティタイプには、
_schema.mdで定義された必須フィールドがあります。書き込む前に、必ずスキーマを読んでください。 - アルゴリズムの LEARN フェーズは直接書き込みます。 LEARN フェーズは最適なコンテキストを持っており、適切なスキーマを使用して KNOWLEDGE/ に書き込みます。Harvester による振り返りは無効になっています。
- 確認せずにノートを削除しないでください。 剪定は自動で行われます(harvester による 90 日後の実生ノートの期限切れ)。手動での削除にはユーザーの承認が必要です。
- ウィキリンクでは厳密な kebab-case を使用します。
[[Prompt Injection]]ではなく[[prompt-injection]]を使用します。 - harvest されたノートはすべて実生ノートとして開始します。
/knowledge developのみが、それらを昇格させます。 - 時間的な有効性は任意です。 事実が有効だった時期を追跡するために、ノートの frontmatter フィールド
valid_from/valid_untilを設定できます。矛盾検出器はこれらを使用し、期間が重ならないものをスキップします。
例
例 1:アーカイブを検索
User: "what do we know about prompt injection?"
→ Routes to search — 3-pass (lexical + frontmatter + wikilink) over MEMORY/KNOWLEDGE/
→ Returns table of matching notes with domain, status, tags
例 2:ソースを取り込む
User: "/knowledge ingest https://example.com/article"
→ Fetches the source, classifies entity type, creates primary note with typed related: links
→ Ripple pass proposes updates to existing related notes; user approves; MOCs regenerated
例 3:ステータスを確認
User: "knowledge status"
→ Runs KnowledgeHarvester.ts status
→ Shows domain note counts, orphan wikilinks, stale seedlings, time since last harvest