Community研究&データ分析github.com

ctxfst/skill-chunk-md

MarkdownをセマンティックチャンキングによりCtxFST形式に変換するClaudeスキル

skill-chunk-md とは?

このスキルは、Markdown文書をCtxFST(Contextual Fragment Structured Text)形式に変換するためのClaudeスキルです。文書を意味的なまとまり(チャンク)に分割し、各チャンクに関連するエンティティ(技術、フレームワーク、ツールなど)を明示的にリンクすることで、AIエージェントによるチャンク検索とエンティティベースのナビゲーションを両立させます。Claude Code、Codenow、CodexなどのAIエージェント環境で使用可能です。ワークフローは10ステップで構成され、文書構造の分析、チャンク境界の決定、エンティティ抽出と正規化、YAMLフロントマターの生成、<Chunk>タグによるコンテンツラッピング、検証スクリプトによる品質確認までをカバーします。特にGraphRAGやワールドモデルとの連携を想定し、エンティティはナレッジグラフのノードとして機能し、チャンクはそのノードにリンクされたコンテンツ片として動作します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add ctxfst/skill-chunk-md

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

スキル Chunk MD

Markdownを、セマンティックな<Chunk>タグ、構造化されたフロントマター、明示的なエンティティレイヤーを持つCtxFSTドキュメントに変換します。

目標

このスキルを使用して、以下の両方をサポートするドキュメントを作成します。

  1. チャンク検索:詳細なコンテキストのため
  2. エンティティ検索:ナビゲーション、グラフ展開、関連概念の発見のため

テキストを分割するだけでなく、重要なドメインエンティティを抽出し、正規化し、各チャンクが実際に議論しているエンティティにリンクします。

レイアウトの選択

ソースがノート型かメモリー型かを早期に判断します。

  • ノート型(1つのプロファイル、1つのベンチマーク、1つのミーティングログ):以下で説明する標準的な複数エンティティ/ファイルレイアウトを使用します。
  • メモリー型(時間とともに成長する知識ベース、エンティティごとの資料、エージェントメモリ):エンティティ中心の規約を使用します(1エンティティにつき1ファイル、ファイル名はentity-<id-suffix>.ctxfst.md、entities:は正確に1つの所有者、すべてのチャンクがその所有者を参照)。相互参照はエンティティIDを使用し、他のファイルに解決します。

エンティティ中心は規約であり、スキーマの変更ではありません。同じフロントマタールールが適用されます。違いは、len(entities) == 1であり、ファイル名が所有者を示すことです。具体例についてはassets/examples/entity-centric/を参照し、python3 scripts/validate_chunks.py <path> --entity-centricで検証してください。

ターゲット形式

CtxFSTドキュメントには以下を含める必要があります。

  1. YAMLフロントマター
  2. ドキュメントレベルのentitiesカタログ
  3. ドキュメントレベルのchunksカタログ
  4. <Chunk>タグでラップされた本文コンテンツ
---
title: "ドキュメントタイトル"
entities:
  - id: entity:python
    name: Python
    type: skill
    aliases: [python3]
  - id: entity:fastapi
    name: FastAPI
    type: framework
    aliases: []
chunks:
  - id: skill:python-api
    tags: [Python, Backend, API]
    entities: [entity:python, entity:fastapi]
    context: "FastAPIを使用したAPI構築に焦点を当てたPythonバックエンド作業"
---

<Chunk id="skill:python-api">
## Python API作業
PythonとFastAPIを使用してREST APIを構築しています...
</Chunk>

基本原則

チャンクをコンテンツキャリアとして、エンティティをセマンティックインデックスとして使用します。

  • チャンクは「どの正確な箇所を取得すべきか?」に答えます。
  • エンティティは「この箇所はどの概念に属するか?」に答えます。

タグは大まかなフィルタリングに役立ちます。エンティティが標準的なグラフノードです。

コアワークフロー

ステップ1:文書構造の分析

