mcpField
K
karpathy-llm-wiki

karpathy-llm-wiki

github.com/astro-han生産性2.6k8.2k 回インストール14 週間前に更新
リポジトリ

karpathy-llm-wiki について

Karpathy LLM Wikiは、ソース資料から個人用ナレッジベースを構築・管理するスキルです。raw/の変更しないファイルと、編集するwiki記事を分け、取り込み、検索、アーカイブ、Lintの手順を備えています。

主な機能

  1. 01raw/に変更しないソースを保存
  2. 02ソースからwiki記事を作成
  3. 03wikiを検索して回答
  4. 04回答を新しいページとして保存
  5. 05リンク・索引・根拠を検査
  6. 06取り込みと更新をログに記録

活用シーン

  1. 01収集したソースを記事に整理
  2. 02既存のwiki内容を使って質問に回答
  3. 03要約した回答をwikiに保存
  4. 04記事の根拠と参照を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/astro-han/karpathy-llm-wiki --skill karpathy-llm-wiki

インストール後、Claude Code で/karpathy-llm-wikiを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
LICENSE
README.md
examples/
ai-coding-tools-index.md
log-sample.md
README.md
claude-code-statusline-landscape.md
2026-03-19-claude-code-statusline-landscape.md
references/
archive-template.md
raw-template.md
article-template.md
index-template.md
scripts/
check_evidence.py
tests/
test_check_evidence.py

詳細

Karpathy LLM Wiki

LLM を使って、個人用ナレッジベースを構築・維持します。管理するディレクトリは 2 つです。raw/(変更不可のソース資料)と wiki/(知識記事をまとめたもの)です。ソースを raw/ に保存し、wiki の記事にまとめます。wiki は時間とともに蓄積されていきます。

Karpathy の基本的な考え方:

  • 「LLM が wiki を書いて維持し、人間はそれを読んで質問します。」
  • 「wiki は永続的に蓄積されていく成果物です。」

アーキテクチャ

ユーザーのプロジェクトルート以下に、3 つのレイヤーを配置します。

raw/ — 変更不可のソース資料です。読み取りのみで、変更はしません。トピック別のサブディレクトリ(例:raw/machine-learning/)に整理します。

wiki/ — まとめた知識記事です。全面的に管理します。トピック別のサブディレクトリに、1 階層のみで整理します:wiki/<topic>/<article>.md。次の 2 つの特別なファイルが含まれます:

  • wiki/index.md — 全体のインデックスです。トピックごとに記事をまとめ、記事ごとにリンク、概要、更新日を 1 行に記載します。
  • wiki/log.md — 追記専用の操作ログです。

SKILL.md(このファイル)— スキーマレイヤーです。構造とワークフローのルールを定義します。

テンプレートは、このファイルから見た相対パス references/ にあります。raw ファイル、記事、アーカイブページ、インデックスの正確な形式が必要な場合は、テンプレートを参照してください。

初期化

初回の Ingest 時にのみ実行します。raw/ と wiki/ が存在するか確認します。不足しているものだけを作成し、既存のファイルは上書きしないでください。

  • raw/ ディレクトリ(.gitkeep を含む)
  • wiki/ ディレクトリ(.gitkeep を含む)
  • wiki/index.md — 見出し # Knowledge Base Index、本文は空
  • wiki/log.md — 見出し # Wiki Log、本文は空

Query または Lint で wiki の構造が見つからない場合は、ユーザーに「wiki を初期化するには、まず ingest を実行してください。」と伝えてください。自動作成はしないでください。

グラウンディングの不変条件

wiki/ 内の重要な事実(数値、日付、直接引用)はすべて、その記事の Raw フィールドでリンクされている raw/ ファイルに逐語的に記載されています。compile はこの不変条件を確立します(書き込む前に該当箇所を特定します)。lint はこれを検証します(scripts/check_evidence.py が、関連する raw ファイル内で信頼性の高い文字列(接尾辞付きまたは大きな数値、小数、ISO 形式の日付、長めの引用)を grep します。残りは compile 時の「書き込む前に該当箇所を特定する」ルールでカバーします)。raw/ は変更不可なので、一度検証された記事は検証済みの状態を保ちます。このスクリプトは wiki 全体を数秒で再チェックするため、増分状態を維持する必要はありません。


Ingest

ソースを raw/ に取得し、wiki/ の記事にまとめます。ただし、ソースに新しい情報が何もない場合は除きます。必ず取得してください。記事にまとめるかどうかは、以下のトリアージに従って判断します。

