llm-wiki-skill について
llm-wiki-skillは、CLIエージェントで相互リンクされたMarkdownナレッジベースを作成・管理するスキルです。変更しない原資料と生成ページを分け、スキーマ、インデックス、作業ログで内容を整理します。
主な機能
- 01原資料の取り込みと整理
- 02要約とリンク付きページの生成
- 03Wiki内容の検索と要約
- 04孤立ページやリンク切れの検査
- 05スキーマによる規約の適用
活用シーン
- 01文書やクリッピングからWikiを構築
- 02既存ナレッジベースへの新資料の追加
- 03Wiki内容に関する質問への回答
- 04ページリンクとインデックスの監査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aaronoah/ llm-wiki-skill --skill llm-wiki-skillインストール後、Claude Code で/llm-wiki-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.md.gitignoreLICENSEpyproject.tomlscripts/ingest.pylinks.pydata.py詳細
LLM Wiki スキル
相互にリンクされた Markdown ファイルで構成される永続的なナレッジベースを、継続的に更新・拡充します。元のコンテンツは人間が整理し、エージェントはこのスキルを使って、元のコンテンツを収集、重複排除、相互参照し、構造化された Markdown ファイルに要約します。ユーザーが以下を希望する場合に、このスキルが有効になります。
- Wiki またはナレッジベースを作成、または使い始める
- 元のコンテンツを Wiki に取り込み、追加、または処理する
- Wiki またはナレッジベースについて質問する
- Wiki の lint、監査、健全性チェックを行い、適切な状態であることを確認する
クイックスタート
ディレクトリ構造
以下は Wiki のディレクトリ構造の例です。
llm-wiki/ # Layer 0: the root level wiki folder name
├── SCHEMA.md # Layer 3: A document for User and LLM to co-evolve the wiki conventions, structure of wiki and tag taxonomy
├── index.md # Always exists, regardless of SCHEMA.md definition. Catalog of everything, organizaed by categoies (entities, concepts etc), each page listed with a link and a one-line summary
├── log.md # Always exists, regardless of SCHEMA.md definition. Chronological action log (append-only, rotated yearly)
├── raw/ # Layer 1: Always exists, regardless of SCHEMA.md definition. Immutable content curated by humans
│ ├── documents/ # Web articles, clippings, PDFs
│ └── assets/ # Images, diagrams referenced by sources
├── generated/ # Layer 2: Always exists, regardless of SCHEMA.md definition. LLM-generated directories and markdown files
│ ├── entities/ # Always exists, regardless of SCHEMA.md definition. Entity pages (people, orgs, products, models)
│ ├── topics/ # Always exists, regardless of SCHEMA.md definition. Topic pages (concepts, terms)
│ ├── comparisons/ # Side-by-side analysis (between entities or between topics)
次のセクションでは 3 つのレイヤーについて説明します。Wiki またはナレッジベースは上記の構造を使って構築されます。エージェントにはスコープが設定されたファイルシステム権限があるため、ユーザーがこのスキルを適用できるのは、CLI エージェント(Codex、Claude Code、Gemini など)を llm-wiki/(またはユーザーがカスタマイズしたフォルダー名)のルートで起動した場合のみです。つまり、その配下に SCHEMA.md、index.md、log.md と raw/、generated/ フォルダーが存在する必要があります。ユーザーが Wiki のサブフォルダー内の別の場所で CLI エージェントを起動した場合、このスキルは中止されます。
index.md のテンプレート
インデックスは種類ごとにセクション分けされています。各項目は 1 行で、Wiki リンクと要約を記載します。
# Wiki Index
> Format: `## Last Updated: [YYYY-MM-DDThh:mm:ss] | subject | Total pages: N`
> Subject: the term (entity/topic/comparison etc)
> Total pages: how many pages the term is brought up
## Entities
## Topics
## Comparisons
log.md のテンプレート
# Log File
> Format: `## [YYYY-MM-DDThh:mm:ss] action | subject | files`
> Actions: ingest, update, lint, archive, delete
> Subject: the summary of what happened within 300 characters
> Files: related files such as raw documents locations, generated wikis
> When log.md exceeds 500 entries, rotate: rename to log-YYYY.md, start fresh.
SCHEMA.md のテンプレート
ユーザーの好みに合わせて調整してください。スキーマはエージェントの動作を制約し、一貫性を確保します。
# Wiki Schema
## Conventions
- Raw files can be broken down to several markdown files that live in `entities/`, `topics/` etc.
- Only create the wiki pages when an entity/topic is mentioned in 2+ sources or is central to one source.
- File names: lowercase, hyphens, no spaces (e.g., `transformer-architecture.md`)
- Every wiki page starts with YAML frontmatter (see below)
- Use `[[wikilinks]]` to cross-link between pages (minimum 2 outbound links per page)
- Every new or updated page must link to at least 2 other pages via `[[wikilinks]]`.
- When updating a page, always bump the `updated` date
- When new information conflicts with existing content:
1. Check the dates — newer sources generally supersede older ones
2. If genuinely contradictory, note both positions with dates and sources
3. Mark the contradiction in frontmatter: `contradictions: [page-name]`
4. Flag for user review
## Frontmatter
> ---
> title: Page Title
> created: YYYY-MM-DDThh:mm:ss
> updated: YYYY-MM-DDThh:mm:ss
> type: entity | topic | comparison
> sources: [raw/documents/source-name.md]
> ---
## Layer 1 (User can specify, otherwise default to this file)
### Documents
Any single document in different formats user put in
### Assets
Any media files, images, video links etc.
## Layer 2 (User can specify, otherwise default to this file)
### Entities
One markdown page per notable entity. Include:
- Overview / what it is
- Key facts and dates
- Relationships to other entities ([[wikilinks]])
- Source references
### Topics
One markdown page per concept or topic. Include:
- Definition / explanation
- Current state of knowledge
- Open questions or debates
- Related concepts ([[wikilinks]])
### Comparison Pages
Side-by-side analysis in markdown. Include:
- What is being compared and why
- Dimensions of comparison (table format preferred)
- Verdict or synthesis
- Sources
アーキテクチャ
3 つのレイヤー
レイヤー 1 — 元のコンテンツ: 不変のディレクトリとファイルです。エージェントは読み取れますが、変更することはできません。
レイヤー 2 — Wiki またはナレッジベース: エージェントが管理するディレクトリと Markdown ファイルです。エージェントが作成、更新し、相互参照します。
レイヤー 3 — スキーマ: SCHEMA.md は llm-wiki/(またはユーザーがカスタマイズしたフォルダー名)の規約に関するユーザーの好みと、タグの分類体系を定義します。
新しい Wiki の作成
- レイヤー 0 に関するユーザーの希望を尋ね、ディレクトリ構造に従ってディレクトリ構造を作成します。
- レイヤー 1 とレイヤー 2 のディレクトリ構造に関するユーザーの希望を尋ね、意図を確認するためにディレクトリ構造を表示します。
- SCHEMA.md に基づいて規約を表示し、変更を希望する場合はユーザーの好みを尋ねます。
- 手順 2 と 3 で得たユーザーの希望を反映した SCHEMA.md のテンプレートを
SCHEMA.mdに書き込みます。 - セクション見出しを含む、index.md のテンプレートに基づいた初期
index.mdを作成します。 - 作成記録を含む、log.md のテンプレートに基づいた初期
log.mdを作成します。 - Wiki の準備ができたことを確認し、最初に取り込むソースを提案します。
元のコンテンツを Wiki に取り込む
- 以下のコードブロックを使って
raw/内のファイルを読み込み、各ファイルのmtimeを含むメタデータ一覧を出力します。
python3 $HOME/.agents/skills/llm-wiki-skill/scripts/ingest.py --collect ./raw
log.mdの最終行を読み取って「date time」を取得し、以下のコードブロックを使ってそのmtimeを取得します。
python3 $HOME/.agents/skills/llm-wiki-skill/scripts/ingest.py --iso-to-mtime "date time"
次に、手順 1 で取得したファイルのうち、「date time」より後に追加されたものを探します。
3. SCHEMA.md の規約セクションに基づき、新たに追加された各ファイルを要約します。
4. 手順 4 と 5 に備えて、「date time」以前に追加されたファイルを探します。
5. ファイルの内容が競合する場合は、SCHEMA.md で定義された規約セクションを参照します。
6. 新しいファイルを作成し、既存のファイルを更新します。すべてのファイルに、新たに追加された相互リンクを含めて generated/ 配下に保存します。
7. セクション見出しを含めて index.md を更新します。
8. 作成記録を含めて log.md を更新します。
9. 新たに追加または変更されたすべてのファイルをユーザーに一覧表示します。
Wikiについて質問する
index.mdで関連する見出しを見つけます。- Wiki内で類似ページを探し、
SCHEMA.mdに基づいて「Based on [[page-1]], [[page-2]], ...」のような形式で要約します。 - Markdown形式でユーザーに提示します。
- 回答をWikiに保存するかユーザーに確認します。保存する場合は、次の手順を実行します。
- 存在しない場合は
queries/フォルダーを作成します。 - 質問が比較に関するものなら、ファイルを
comparisons/に保存します。それ以外の場合はqueries/に保存します。
- 存在しない場合は
index.mdをセクション見出し付きで更新します。- 作成したことを
log.mdに記録します。 - 作成したファイルをすべてユーザーに列挙します。ファイル名だけでよく、内容を表示する必要はありません。
WikiのLint、監査、またはヘルスチェック
注: Lint対象のルールは4つあります。確認後、Lintの実行内容を log.md に記録します。件名は「Rules passed: N, rules failed: M, which rule failed and a brief summary within 200 characters」とします。
- 必ず最初に
SCHEMA.mdを読み、Wiki内の違反と未解決の矛盾を探します。 - 以下のコードを使って、他のページへの相互リンクがない孤立ページをすべて見つけます。出力は孤立ページのファイル名一覧です。
python3 $HOME/.agents/skills/llm-wiki-skill/scripts/links.py --orphan ./generated
- 以下のコードを使って、リンク切れ(参照先に到達できない相互リンク)をすべて見つけます。出力はファイル名と、そのファイル内のリンク切れすべてを対応付けた辞書です。
python3 $HOME/.agents/skills/llm-wiki-skill/scripts/links.py --broken ./generated
generated/内のすべてのWikiページがindex.mdに記載されている必要があります。記載されていないページがあれば報告します。
ルール(必ず守ること)
- **タスクが完了したら、必ず次のテンプレートに従ってユーザーにメッセージを表示します。
|-------ご依頼への対応が完了しました!---------|
raw/内のファイルは絶対に変更しないでください。ソースは不変です。修正はWikiページに加えます。- 作業を始める前に、必ず状況を把握してください。新しいセッションで操作を行う前に、SCHEMA、index、直近のlogを読みます。 これを省くと、重複や相互参照の見落としが発生します。
index.mdとlog.mdは必ず更新してください。更新しないとWikiの品質が低下します。どちらもナビゲーションの要です。- 相互参照のないページは作成しないでください。独立したページは見つけにくくなります。すべてのページから、少なくとも2つの他のページにリンクする必要があります。
- フロントマターは必須です。検索、フィルタリング、古さの検出に役立ちます。
- ページはざっと読めるようにしてください。Wikiページは30秒で読める長さにします。200行を超えるページは分割してください。詳細な分析は専用の詳細解説ページに移します。
- 一括更新の前には確認してください。取り込みによって既存ページを10ページ以上更新する、または新規ページを10ページ以上作成する場合は、範囲について事前にユーザーの確認を得ます。
- ログをローテーションしてください。
log.mdが500件を超えたらlog-YYYY.mdに名前を変更し、新しいログを開始します。エージェントはLint時にログのサイズを確認してください。 - 矛盾には明示的に対処してください。黙って上書きしないでください。日付とともに両方の主張を記載し、フロントマターに印を付け、ユーザーの確認が必要であることを示します。