| name | llm-wiki |
| argument-hint | ingest [path] | query <質問> | lint | init <ジャンル> |
| description | 個人の知識をWiki・ナレッジベースとして永続的に蓄積・管理するスキル。KarpathyのLLM Wikiパターンに基づき、ソースを取り込んでObsidian対応Markdownページを生成・更新する。/llm-wiki コマンドで呼び出す(ingest/query/lint/init)。次のような場合は必ずこのスキルを使うこと:(1) 情報・記事・メモをWikiに追加・取り込みたい(「Wikiに追加して」「ナレッジベースに保存して」「覚えておいて」)、(2) Wikiから知識を引き出したい(「Wikiで調べて」「ナレッジベースを検索して」)、(3) Wikiを整備したい(「矛盾をチェックして」「孤立ページを探して」「lint」)、(4) 知識管理システムを初期化したい。「/llm-wiki」で始まるコマンドは常にこのスキルを使う。 |
| license | MIT |
LLM Wiki
引数形式: $ARGUMENTS
まず $ARGUMENTS の先頭の単語でサブコマンドを判定し、対応するセクションの手順を実行する。
/llm-wiki ingest [path] ソースを取り込んでWikiを更新
/llm-wiki query <質問> Wikiから知識を引き出す
/llm-wiki lint 矛盾・孤立ページを検出
/llm-wiki init <ジャンル> 新ジャンルを初期化
Wiki設定
Wiki のルートディレクトリは ~/.config/llm-wiki/config から読み込む。ファイルが存在しない場合はユーザーに確認してから ~/.config/llm-wiki/ ディレクトリごと作成する:
WIKI_ROOT=/path/to/obsidian-vault/Wiki
SOURCES_DIR=/path/to/obsidian-vault/Clippings
Wiki ファイル構造
WIKI_ROOT 直下に <genre>/ フォルダを直接置く(wiki/ サブディレクトリは挟まない):
<WIKI_ROOT>/
├── index.md # 全体目次(ジャンル一覧のみ。薄く保つ)
├── <genre>/ # ジャンルフォルダ(WIKI_ROOT 直下)
│ ├── index.md # ジャンル内ページ一覧と各ページの1行説明
│ ├── log.md # 操作ログ(ingest/lint の記録)
│ ├── _overview.md # ジャンル全体のサマリー・俯瞰
│ └── <topic>.md # 個別トピックページ
ジャンル名の命名規則: ディレクトリ名は英語小文字スラッグ(例: rails, health, philosophy)。表示名・フロントマターは日本語でも英語でも可。
サブコマンド: init
用途: 新しいジャンルフォルダを初期化する
引数: init <ジャンル名>(例: init rails、init llm)
手順:
<WIKI_ROOT>/<genre>/ ディレクトリを作成
- 以下の3ファイルを作成:
index.md
---
genre: <ジャンル名>
updated: <日付>
---
# <ジャンル名> — ページ一覧
| ページ | 概要 |
|--------|------|
_overview.md
---
genre: <ジャンル名>
updated: <日付>
---
# <ジャンル名> — 概要
このジャンルの全体像・主要概念・学習の文脈をまとめる。
ページが増えたら更新すること。
log.md
---
genre: <ジャンル名>
---
# <ジャンル名> — 操作ログ
- ルートの
index.md にジャンルを追記
サブコマンド: ingest
用途: ソースドキュメントをWikiに取り込む
引数:
ingest <path> — 指定ファイルを取り込む
ingest (パスなし)— SOURCES_DIR 内の未取り込みファイルを自動検出
未取り込みファイルの検出: log.md に記録されていないファイルを SOURCES_DIR から列挙する。
手順:
- 設定ファイルを読み込み、
WIKI_ROOT を確認
- 対象ソースファイルを読む
- 対象ジャンルを判断(ファイルのパスや内容から推定)
- このWikiは技術系に限らず、あらゆるジャンルの知識を蓄積する汎用ナレッジベースである
- ライフスタイル、健康、読書、ビジネス、思想など技術以外のジャンルも積極的に受け入れる
- ジャンルが推定できる場合は確認不要でそのまま進める
- どうしてもジャンルが判断できない場合のみユーザーに確認する
- ジャンルが未初期化なら
init を先に実行(新規ジャンルを自動作成してよい)
<genre>/index.md と <genre>/_overview.md を読む
- ページ判断: 以下の基準で判定する
- 既存ページに統合できる → 該当ページを更新
- 明確に独立したトピック → 新規ページを作成
- 大きくなりすぎたページ → 分割を検討(ユーザーに確認してから)
- ページを書く(下記「ページフォーマット」に従う)
<genre>/index.md に新規ページを追記(更新の場合は説明を修正)
<genre>/_overview.md を必要に応じて更新
<genre>/log.md に操作を記録
- 完了を報告:作成・更新したページ一覧を表示
サブコマンド: query
用途: Wikiに蓄積された知識を引き出す
引数: query <質問> (例: query Railsでトランザクションを安全に扱う方法)
手順:
- ルート
index.md でジャンル一覧を確認
- 質問に関連するジャンルの
index.md を読む
- 該当しそうなページを読む
- Wikiの内容をもとに回答を合成する。出典は
[[ページ名]] 形式で引用
- Wikiに情報が不足している場合はその旨を伝え、
ingest を提案する
回答保存の判断: Wikiに新たに追加すべき洞察が回答に含まれている場合、ユーザーに確認して ingest する。単純な事実確認は保存不要。
サブコマンド: lint
用途: Wiki全体の品質をチェックする
手順:
- ルート
index.md からジャンル一覧を取得
- 各ジャンルの全ページを読む
- 以下を検出して報告:
- 矛盾: 異なるページで相反する記述
- 孤立ページ: どこからもリンクされていないページ
- リンク漏れ: 関連しているのにリンクされていないページペア
- 古い情報: 日付や内容から明らかに陳腐化している記述
- 肥大化ページ: 分割を検討すべき大きなページ
- 問題一覧をユーザーに提示
- 修正内容の承認を得てから書き込む
ページフォーマット
---
title: <トピックタイトル>
genre: <ジャンル名>
type: <concept|entity|summary|comparison|integration>
created: <日付>
updated: <日付>
tags:
- wiki/<ジャンル名>
sources:
- "ソースのタイトルまたはURL"
related:
- "[[関連ページ1]]"
- "[[関連ページ2]]"
---
# <トピックタイトル>
<リード文:1〜2文でこのページの核心を述べる>
## <セクション>
<合成された内容>
## 注意点・ハマりどころ
<驚くこと、間違えやすいこと>
## 関連
- [[関連ページ1]]
- [[関連ページ2]]
ページタイプ:
concept — 概念・理論の説明
entity — ツール・ライブラリ・人物などの固有名詞
summary — 記事・書籍などのまとめ
comparison — 複数の選択肢の比較
integration — 複数トピックを横断する統合的な知見
執筆原則
合成する、転写しない。 ソースの言葉ではなく、理解した内容を自分の言葉で書く。500文字の記事から50文字の洞察を抽出することが目標。
意見を持つ。 何が有効か、何が驚きか、何に注意すべきかを記録する。中立的な要約より、「これが重要」という判断が価値を持つ。
[[ウィキリンク]]で接続する。 各ページは関連ページへ2〜5本リンクする。これがノート集合ではなくWikiである理由。
更新時は再合成する。 新情報をただ追記しない。既存内容と照合し、矛盾があれば明記する。必要なら書き直す。
未来の自分に向けて書く。 6ヶ月後の自分がコンテキストゼロで読む前提で書く。