取得(raw/)
  1. 環境で利用できる Web ツールまたはファイルツールを使って、ソースの内容を取得します。ソースにアクセスできる手段がない場合は、ユーザーに内容を直接貼り付けてもらいます。

  2. トピックのディレクトリを選びます。まず既存の raw/ サブディレクトリを確認し、トピックが十分近ければ再利用します。新しいサブディレクトリを作成するのは、明確に異なるトピックの場合に限ります。

  3. raw/<topic>/YYYY-MM-DD-descriptive-slug.md として保存します。

    • ソースタイトルからスラッグを作成します。kebab-case にし、最大 60 文字とします。
    • 公開日が不明な場合は、ファイル名の日付プレフィックスを省略します(例:descriptive-slug.md)。メタデータの Published フィールドは引き続き含め、値を Unknown にします。
    • 同名のファイルがすでにある場合は、数字のサフィックスを付けます(例:descriptive-slug-2.md)。
    • メタデータヘッダーに、ソース URL、取得日、公開日を含めます。
    • 原文を保持します。書式上のノイズは取り除いてください。意見を書き換えないでください。

    正確な形式については、references/raw-template.md を参照してください。

トリアージ

生ファイルを保存した後、wiki/ を編集する前に、ソースに登場する主要なエンティティとその同義語で wiki/ を検索し、対応方針を示します。

  • 新規 — 1 つ以上の新しい記事を作成します。
  • 更新 — 既存の記事に内容を統合します。
  • 異議あり — 既存の内容と矛盾しています。「編纂」での矛盾の注記方法を参照してください。「新規」または「更新」と組み合わせることもできます。
  • 該当なし — wiki にすでにある知識を超える情報はありません。生ファイルは保持し、記録(「取り込み後」を参照)して終了します。内容の乏しいソースから無理に記事を作成しないでください。

「新規」「更新」「異議あり」は組み合わせることができます。「該当なし」は他の区分と併用できません。

編纂(wiki/)

新しい内容をどこに配置するかを決めます。

  • 既存記事と同じ中核的な主張 → その記事に統合します。Sources/Raw に新しいソースを追加し、影響を受けるセクションを更新します。
  • 新しい概念 → 最も関連性の高いトピックディレクトリに新しい記事を作成します。ファイル名には生ファイル名ではなく、概念名を使用します。
  • 複数のトピックにまたがる → 最も関連性の高いディレクトリに配置します。他の場所にある関連記事への「関連項目」相互参照を追加します。

これらは相互に排他的ではありません。1 つのソースについて、ある記事への統合に加え、ソースが紹介する独立した概念について別の記事を作成することもあります。いずれの場合も、事実関係の矛盾がないか確認します。新しいソースが既存の内容と矛盾する場合は、異議のある主張に Status: Disputed ブロックを付けてください(references/article-template.md を参照)。矛盾する内容が別々の記事にある場合は、両方に印を付け、相互にリンクします。

ソースへの忠実性。 数値、日付、直接引用はすべて、記載する前に生ファイル内で検索または確認してください。値は見つかったとおりに正確に記載します。ソースに 42K とある場合は、42,000 ではなく 42K と記載してください。導出した値(合計、差分、計算した件数)は、その構成要素を示し、各要素を生ファイル内で確認できるようにしてください。値を確認できない場合は、正確な値を記載せず、省略するか、精度を示さない表現にしてください。

記事の形式については、references/article-template.md を参照してください。主な点は次のとおりです。

  • Sources フィールド:著者、組織、または出版物の名前と日付をセミコロンで区切って記載します。
  • Raw フィールド:raw/ 内のファイルへの Markdown リンクをセミコロンで区切って記載します。
  • wiki/<topic>/ からの相対パスには ../../raw/<topic>/<file>.md を使用します(プロジェクトのルートまで 2 階層上がります)。
連鎖的な更新

主要な記事を更新した後、波及する影響がないか確認します。インデックスだけに頼らず、ソースに登場する主要なエンティティ、その別名、および影響を受ける主張を wiki 全体から検索し、内容に実質的な影響を受けるアーカイブ以外のすべての記事を更新します。更新した各ファイルの Updated 日付も更新してください。

新しいソースが既存の主張に取って代わる場合、または矛盾する場合は、記録として古い主張を残し、Status ブロックを付けてください(references/article-template.md を参照)。新しい情報に置き換えられた場合は Outdated、ソース間で意見が異なる場合は Disputed とします。履歴を黙って書き換えてはいけません。

