mcpField
L
llm-wiki-skill

llm-wiki-skill

github.com/aaronoah生産性3157 回インストール27 週間前に更新
リポジトリ

llm-wiki-skill について

llm-wiki-skillは、CLIエージェントで相互リンクされたMarkdownナレッジベースを作成・管理するスキルです。変更しない原資料と生成ページを分け、スキーマ、インデックス、作業ログで内容を整理します。

主な機能

  1. 01原資料の取り込みと整理
  2. 02要約とリンク付きページの生成
  3. 03Wiki内容の検索と要約
  4. 04孤立ページやリンク切れの検査
  5. 05スキーマによる規約の適用

活用シーン

  1. 01文書やクリッピングからWikiを構築
  2. 02既存ナレッジベースへの新資料の追加
  3. 03Wiki内容に関する質問への回答
  4. 04ページリンクとインデックスの監査

インストール

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

$npx skills add https://github.com/aaronoah/llm-wiki-skill --skill llm-wiki-skill

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

同梱ファイル

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

README.md
.gitignore
LICENSE
pyproject.toml
scripts/
ingest.py
links.py
data.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 の作成
  1. レイヤー 0 に関するユーザーの希望を尋ね、ディレクトリ構造に従ってディレクトリ構造を作成します。
  2. レイヤー 1 とレイヤー 2 のディレクトリ構造に関するユーザーの希望を尋ね、意図を確認するためにディレクトリ構造を表示します。
  3. SCHEMA.md に基づいて規約を表示し、変更を希望する場合はユーザーの好みを尋ねます。
  4. 手順 2 と 3 で得たユーザーの希望を反映した SCHEMA.md のテンプレートを SCHEMA.md に書き込みます。
  5. セクション見出しを含む、index.md のテンプレートに基づいた初期 index.md を作成します。
  6. 作成記録を含む、log.md のテンプレートに基づいた初期 log.md を作成します。
  7. Wiki の準備ができたことを確認し、最初に取り込むソースを提案します。
元のコンテンツを Wiki に取り込む
  1. 以下のコードブロックを使って raw/ 内のファイルを読み込み、各ファイルの mtime を含むメタデータ一覧を出力します。
python3 $HOME/.agents/skills/llm-wiki-skill/scripts/ingest.py --collect ./raw
  1. 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について質問する
  1. index.md で関連する見出しを見つけます。
  2. Wiki内で類似ページを探し、SCHEMA.md に基づいて「Based on [[page-1]], [[page-2]], ...」のような形式で要約します。
  3. Markdown形式でユーザーに提示します。
  4. 回答をWikiに保存するかユーザーに確認します。保存する場合は、次の手順を実行します。
    • 存在しない場合は queries/ フォルダーを作成します。
    • 質問が比較に関するものなら、ファイルを comparisons/ に保存します。それ以外の場合は queries/ に保存します。
  5. index.md をセクション見出し付きで更新します。
  6. 作成したことを log.md に記録します。
  7. 作成したファイルをすべてユーザーに列挙します。ファイル名だけでよく、内容を表示する必要はありません。
WikiのLint、監査、またはヘルスチェック

注: Lint対象のルールは4つあります。確認後、Lintの実行内容を log.md に記録します。件名は「Rules passed: N, rules failed: M, which rule failed and a brief summary within 200 characters」とします。

  1. 必ず最初に SCHEMA.md を読み、Wiki内の違反と未解決の矛盾を探します。
  2. 以下のコードを使って、他のページへの相互リンクがない孤立ページをすべて見つけます。出力は孤立ページのファイル名一覧です。
python3 $HOME/.agents/skills/llm-wiki-skill/scripts/links.py --orphan ./generated
  1. 以下のコードを使って、リンク切れ(参照先に到達できない相互リンク)をすべて見つけます。出力はファイル名と、そのファイル内のリンク切れすべてを対応付けた辞書です。
python3 $HOME/.agents/skills/llm-wiki-skill/scripts/links.py --broken ./generated
  1. 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時にログのサイズを確認してください。
  • 矛盾には明示的に対処してください。黙って上書きしないでください。日付とともに両方の主張を記載し、フロントマターに印を付け、ユーザーの確認が必要であることを示します。

コメント