ソースMarkdown内の意味的な境界を特定します。

  • 新しいトピックを導入する見出し(##、###)
  • 長いセクション内のテーマの移行
  • 1つのまとまった概念を説明するリスト
  • 一緒に残すべきコードブロックとその説明

ステップ2:チャンク境界の決定

各チャンクは以下の条件を満たす必要があります。

  • 自己完結型:単独で取得されたときに理解可能
  • 焦点が絞られている:1つのメイントピックまたは密接に関連するサブトピックに集中
  • 取得可能:スタンドアロンの回答断片として有用

サイズのガイドライン:

  • 最小:約100トークン
  • 目標:300~800トークン
  • 最大:約1500トークン

トピックが変わる場合は、サイズ超過のチャンクを分割します。単独で成り立たない場合は、サイズ不足のチャンクをマージします。

ステップ3:候補エンティティの抽出

フロントマターを記述する前に、ドキュメントからドメイン固有のエンティティを抽出します。

以下を探します。

  • ハードスキル
  • ツールとライブラリ
  • フレームワーク
  • プラットフォーム
  • データベース
  • プロトコルと標準
  • アーキテクチャとデザインパターン
  • 名前付きの製品やシステム

すべての名詞をエンティティに昇格させないでください。ナレッジグラフのノードとして意味をなす用語を優先します。

ステップ4:エンティティの正規化と重複排除

生の言及を標準的なエンティティに変換します。

正規化ルール:

  • 最も認識されやすい標準名を使用する:PostgreSQL、postgresではない
  • エイリアスを1つのエンティティにマージする:JS -> JavaScript、K8s -> Kubernetes
  • 頭字語と完全名の両方が実際にエイリアスとして使用されている場合のみ保持する
  • system、project、tool、computer、workなどの汎用的な用語を削除する
  • 検索にとって意味的に重要ではない付随的な言及を削除する

何かがエンティティかどうか不明な場合は、以下を自問します。

  1. これは関連知識のナビゲーションに役立つか?
  2. これはスキルグラフ内で独自のノードを持つに値するか?
  3. この用語でチャンクを取得すると意味のある結果が得られるか?

答えが「いいえ」の場合は、エンティティリストから除外します。

ステップ5:エンティティIDの生成

entity:{canonical-name}の形式を使用します。

例:

  • entity:python
  • entity:fastapi
  • entity:postgresql
  • entity:event-driven-architecture

IDはプレフィックス以降は小文字のkebab-caseである必要があります。

ステップ6:チャンクIDの生成

{category}:{topic}[-{subtopic}]の形式を使用します。

カテゴリ使用例例
skill:技術スキルskill:python、skill:react-hooks
about:個人または組織の情報about:background、about:mission
project:プロジェクトの説明project:graphrag、project:api-v2
principle:ガイドラインと価値観principle:security-first
workflow:プロセスworkflow:deployment、workflow:review
reference:参考資料reference:api-auth、reference:schema

ステップ7:YAMLフロントマターの作成

entitiesとchunksの両方を定義します。

---
title: "私のスキルドキュメント"
entities:
  - id: entity:python
    name: Python
    type: skill
    aliases: [python3]
  - id: entity:fastapi
    name: FastAPI
    type: framework
    aliases: []
  - id: entity:pandas
    name: Pandas
    type: library
    aliases: []
chunks:
  - id: skill:python-api
    tags: [Python, Backend, API]
    entities: [entity:python, entity:fastapi]
    context: "REST APIとサービス実装に焦点を当てたPythonバックエンドスキル"
    created_at: "2026-03-08"
    version: 1
    type: text
    priority: high
    dependencies: []
  - id: skill:python-data
    tags: [Python, Data]
    entities: [entity:python, entity:pandas]
    context: "表形式分析とETL作業に焦点を当てたPythonデータ処理スキル"
    created_at: "2026-03-08"
    version: 1
    type: text
    priority: medium
    dependencies: []
---

ステップ8:チャンクをエンティティにリンク

各チャンクは、実際に議論している標準的なエンティティをリストする必要があります。

リンクルール:

  • チャンクにとって中心的なエンティティを含める
  • 簡単に触れられているだけのエンティティはスキップする
  • チャンクあたり1~6個のエンティティを推奨
  • すべてのドキュメントエンティティをすべてのチャンクにコピーしない
  • 2つのチャンクが異なる理由で同じエンティティに言及している場合は、contextでそれを区別する

ステップ9:コンテンツを<Chunk>タグでラップ

フロントマターのチャンクIDと一致する<Chunk>タグを適用します。

<Chunk id="skill:python-api">
## Python API作業

PythonとFastAPIを使用してREST APIや内部サービスを構築しています。
</Chunk>

ステップ10:検証とエクスポート

付属のスクリプトを使用します。

python3 scripts/validate_chunks.py document.md
python3 scripts/export_to_lancedb.py document.md --output chunks.json
python3 scripts/diagnose_chunks.py document.md --level suggest

エンティティルール

エンティティとしてカウントされるもの

以下を優先します。

  • 具体的
  • 複数のドキュメント間で再利用可能
  • グラフノードとして意味がある
  • 検索や展開に有用

良い例:

  • Python
  • FastAPI
  • Docker
  • Kubernetes
  • CI/CD
  • Event-Driven Architecture
  • JWT

通常はエンティティではないもの:

  • experience
  • technology
  • feature
  • application
  • computer
  • problem
  • task

エンティティタイプ

以下のデフォルトタイプのいずれかを使用します。

  • skill
  • tool
  • library
  • framework
  • platform
  • database
  • architecture
  • protocol
  • concept
  • domain
  • product

どれも適切でない場合は、多数のカスタムタイプを発明する代わりにconceptを使用します。

ワールドモデルのエンティティタイプ

ワールドモデルやエージェントループに参加するドキュメントを構築する場合、以下の追加タイプが利用可能です。

  • state — ワールド状態ノード(例:entity:resume-parsed)
  • action — 実行可能なアクション(例:entity:analyze-resume)
  • goal — タスク目標(例:entity:learn-kubernetes-path)
  • agent — アクターまたはユーザー(例:entity:ian-chou)
  • evidence — 観測結果(例:entity:docker-3yr-experience)

ワールドモデルYAMLフィールド

ワールドモデルに参加するSKILL.mdファイルには、以下のオプションのYAMLフロントマターフィールドが含まれる場合があります。

---
name: analyze-resume
description: "生の履歴書を解析し、スキルの証拠を抽出する"
# === ワールドモデルフィールド(すべてオプション) ===
preconditions:
  - "entity:has-raw-resume"
  - "NOT entity:has-parsed-resume"
postconditions:
  - "entity:has-parsed-resume"
  - "entity:has-skill-evidence"
related_nodes:
  - "entity:resume-parsing"
  - "entity:skill-extraction"
related_skills:
  - "career-mapping"
  - "skill-gap-analysis"
cost: low
idempotent: true
---
フィールド型説明
preconditionsstring[]このスキルを実行する前に存在する必要がある状態エンティティ
postconditionsstring[]実行後に作成または更新される状態エンティティ
related_nodesstring[]セマンティックグラフ内のアンカーポイント
related_skillsstring[]順次または補完的なスキル名
costenumlow、medium、high — 推定実行コスト
idempotentbool副作用なしで再実行しても安全かどうか

前提条件は否定にNOTプレフィックスを使用します(例:"NOT entity:has-parsed-resume"はその状態が存在してはならないことを意味します)。

タグとエンティティの比較

タグは以下に使用します。

  • 大まかな分類
  • フィルタリング
  • ドキュメント整理

エンティティは以下に使用します。

  • 標準的な概念の同一性
  • チャンクからグラフへのリンク
  • 類似性とトラバーサルワークフロー
  • ドキュメント間の概念の再利用

例:

  • タグ:Backend
  • エンティティ:entity:fastapi

フロントマタースキーマ

エンティティスキーマ

entities:
  - id: entity:fastapi
    name: FastAPI
    type: framework
    aliases: []

必須フィールド:

  • id
  • name
  • type

オプションフィールド:

  • aliases

チャンクスキーマ

chunks:
  - id: skill:python-api
    tags: [Python, Backend, API]
    entities: [entity:python, entity:fastapi]
    context: "FastAPIで構築されたREST APIに焦点を当てたPythonバックエンドスキル"
    created_at: "2026-03-08"
    version: 1
    type: text
    priority: high
    dependencies: []

推奨フィールド:

  • id
  • entities
  • context

オプションフィールド:

  • tags
  • created_at
  • version
  • type
  • priority
  • dependencies

コンテキスト記述ルール

各チャンクのcontextは以下を行う必要があります。

  • ドキュメント内でのチャンクの役割を説明する
  • 識別可能なユースケースに言及する
  • リンクされたエンティティを自然に反映する
  • 最初の文をそのままコピーしない

良い例:

  • "REST API、非同期サービス、FastAPIベースの実装に焦点を当てたPythonバックエンドスキル"

弱い例:

  • "このチャンクはPythonについて話しています"

変換例

変換前

## 私について

私はAPIと分散システムに重点を置いたバックエンドエンジニアです。

## Python

REST APIや内部ツールにPythonを使用しています。

### 主要ライブラリ
- FastAPI(ウェブサービス用)
- Pandas(データ処理用)

変換後

---
title: "プロフィール"
entities:
  - id: entity:python
    name: Python
    type: skill
    aliases: [python3]
  - id: entity:fastapi
    name: FastAPI
    type: framework
    aliases: []
  - id: entity:pandas
    name: Pandas
    type: library
    aliases: []
chunks:
  - id: about:background
    tags: [About, Experience]
    entities: []
    context: "APIと分散システムに取り組むバックエンドエンジニアとしての職歴"
    created_at: "2026-03-08"
    version: 1
    type: text
    priority: medium
    dependencies: []
  - id: skill:python
    tags: [Python, Backend]
    entities: [entity:python, entity:fastapi, entity:pandas]
    context: "API開発、サービス作業、データ処理のためのPythonスキル"
    created_at: "2026-03-08"
    version: 1
    type: text
    priority: high
    dependencies: [about:background]
---

<Chunk id="about:background">
## 私について

私はAPIと分散システムに重点を置いたバックエンドエンジニアです。
</Chunk>

<Chunk id="skill:python">
## Python

REST APIや内部ツールにPythonを使用しています。

### 主要ライブラリ
- FastAPI(ウェブサービス用)
- Pandas(データ処理用)
</Chunk>

GraphRAGガイダンス

グラフ指向の検索用にドキュメントを準備する場合:

  • entitiesを標準的なノードインベントリとして扱う
  • チャンクのentities配列をチャンクからエンティティへのエッジとして扱う
  • dependenciesをチャンク間の前提条件リンクとして扱う
  • タグは広く、エンティティは正確に保つ

エンティティベースのナビゲーションが目標の場合、タグだけに依存しないでください。

多くのエンティティを抽出しない場合

以下の場合は控えめにします。

  • ドキュメントが非常に短い場合
  • ドキュメントが主にナラティブでドメイン用語が少ない場合
  • 同じ概念が有用な区別なしに繰り返されている場合
  • ソースがノイズが多く、エンティティ抽出がジャンクノードを生成する場合

これらの場合、より小さくクリーンなエンティティセットを返します。

バリデーション

変換後、以下を確認します。

  1. すべての<Chunk> IDがchunksに存在すること
  2. すべてのchunks[].entities参照がentitiesに存在すること
  3. エンティティIDが一意で標準的であること
  4. チャンクIDが一意であること
  5. ネストされたチャンクが存在しないこと
  6. contextフィールドが類似チャンクを区別していること
  7. 汎用的またはノイズの多いエンティティが削除されていること
python3 scripts/validate_chunks.py path/to/document.md

診断

ユーザーが診断を依頼した場合、チャンクの品質とエンティティの品質の両方を確認します。

チェックカテゴリ

  1. チャンクの類似性
    • 検索時に区別がつかないほど類似しているチャンクをフラグ付けする
  2. コンテキスト品質
    • 曖昧、反復的、または過度に短いコンテキストフィールドをフラグ付けする
  3. タグの重複
    • あらゆる場所に出現し、フィルタリングに役立たなくなったタグをフラグ付けする
  4. エンティティノイズ
    • 汎用的または低価値のエンティティをフラグ付けする
  5. エンティティの重複
    • 1つの標準的なノードにマージされるべきエイリアスをフラグ付けする
  6. チャンクとエンティティのリンク
    • 欠落、過剰、または無関係なエンティティリンクを持つチャンクをフラグ付けする

診断プロンプト

診断のみ:

このドキュメントのチャンクとエンティティの品質問題をチェックしてください

…

[翻訳切り詰め]

関連スキル