アーカイブページは特定時点のスナップショットであるため、連鎖的な更新の対象にはしません。

取り込み後

wiki/index.md を更新し、変更したすべての記事のエントリを追加または更新します。新しいトピックセクションを追加する場合は、1 行の説明を含めてください。Updated 日付は、ファイルシステムのタイムスタンプではなく、記事の知識内容が最後に変更された日付を示します。形式については references/index-template.md を参照してください。

wiki/log.md に追記します。

## [YYYY-MM-DD] ingest | <primary article title>
- Disposition: <New; Update; Disputed>
- Raw: <raw file path>
- Updated: <cascade-updated article title>

連鎖的な更新がない場合は、- Updated: 行を省略します。「該当なし」の場合は記録して終了します。プロジェクトルートからの相対パスで raw ファイルを指定します(例:raw/topic/file.md)。

## [YYYY-MM-DD] ingest | no material: <project-root-relative raw file path>
- Disposition: No material

「該当なし」の見出しは、機械可読なインベントリキーとして完全一致させる必要があります。人が読めるログエントリを完全なものにするには、Disposition 行も必須です。

リサーチ(複数ソースの取り込み)

ユーザーがトピックのリサーチ、またはソースを wiki に集めるよう明示的に依頼した場合にのみ使用します。通常の知識に関する質問は Query に回します。Query ではファイルへの書き込みは行いません。

  1. トピックをいくつかの切り口に分けます。それぞれについて、文字どおりのキーワードだけでなく、正式名称、略称、同義語も使って幅広く検索します。
  2. 結論として示す予定の主要な主張については、意図的に反対側の情報も検索します。失敗例、批判、再現に失敗した例などです。
  3. 選んだソースは通常どおり raw/ に保存します。検索は並行して実行してもかまいませんが、編集は並行してはいけません。index.md、log.md、カスケード更新は共有状態のため、ソースを1つずつ編集してください。

Query

wiki を検索して、質問に回答します。実行のきっかけの例:

  • 「X について何がわかっていますか?」
  • 「Y に関する内容をすべて要約してください」
  • 「wiki に基づいて A と B を比較してください」
手順
  1. wiki/index.md を読んで候補の記事を特定し、トピックの主要な用語 とその同義語 を使って wiki/ を全文検索します。index と全文検索の両方で結果が得られない限り、wiki に関連する内容がないと断言してはいけません。また、検索を実施したことを伝えます。
  2. 見つかった記事を読み、回答をまとめます。
  3. 自身の学習知識より wiki の内容を優先します。Markdown リンクでソースを示します:記事タイトル(会話中の引用にはプロジェクトルート相対パスを、wiki/ 内のファイルでは現在のファイルからの相対パスを使用します)。
  4. 会話内で回答します。依頼されない限り、ファイルには書き込みません。
アーカイブ

ユーザーが回答を wiki にアーカイブ、または保存するよう明示的に依頼した場合:

  1. 新しい wiki ページとして回答を書き込みます。references/archive-template.md を参照してください。会話中の引用をアーカイブページに変換する際は、プロジェクトルート相対パス(例:wiki/topic/article.md)をファイル相対パス(例:../topic/article.md、同じディレクトリの場合は article.md)に書き換えます。
    • ソース:回答で引用した wiki 記事への Markdown リンク。
    • Raw フィールドは不要です(内容は raw/ から取得したものではありません)。
    • ファイル名はクエリのトピックを反映させます。例:transformer-architectures-overview.md。
    • 最も関連性の高いトピックディレクトリに配置します。
  2. 必ず新しいページを作成します。既存の記事に統合してはいけません(アーカイブする内容は、raw 素材ではなく、まとめた回答です)。
  3. wiki/index.md を更新します。Summary の先頭に [Archived] を付けます。
  4. wiki/log.md に追記します:
    ## [YYYY-MM-DD] query | Archived: <page title>
    

Lint

wiki の品質チェックです。権限レベルの異なる3つのカテゴリがあります。

安全に修正できる項目(自動修正)

以下を自動的に修正します。

インデックスの整合性 — wiki/index.md と実際の wiki/ ファイルを比較します(index.md と log.md は除外)。

  • ファイルが存在するもののインデックスにない場合 → (no summary) をプレースホルダーとしてエントリを追加します。Updated には、記事のメタデータに Updated 日付があればその日付を使用します(アーカイブページの場合は Archived 日付)。どちらもない場合は、ファイルの最終更新日を使用します。
  • インデックスのエントリが存在しないファイルを指している場合 → インデックス内で [MISSING] としてマークします。エントリは削除せず、ユーザーの判断に委ねます。
  • インデックスのエントリの Updated が記事のメタデータの Updated(アーカイブページの場合は Archived)と異なる場合 → 記事に合わせてインデックスのエントリを更新します。

