learning-graph-generator について
learning-graph-generatorは、コースの説明から概念の依存グラフを作るスキルです。インテリジェントな教科書の作成者向けに、概念の整理、グラフ検証、学習経路データの生成を支援します。
主な機能
- 01コース説明の品質評価
- 02概念ラベルの生成
- 03依存グラフの作成
- 04DAGと連結性の検証
- 05概念インパクトスコアの算出
- 06MkDocsナビゲーションの案内
活用シーン
- 01大量の概念を導けるコース概要か評価
- 02インテリジェントな教科書の概念案作成
- 03前提関係の循環や分断の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dmccreary/ ibook-skills --skill learning-graph-generatorインストール後、Claude Code で/learning-graph-generatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
add-taxonomy.pyanalyze-graph.pycsv-to-json.pyindex-template.mdlearning-graph-schema.jsonREADME.mdtaxonomy-distribution.pytest-learning-graph.csvvalidate-learning-graph.pyvalidate-learning-graph.shvis-network-json-format.md詳細
学習グラフジェネレーター
バージョン: 1.07
変更履歴
-
v1.07 — バージョンは、SKILL.md のフロントマターに
metadata.ibook.versionとして記録されるようになりました。厳格なパッケージ検証では、仕様で定められた6つのフィールド以外のフロントマターキーが拒否されるため、単独のversion:キーではなくmetadata:の下にあります。動作に変更はありません。 -
v1.06 — 破壊的変更:
csv-to-json.py(v1.04 に更新)で、すべてのノードの 概念影響スコア(CIS) を計算し、learning-graph.jsonにnode.cisとして書き込むようになりました。CIS は PageRank 方式の再帰的な重要度指標で、CIS(x) = 1 + sum(CIS(d) for d in direct dependents of x)と表されます。これは、書籍全体の理解が概念にどの程度、推移的に依存しているかを捉えます。通常の入次数とは異なり、直接には依存する概念が少なくても、間接的には多くの概念の基礎となっている概念(一般的な代数コースにおける「定数」や「係数」など)を過小評価しません。グラフは DAG であるため、CIS はトポロジカル順序での1回の走査で正確に計算され、減衰係数や反復処理は不要です。下流のスキル(book-installerのグラフビューアー、book-chapter-generator、chapter-content-generator)は、独自の重要度指標を再計算せず、このフィールドを直接読み取るようになりました。完全な導出については、スキーマのnodes[].cisフィールドと「Predicting Concept Content Size」論文(定義3、命題1)を参照してください。これはlearning-graph.jsonの出力形式に対する破壊的変更です(フィールドの追加なので既存のリーダーは壊れませんが、下流のスキルではこのフィールドが存在することを前提とします)。更新されたbook-chapter-generatorまたはchapter-content-generatorを実行する前に、既存の書籍のlearning-graph.jsonを再生成してください。 -
v0.06 — (以前の履歴はこの変更履歴形式では記録されていません)
コースの説明から、包括的で高品質な学習グラフを生成します。 学習グラフは、学習経路を推奨できるインテリジェントな教科書の基盤となるデータ構造です。 学習グラフは、学生が学習目標を達成するための概念のロードマップのようなものです。 学習グラフは DAG 概念グラフです。各矢印は、学習順序を示唆する「学習依存関係」を表します。 生成する Markdown は、mkdocs 版の Markdown と互換性がある必要があります。リストの前には必ず空行を入れてください。
以下の手順に注意深く従ってください。
Markdown 生成ルール
- Markdown のリストの前には必ず空行を入れてください。これは mkdocs の Markdown ツールで必要です。
Mkdocs ナビゲーションルール
Markdown ファイル(拡張子が .md のファイル)を追加したら、必ずそのファイルを mkdocs.yml ファイルのナビゲーション構造に追加してください。
以下は、学習グラフセクションの nav の例です。
- Learning Graph:
- Introduction: learning-graph/index.md
- Course Description Assessment: learning-graph/course-description-assessment.md
- Concept Enumeration: learning-graph/list-concepts.md
- Graph Quality Analysis: learning-graph/graph-quality-analysis.md
- Concept Taxonomy: learning-graph/concept-taxonomy.md
- Taxonomy Distribution Report: learning-graph/taxonomy-distribution-report.md
ステップ 0:セットアップ
ユーザーに、グラフジェネレーターのバージョンと上記のバージョン番号を実行していることを伝えてください。
デフォルトでは、GitHub からチェックアウトしたインテリジェントな教科書のホームディレクトリで、claude code からこのスキルを実行します。 Git ホームディレクトリには、標準的な mkdocs.yml ファイルを含む docs ディレクトリがあるはずです。 存在しない場合は、/docs/learning-graph というディレクトリを作成します。 パスは Git ホームディレクトリからの相対パスです。/docs は、claude を起動したディレクトリからの相対パスであることを前提とします。
mkdir -p docs/learning-graph; cd docs/learning-graph
このスキルパッケージから Python プログラムを /docs/learning-graph ディレクトリにコピーします。
Python はこのディレクトリから実行します。
docs ディレクトリと mkdocs.yml ファイルが見つからない場合は、次の場所からサンプルの教科書をクローンするようユーザーに提案してください。
git clone https://github.com/dmccreary/intelligent-book-template
cd intelligent-book-template
ステップ 1:コース説明の品質評価
このステップを始める前に、すでに実施済みでないことを確認してください。
確認するには、docs/course-description.md ファイルの yml メタデータを確認します。
yml メタデータの例を以下に示します。
---
title: Course Description
description: A detailed course description
quality_score: 95
---
# Course Description
quality_score が 85 を超えている場合は、85 を超えるスコアが見つかったことをユーザーに伝え、このステップ全体をスキップして構いません。これはトークンの節約になる方法だと伝えてください。
quality_score が 85 未満の場合は、提示されたコース説明 course-description.md を分析し、少なくとも 300 個の高品質な概念を生成するのに十分な内容があることを確認してください。
- コースにタイトル、前提条件、対象者、目標、および成果(「このコースを修了すると、学生は次のことができるようになります」)が含まれているか確認します。これらの項目が不足している場合は、情報をユーザーに尋ねてください。
- 扱うトピックの深さと幅を調べます
- 少なくとも 300 個の個別の概念を抽出できるだけの粒度があるか評価します
- 多様なトピック領域と学習目標が含まれているか確認します
- 次の内容について、詳細なフィードバックをユーザーに提供します。
- 見つかった想定コンテンツを一覧表示する
- 抽出できる概念の推定数
- この概念数を類似コースと比較する
- コース説明の優れている点を説明する
- 不足している領域や、十分に扱われていない可能性のある領域
- 2001 年版ブルームの分類法(記憶する、理解する、応用する、分析する、評価する、創造する)が、成果の記述をどのように改善できるか提案する
- 1(低品質)から 100(完璧)までの尺度で、客観的な総合品質評価を示す
- 品質スコアが 70 以上になるまで先に進まないよう、ユーザーに提案する
品質スコアの算出には、次のルーブリックを使用してください。
2.2 コース説明の品質スコアリングシステム
次の 100 点満点のスコアリングシステムを使って、コース説明を評価します。
| 項目 | 点数 | 基準 |
|---|---|---|
| タイトル | 5 | 明確で説明的なコースタイトルがある |
| 対象者 | 5 | 対象者が具体的に示されている(例:「大学学部生」) |
| 前提条件 | 5 | 前提条件が記載されている、または「なし」と明記されている |
| 主な対象トピック | 10 | トピックの包括的な一覧がある(理想的には 5~10 項目) |
| 対象外のトピック | 5 | 扱わない内容の範囲が明確に定められている |
| 学習成果の見出し | 5 | 「このコースを修了すると、学生は次のことができるようになります」という明確な記述がある |
| 記憶するレベル | 10 | 記憶または想起に関する具体的な成果が複数ある |
| 理解するレベル | 10 | 理解または説明に関する具体的な成果が複数ある |
| 応用するレベル | 10 | 応用または使用に関する具体的な成果が複数ある |
| 分析するレベル | 10 | 分析または分解に関する具体的な成果が複数ある |
| 評価するレベル | 10 | 評価または判断に関する具体的な成果が複数ある |
| 創造するレベル | 10 | 創造または統合に関する具体的な成果が複数あり、総括課題のアイデアを含む |
| 説明的な背景情報 | 5 | コースの重要性、関連性、または価値についての補足情報がある |
採点ガイドライン:
- 項目が完全かつ高品質であれば満点を付与します
- 項目が記載されていても不完全または曖昧な場合は部分点を付与します
- 項目がない場合は 0 点を付与します
- ブルームの分類法の各レベルでは、満点を付与するために、具体的で実行可能な成果が少なくとも 3 つ必要です
スコアをユーザーに伝え、スコアが 80 を超えるまでコース説明を改善するよう提案してください。
このレポートを course-description-assessment.md に保存します。
- 学習グラフの生成を進めるかどうか、ユーザーに尋ねてください
ステップ 2:概念ラベルを生成する
コースの説明が承認されたら、コースの内容から概念ラベルを生成します。
要件:
- 各概念ラベルはタイトルケースにします
- 最大文字数:32文字
- ラベルは明確かつ具体的で、教育的に適切なものにします
- コース教材の全体を網羅します
- 概念ラベルはエンティティ名であり、質問ではありません
- 概念ラベルに質問を使わないでください。「Git とは何か」ではなく、「Git」のようにします
概念の数:
簡単な書籍の場合、300個の概念をリストアップしても問題ありません。 複雑な技術書の場合、最大600個の概念を生成できます。 十分な理由があり、ユーザーがこの判断を承認した場合を除き、600個を超えないでください。 概念が増えるほど、概念間の依存関係の生成が複雑になることを覚えておいてください。
!!! note これらの概念ラベルはネットワークグラフ内で使用されるため、長くしすぎないでください。 長すぎると、グラフが読みづらくなります。
出力:
- 番号付きリストを concept-list.md に保存します
- 形式:Markdown ファイル内のシンプルな番号付きリスト(1~600)
- 各番号が一意であり、ConceptID として使用できることを確認します
- ファイルを作成したことをユーザーに伝えます
- リストを確認し、概念を追加・削除するようユーザーに伝えます
- 次のステップに進む前に概念リストを確認するのが望ましいと伝えます
ここで、ユーザーに時間をかけて概念ラベルのリスト全体を手作業で確認するよう依頼します。 適切でない概念があれば、この時点で削除してもらいます。 追加が必要な概念があれば、この時点で追加してもらいます。 後から内容を変更するには、多くの追加トークンが必要になります。 これは教科書の品質を確保するための重要な確認ステップです。 概念ラベルの長さと略語の適切さに特に注意してもらいます。
ステップ 3:依存関係グラフを生成する
概念間の依存関係を対応付ける CSV ファイルを作成します。
形式:
- ファイル名:learning-graph.csv
- 列:
ConceptID,ConceptLabel,Dependencies - ConceptID:整数(1~600)
- ConceptLabel:ステップ 2 のラベルと完全に一致するもの
- Dependencies:ConceptID をパイプで区切ったリスト(例:「1|3|7」)
依存関係のルール:
- 基礎となる概念/前提概念に依存関係を設定しません(Dependencies フィールドは空欄)
- それ以外のすべての概念には、少なくとも1つの依存関係が必要です
- 概念がそれ自体に依存することはできません
- グラフは有向非巡回グラフ(DAG)でなければなりません。つまり、循環があってはなりません
- 単なる直線的な連鎖ではなく、意味のある学習経路を作成します
- 前提関係を慎重に検討します
注: JSON ファイルは、CSV ファイルに分類体系を追加した後、後のステップ(ステップ 7~8)で作成されます。完成した JSON には、learning-graph-schema.json に準拠するメタデータ、グループ、ノード、エッジの各セクションが含まれます。
ステップ 4:学習グラフの品質検証
このスキルの Python プログラム analyze-graph.py を使用して、
依存関係グラフの包括的な品質チェックを実行します。
次のチェックが行われます。
- DAG 構造の検証:循環がないことを確認します
- 自己依存の確認:概念が自身に依存していないことを確認します
- 基礎概念:依存関係がゼロの概念を特定します
- 終端ノード:どの概念からも依存されていない概念(リーフノード)を特定します。これらは有効で想定されるものであり、接続がまったくない孤立ノードと混同しないでください
- 非連結サブグラフ:すべての概念がメイングラフに接続されているか確認します
- 直線的なチェーン:直前の概念のみに依存する概念が多すぎないか警告します
- 入次数の分析:各概念の入次数(その概念に依存する概念の数)を計算します
シェルコマンド python analyze-graph.py learning-graph.csv quality-metrics.md
レポートが quality-metrics.md に書き込まれていることを確認します
学習グラフの品質指標レポートを生成します:
- 依存関係がゼロの概念の合計数(外向き矢印、基礎となる前提概念)
- 依存関係が 1 つ以上ある概念の合計数
- 概念あたりの依存関係数の平均
- 依存関係チェーンの最大長
- 他の概念から依存されていない終端(リーフ)ノードの数
- 非連結サブグラフの数
- 入次数が最も高い概念の上位 10 件(最も多く依存される概念)
ユーザーに 1(低品質)から 100(完璧)までの尺度で総合的な品質スコアを提示します。 学習グラフのスコアが 70 を超えない場合は、ユーザーにプロセスを繰り返して改善するよう提案します
ステップ 5:概念の分類体系を作成する
概念を整理するための分類体系を作成します。
要件:
- 目標:約 12 カテゴリ(自然なまとまりが見つかる場合は 2~3 カテゴリ増減してもかまいません)
- 概念が各カテゴリに均等に分布するようにします
- いずれかのカテゴリが概念全体の 30% を超えないようにします
- タイトルケースとスペースを使った、明確でわかりやすいカテゴリ名にします
- 各カテゴリに 3~5 文字の略称(TaxonomyID)を作成します
- 学習グラフの groups セクションを構成するため、分類体系の JSON 表現を作成することに注意してください
出力:
- 分類体系を concept-taxonomy.md に保存します
- 次の内容を含む Markdown 形式にします:
- カテゴリ名
- TaxonomyID の略称(3~5 文字の大文字)
- どのような概念がこのカテゴリに属するかの簡潔な説明
ステップ 5b:分類名の JSON を作成する
重要なステップ — これにより、グラフビューアーの凡例やレポートに、人が読める名前ではなく分類 ID が表示されるというよくある不具合を防ぎます。
concept-taxonomy.md から分類 ID と人が読める名前の対応関係を抽出し、JSON ファイルとして保存します。
作成するファイル: taxonomy-names.json
形式:
{
"FOUND": "Foundation Concepts",
"EDA1": "Exploratory Data Analysis I",
"EDA2": "Exploratory Data Analysis II",
"REG": "Regression & Correlation",
...
}
ルール:
- キーは TaxonomyID の略称(大文字、3~5 文字)です
- 値は人が読めるカテゴリ名で、タイトルケースとスペースを使います
- CSV で使用されるすべての分類 ID に、対応する名前が必要です
- 名前は、学習者にとって説明的で意味のあるものにします
このファイルは、csv-to-json.py が learning-graph.json 内に正しい classifierName の値を生成するために必須です。このファイルがない場合、グラフビューアーの凡例には「Exploratory Data Analysis I」ではなく、「EDA1」のような判読しにくい ID が表示されます。
ステップ 6:CSV に分類体系を追加する
依存関係の CSV ファイルを更新します。
- 既存の CSV ファイルに
TaxonomyID列がない場合は追加します - 各概念に、最も適切な TaxonomyID を割り当てます
- 明確に該当するカテゴリがない概念には「MISC」を使用します
- 更新したファイルを learning-graph.csv に保存します
置換処理のテンプレートとして、Python プログラム add-taxonomy.py を使用できます。
最終的な CSV 列: ConceptID,ConceptLabel,Dependencies,TaxonomyID
ステップ 7:learning-graph.json ファイルの metadata セクションを作成する
metadata セクションには、course-description.md ファイルから抽出した教科書の Dublin Core に着想を得たフィールドを含めます。学習グラフの JSON スキーマは、このスキル内の learning-graph-schema.json ファイルにあります。
必須フィールド:
title:コース説明のタイトルから抽出しますdescription:コース説明から抽出するか、要約します
任意ですが、推奨するフィールド:
creator:著者名または組織名date:YYYY-MM-DD 形式の現在の日付version:バージョン番号(例:"1.0")format:"Learning Graph JSON v1.0"schema:JSON スキーマの URLlicense:ライセンス情報(例:"CC BY-NC-SA 4.0 DEED")
metadata セクションの例を以下に示します。
"metadata": {
"title": "Title Text From Course Description",
"description": "A description of the course in a few sentences.",
"creator": "Your Name",
"date": "2025-11-01",
"version": "1.0",
"format": "Learning Graph JSON v1.0",
"schema": "https://raw.githubusercontent.com/dmccreary/learning-graphs/refs/heads/main/src/schema/learning-graph-schema.json",
"license": "CC BY-NC-SA 4.0 DEED"
}
これらのフィールドを含む metadata.json ファイルを作成し、ステップ 9 で csv-to-json.py プログラムに渡すことができます。
ステップ 8:JSON ファイルの groups セクションを作成する
タクソノミーのカテゴリを JSON 形式に変換し、learning-graph.json ファイルの groups セクションにします。学習グラフの JSON スキーマは、このスキル内の learning-graph-schema.json ファイルにあります。
groups セクションでは、視覚化に使う、概念タイプを色で区別した凡例を作成します。
重要:
groupsセクションでは、タクソノミー ID(例:"FOUND"、"DEF")をキーとして使用します- 各グループには、説明的で人が読みやすい名前を含む
classifierNameフィールドが必要です(例:"Foundation Concepts"。単に "FOUND" とするのは不可) - 各グループには、名前付き CSS カラーを使った
colorフィールドが必要です("#E74C3C" のような 16 進数コードは不可) - 各グループには、
colorフィールドを含むfontオブジェクトを設定してください。暗い背景にはwhite、明るい背景にはblackを指定します。csv-to-json.py v1.04 以降では、背景色に基づいて適切なフォント色が自動的に選択されます。
構造の要点:
- グループキー:CSV の TaxonomyID を使用します(大文字で、スペースなし。例:"FOUND")
- classifierName:タイトルケースとスペースを使った、説明的な表示名(例:"Foundation Concepts")。TaxonomyID の略称をそのまま繰り返すのは絶対に避けてください。
- color:以下の推奨される、見分けやすいパレットにある名前付き CSS カラーを使用します。ページの背景色である AliceBlue は避けてください。
- font.color:暗い背景には
white、明るい背景にはblackを指定します。csv-to-json.py によって自動設定されます。
推奨する個別パレット(24 色)
csv-to-json.py v1.04+ のデフォルトパレットは、隣り合う凡例行の色が紛らわしくならず、同系色のグループは明度で区別されるように手作業で調整されています。最大 24 個の異なるカテゴリに十分対応できます。分類体系が多くても視認性を保てるよう、このパレット(またはその一部を、この順序で color-config.json に指定したもの)を使用してください。
| 順序 | 色(CSS 名) | カテゴリの推奨グループ | フォント |
|---|---|---|---|
| 1 | SteelBlue | 基盤 | 白 |
| 2 | DarkSlateBlue | 役割/ガバナンス | 白 |
| 3 | DarkGreen | アーキテクチャ | 白 |
| 4 | LimeGreen | アプリケーション開発 | 黒 |
| 5 | Gold | データ管理 | 黒 |
| 6 | DarkGoldenrod | データガバナンス | 白 |
| 7 | Khaki | ビジネスインテリジェンス | 黒 |
| 8 | Teal | エンタープライズシステム | 白 |
| 9 | DodgerBlue | ネットワーク/通信 | 白 |
| 10 | LightSkyBlue | クラウドコンピューティング | 黒 |
| 11 | Crimson | セキュリティ | 白 |
| 12 | DarkRed | プライバシー/コンプライアンス | 白 |
| 13 | MediumPurple | プロジェクト管理 | 白 |
| 14 | Indigo | プロセス管理 | 白 |
| 15 | DarkOrchid | システム分析・設計 | 白 |
| 16 | HotPink | ヒューマンコンピューターインタラクション | 黒 |
| 17 | OliveDrab | IT サービス管理 | 白 |
| 18 | Orange | AI の機能 | 黒 |
| 19 | Coral | 責任ある AI | 黒 |
| 20 | Peru | AI 法/規制 | 黒 |
| 21 | SaddleBrown | AI セキュリティ | 白 |
| 22 | Tomato | AI の生産性 | 白 |
| 23 | DeepPink | ナレッジグラフ/アクセント | 白 |
| 24 | DimGray | 新興分野/その他 | 白 |
デザインの根拠:
- 分野グループごとの色相分類 — 基盤とインフラには寒色系の青、構築/アーキテクチャには緑、データ領域には黄色/金色、セキュリティには赤、プロジェクト/プロセスには紫、AI グループにはオレンジ/茶色を使い、ナレッジグラフにはつながりを表すアクセントカラー(DeepPink)、新興分野には無彩色のグレーを使います。
- 同じ色相グループ内では明度を交互に変えます。そのため、隣り合う色が紛らわしくなりません(Gold → DarkGoldenrod、DodgerBlue → LightSkyBlue、MediumPurple → Indigo など)。
- 暗い背景には白いテキスト、明るい背景には黒いテキストを使います —
csv-to-json.pyv1.04+ がこれを自動的に適用します。暗い色には SteelBlue、DarkSlateBlue、DarkGreen、DarkGoldenrod、Teal、DodgerBlue、Crimson、DarkRed、MediumPurple、Indigo、DarkOrchid、OliveDrab、SaddleBrown、Tomato、DeepPink、DimGray が含まれます。
color-config.json(推奨)
選択したパレットを docs/learning-graph/color-config.json に保存すると、今後再生成する際にも、分類体系 ID ごとの割り当てを正確に維持できます。例:
{
"FOUND": "SteelBlue",
"ROLE": "DarkSlateBlue",
"ARCH": "DarkGreen",
"APPDEV": "LimeGreen",
"DATA": "Gold",
"SEC": "Crimson",
"MISC": "DimGray"
}
csv-to-json.py に渡します:python csv-to-json.py learning-graph.csv learning-graph.json color-config.json metadata.json taxonomy-names.json
groups セクションの例
"groups": {
"FOUND": {
"classifierName": "Foundation Concepts",
"color": "SteelBlue",
"font": { "color": "white" }
},
"DATA": {
"classifierName": "Data and Information Management",
"color": "Gold",
"font": { "color": "black" }
},
"SEC": {
"classifierName": "Security of Information Assets",
"color": "Crimson",
"font": { "color": "white" }
},
"AIIS": {
"classifierName": "AI in Information Systems",
"color": "Orange",
"font": { "color": "black" }
},
"MISC": {
"classifierName": "Miscellaneous Concepts",
"color": "DimGray",
"font": { "color": "white" }
}
}
注: csv-to-json.py プログラムは、CSV ファイル内で見つかった分類体系に基づいて groups セクションを自動的に生成します。color-config.json がない場合は、凡例の順序に従ってデフォルトの 24 色パレットから順に色を割り当てます。色はすでに区別しやすくなっていますが、再生成後も割り当てが変わらないよう、color-config.json を保存しておくことを推奨します。
ステップ 9:完全な Learning Graph JSON を生成する
metadata.json ファイル(ステップ 7)と taxonomy-names.json(ステップ 5b)を作成し、分類情報を付与した CSV(ステップ 6)を用意したら、csv-to-json.py プログラムを実行して、完全な learning-graph.json ファイルを生成します。
python csv-to-json.py learning-graph.csv learning-graph.json color-config.json metadata.json taxonomy-names.json
重要: グラフビューアーの凡例に人が読みやすいカテゴリ名を表示するには、taxonomy-names.json ファイルを強く推奨します。このファイルがない場合、適切な名前(「探索的データ分析 I」など)の代わりに、分類 ID(「EDA1」など)が表示名として使用されます。
このコマンドは、次の処理を行います。
- learning-graph.csv ファイル(ConceptID、ConceptLabel、Dependencies、TaxonomyID 列を含む)を読み込みます。
- metadata.json のメタデータを使用します。
classifierNameフィールドに taxonomy-names.json の人が読みやすい名前を使用します。- CSV 内の分類に基づいて groups セクションを自動生成します。
- 適切なグループ参照(TaxonomyID を使用)を含むノードを作成します。
- 依存関係に基づいてエッジを作成します。
- すべてのノードの Concept Impact Score(CIS)を計算し、
node.cisとして設定します(上記の変更履歴を参照)。 - スキーマに準拠した完全な learning-graph.json ファイルを出力します。
- 人が読みやすい名前が設定されていない分類 ID があれば、警告を出します。
learning-graph.json ファイルが存在し、有効であることを確認します。コンソール出力には CIS 上位 10 件の概念が表示されます。それらがコースの真に基礎的な概念(幅広く依存される概念)であり、限定的な末端のトピックではないことを確認してください。限定的または高度な概念が CIS の上位に表示される場合、エッジの方向が逆になっている可能性が非常に高いです(原因を特定する方法については、book-chapter-generator スキルのエッジ方向の検証を参照してください)。
必要に応じて、次のコマンドで JSON をスキーマに照らして検証できます。
./validate-learning-graph.sh learning-graph.json
ステップ 10:分類分布レポート
分布分析を生成します。
- 各カテゴリの概念数を数えます。
- 割合を計算します。
- 過剰に占めるカテゴリ(30%超)を特定します。
- 必要に応じて代替の分類を提案します。
このスキルに含まれる Python レポート taxonomy-distribution.py を使用します。
出力:
- taxonomy-distribution.md に保存します。
- 次の列を含む Markdown テーブル形式にします。
- カテゴリ名
- TaxonomyID
- 件数
- 割合
ステップ 11:index-template.md から新しい index.md を作成する
このスキルにある index-template.md から、learning-graph ディレクトリに新しい index.md ファイルを作成します。
新しい index.md ファイルをカスタマイズし、このインテリジェントブックの名前を反映させます。すべて大文字の値(TEXTBOOK_NAME)を探し、
適切な値に置き換えてください。
ステップ 12:セッションログを作成する
セッションログを logs/learning-graph-generator-VERSION-DATE.md にエクスポートします。
ここで:
- VERSION は、このスキルのバージョンです。
- DATE は、本日の日付を ISO 形式 yyyy-mm-dd で表したものです。
セッションログには、使用した Python プログラムのバージョンも記録してください。 たとえば、セッションログで csv-to-json.py Python プログラムのバージョンを記録しない、といった誤りがないようにしてください。 これはデバッグに重要です。
ステップ 13:完了
学習グラフの生成が完了したことをユーザーに伝えます!お祝いの言葉を述べ、教科書やコース教材の作成がうまくいくよう願いましょう。
学習グラフを表示したい場合は、/book-installer スキルを install learning graph ガイドとともに実行すると、@docs/sims/graph-viewer にマイクロシミュレーションが作成されることを伝えます。
このステップは任意ですが、強くおすすめします。
次の論理的なステップは /book-chapter-generator スキルの実行ですが、その前に章の概要、概念リスト、概念の分類体系、学習グラフを確認することが重要だと伝えます。
章のコンテンツ生成には大量のトークンが必要になるため、各章の概要と概念リストが完全であることを確認しておくのが最善です。
作成されたファイル:
- course-description-assessment.md - コース説明の品質評価
- concept-list.md - 最大600件の番号付き概念リスト
- learning-graph.csv - 分類体系を含む完全な依存関係グラフ
- taxonomy-names.json - 分類体系IDと人が読みやすい名前の対応表(グラフビューアーに必須)
- metadata.json - 学習グラフのメタデータ(タイトル、説明、作成者など)
- learning-graph.json - vis-network.js の JSON 形式による、メタデータ、グループ、ノード、エッジを含む完全な学習グラフ
- concept-taxonomy.md - カテゴリーの定義
- quality-metrics.md - 品質検証レポート
- taxonomy-distribution.md - カテゴリーの分布分析
- index.md - 学習グラフのセクションの紹介ページ
重要な注意事項
- プロセス全体を通じて、教育上の整合性を保ってください
- 依存関係には、実際に必要となる前提知識を反映してください
- 細かさと網羅性のバランスを取ってください
- 概念が論理的に積み上がっていくようにしてください
- 学習グラフは、単一の直線的な経路だけでなく、複数の学習経路をサポートする必要があります