内部リンク — wiki/ の記事ファイルにあるすべての Markdown リンクについて(本文と Sources メタデータを対象とし、Raw フィールドのリンクは「Raw 参照」のルールで検証するため除外し、See Also セクションのリンクは以下の「See Also」のルールで処理するため除外し、index.md と log.md は上記で処理するため除外します)。

  • リンク先が存在しない場合 → wiki/ 内で同じ名前のファイルを検索します。
    • 一致するファイルがちょうど 1 つ → パスを修正します。
    • 一致するファイルが 0 個または複数 → ユーザーに報告します。

Raw 参照 — Raw フィールド内のすべてのリンクは、既存の raw/ ファイルを指している必要があります。

  • リンク先が存在しない場合 → raw/ 内で同じ名前のファイルを検索します。
    • 一致するファイルがちょうど 1 つ → パスを修正します。
    • 一致するファイルが 0 個または複数 → ユーザーに報告します。

See Also — 各トピックディレクトリ内で、以下を行います。

  • See Also リンクのリンク先が存在しない場合 → wiki/ 内で同じ名前のファイルを検索します。
    • 一致するファイルがちょうど 1 つ → パスを修正します。
    • 一致するファイルが 0 個 → リンクを削除します(無効な相互参照は必須ではありません)。
    • 一致するファイルが複数 → ユーザーに報告します。
機械的なレポート(修正なし)

次のコマンドを機械的に実行します:python3 <skill-dir>/scripts/check_evidence.py <project-root>(必要に応じて、その後にプロジェクトルートからの相対パスで記事を指定して対象を絞れます)。デフォルトでは wiki 全体が対象です。スクリプトは高速です。検出結果を報告し、事実を自動修正しないでください。

ソースとの整合性 — 報告された候補は疑わしい項目であり、確定した誤りではありません。派生値や製品名が含まれる場合があります。それぞれを Raw の文脈に照らして判断し、実際の不一致のみを報告してください。

証拠のエラー — スクリプトで検証できない記事(Raw フィールドの欠落、解決できない Raw リンク、または raw/ の外を参照する Raw リンク)。これらは必ず判断が必要であり、スクリプトで修正しないでください。

未参照の Raw ファイル — No material disposition として記録されたファイルは除外し、それ以外はすべて実際のバックログとしてリマインダーに含めます。

判断に基づくレポート(修正なし)

以下は判断が必要です。自動修正せず、検出結果を報告してください。

  • 記事間の事実の矛盾
  • 新しいソースで否定されているにもかかわらず、Status ブロックなしで掲載されている古い主張
  • ソース間に不一致があるにもかかわらず、矛盾の注記がない項目
  • 関連記事間で明らかに不足している相互参照(提案し、黙って追加しないでください)
  • 書式が不正な Status ブロック(Outdated に日付がない、またはいずれかのブロックに説明がないもの。書式の参考:references/article-template.md)
  • 他の wiki 記事からリンクされていない孤立ページ
  • トピックをまたぐ参照の不足
  • 頻繁に言及されているものの、専用ページがない概念
  • アーカイブ後に引用元の記事が大幅に更新されたアーカイブページ
リント後

wiki/log.md に追記します。

## [YYYY-MM-DD] lint | <N> issues found, <M> auto-fixed

規約

  • 相対リンクを使用した標準的な Markdown を使用します。
  • wiki/ で許可されるトピックのサブディレクトリは1階層のみです。それ以上深くネストすることはできません。
  • ログエントリ、収集日、アーカイブ日には今日の日付を使用します。更新日は、記事の知識内容が最後に変更された日付を示します。公開日はソースから取得します(利用できない場合は Unknown を使用します)。
  • wiki/ ファイル内のすべての Markdown リンクには、現在のファイルを基準としたパスを使用します。会話の出力では、プロジェクトルートを基準としたパスを使用します(例:wiki/topic/article.md)。
  • 取り込みでは wiki/index.md と wiki/log.md の両方を更新します(資料のない取り込みではログのみを更新します)。アーカイブ(Query から実行)では両方を更新します。Lint では wiki/log.md を更新します(インデックスのエントリを自動修正する場合に限り、wiki/index.md も更新します)。通常のクエリではファイルを一切書き込みません。

コメント