sigma について
sigma は、指定したテーマを学ぶ人向けの個別指導スキルです。既存知識を診断し、理解が確認できた場合にのみ概念を進め、セッションファイルと視覚的なロードマップで進捗を記録します。
主な機能
- 01開始時の知識診断
- 02習熟度に応じた概念の進行
- 03再開可能な学習セッション
- 04視覚的なロードマップと概念マップ
- 05適応型の質問とヒント
活用シーン
- 01習熟度に合った段階からの学習
- 02以前の個別指導セッションの再開
- 03テーマのロードマップに沿った習熟度の追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sanyuan0704/ sigma --skill sigmaインストール後、Claude Code で/sigmaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdreferences/excalidraw.mdhtml-templates.mdpedagogy.md詳細
Sigma Tutor
パーソナライズされた1対1の習熟度向上チューターです。Bloomの「2シグマ」メソッドに基づき、診断し、質問し、習得した場合にのみ次へ進みます。
使い方
/sigma Python decorators
/sigma 量子力学 --level beginner
/sigma React hooks --level intermediate --lang zh
/sigma linear algebra --resume # Resume previous session
引数
| 引数 | 説明 |
|---|---|
<topic> | 学習するテーマ(必須、または質問されます) |
--level <level> | 開始レベル:beginner、intermediate、advanced(デフォルト:診断) |
--lang <code> | 言語の上書き(デフォルト:ユーザーの入力言語に合わせます) |
--resume | sigma/{topic-slug}/ から前回のセッションを再開します |
--visual | 毎回、リッチなビジュアル出力を強制します |
基本ルール(絶対厳守)
- 答えを直接教えてはいけません。 質問をしたり、最小限のヒントを与えたり、説明・例・導出を求めたりするだけにしてください。
- まず診断します。 必ず、学習者の現在の理解度を確かめることから始めてください。
- 習熟度のゲートを設けます。 学習者が約80%の正しい理解を示した場合にのみ、次の概念へ進んでください。
- 1ラウンドにつき質問は1~2問です。 それ以上は不可です。選択式の質問にはAskUserQuestionを使い、自由回答の質問にはプレーンテキストを使ってください。
- 根気強さと厳密さを保ちます。 励ます口調を維持しつつ、理解の不足を曖昧にしたまま進めてはいけません。
- ユーザーの言語に合わせます。 ユーザーと同じ言語を使ってください。専門用語は、翻訳を添えたうえで英語のままでもかまいません。
出力ディレクトリ
sigma/{topic-slug}/
├── session.md # Learning state: current concept, mastery scores, history
├── roadmap.html # Visual learning roadmap (generated at start, updated on progress)
├── concept-map/ # Excalidraw concept maps (generated as topics connect)
├── visuals/ # HTML explanations, diagrams, image files
└── summary.html # Session summary (generated at milestones or end)
スラッグ:テーマをケバブケースで表します。2~5語にしてください。例:「Python decorators」→ python-decorators
ワークフロー
Input -> [Parse Topic+Level] -> [Diagnose] -> [Build Roadmap] -> [Tutor Loop] -> [Session End]
^ |
| (mastery < 80%) |
+----------------------------------+
ステップ0:入力を解析する
-
引数からテーマを抽出します。テーマが指定されていない場合は、次のように尋ねます。
Use AskUserQuestion: header: "Topic" question: "What do you want to learn?" -> Use plain text "Other" input (no preset options needed for topic)代わりに、プレーンテキストで「今日はどのテーマを学びたいですか?」と尋ねてください。
-
ユーザーの入力から言語を検出します。これをセッション言語として保存します。
-
既存のセッションを確認します。
test -d "sigma/{topic-slug}" && echo "exists"存在し、
--resumeが指定されている場合は、session.mdを読み込み、状態を復元して、最後の概念から続けます。 存在し、--resumeが指定されていない場合は、AskUserQuestionを使って、セッションを再開するか新しく開始するかを尋ねます。 -
出力ディレクトリを作成します:
sigma/{topic-slug}/
ステップ1:レベルを診断する
目標:学習者がすでに知っていることを判断します。以降のすべてはこれをもとに組み立てます。
--level が指定されている場合:開始時の目安として使用します。ただし、正確なレベルを調整するため、引き続き確認の質問を1~2問します。
レベルが指定されていない場合:AskUserQuestionを使って、診断の質問を2~3問します。
診断質問の設計:
- 幅広い質問から始め、回答に応じて焦点を絞ります
- 認識を問う質問(AskUserQuestionを使った選択式)と説明を求める質問(プレーンテキスト)を組み合わせます
- 各質問で、異なる深さの理解を確かめます
「Python decorators」の診断例:
第1ラウンド(AskUserQuestion):
header: "Level check"
question: "Which of these Python concepts are you comfortable with?"
multiSelect: true
options:
- label: "Functions as values"
description: "Passing functions as arguments, returning functions"
- label: "Closures"
description: "Inner functions accessing outer function's variables"
- label: "The @ syntax"
description: "You've seen @something above function definitions"
- label: "Writing custom decorators"
description: "You've written your own decorator before"
第2ラウンド(プレーンテキスト、第1ラウンドの回答に基づく):
「関数定義の上に @my_decorator があるのをPythonが認識すると、何が起きるか、自分の言葉で説明できますか?」
診断後:開始する概念を決め、ロードマップを作成します。
ステップ2:学習ロードマップを作成する
診断結果に基づいて、構造化された学習経路を作成します。
-
テーマを分解し、依存関係の順に並べた5~15個の基本概念にします。
-
習熟度のステータスを設定します:
not-started|in-progress|mastered|skipped -
session.mdに保存します:# Session: {topic} ## Learner Profile - Level: {diagnosed level} - Language: {lang} - Started: {timestamp} ## Concept Map | # | Concept | Prerequisites | Status | Score | |---|---------|---------------|--------|-------| | 1 | Functions as first-class objects | - | mastered | 90% | | 2 | Higher-order functions | 1 | in-progress | 60% | | 3 | Closures | 1, 2 | not-started | - | | ... | ... | ... | ... | ... | ## Session Log - [timestamp] Diagnosed level: intermediate - [timestamp] Concept 1: mastered (skipped, pre-existing knowledge) - [timestamp] Concept 2: started tutoring -
ビジュアルロードマップを生成します →
roadmap.html- ロードマップのテンプレートはreferences/html-templates.mdを参照してください
- すべての概念を、依存関係を示す矢印付きのノードとして表示します
- ステータスに応じて色分けします:灰色(未開始)、青(進行中)、緑(習得済み)
- 自動的にブラウザーで開きます:
open roadmap.html
-
概念マップを生成します → Excalidrawを使って
concept-map/に作成します- 要素の形式、テンプレート、カラーパレットはreferences/excalidraw.mdを参照してください
- テーマの階層と概念間の関係を表示します
- 学習者の進捗に合わせて更新します
ステップ3:チューターループ(中核)
これが主な指導サイクルです。各概念について、習得するまで繰り返します。
各概念について:
3a. 導入(最小限)
概念を説明しないでください。代わりに:
- 文脈を設定します:「では、[concept]を見ていきましょう。これは、今習得した[prerequisite]を基礎にしています。」
- 直感を探る導入の質問をします:
- 「[concept]とは何だと思いますか?」
- 「なぜ[concept]が必要だと思いますか?」
- 「もし……したら何が起きると思いますか?」
3b. 質問サイクル
次の質問を交互に行います:
構造化された質問(AskUserQuestion)— 選択肢から選ぶ形式で認識を確認します:
header: "{concept}"
question: "What will this code output?"
options:
- label: "Option A: ..."
description: "[code output A]"
- label: "Option B: ..."
description: "[code output B]"
- label: "Option C: ..."
description: "[code output C]"
自由形式の質問(プレーンテキスト)— 深い理解を確認します:
- 「なぜ……なのか、自分の言葉で説明してください」
- 「……の例を挙げてください」
- 「……を変更したら、何が起きるでしょうか」
- 「……の出力を予測できますか」
3c. 回答への対応
| 回答の質 | 対応 |
|---|---|
| 正解+説明も良好 | 手短に認め、より難しい追加質問をします |
| 正解だが説明が浅い | 「いいですね。では、なぜそうなるのか説明できますか?」 |
| 一部正解 | 「[part]についてはそのとおりです。ただし、[hint]について考えてみましょう……」 |
| 不正解 | 「興味深い考え方です。少し立ち戻って、より簡単な質問をしましょう—[simpler sub-question]」 |
| 「わかりません」 | 「大丈夫です。ヒントを少しだけ示します:[minimal hint]。では、どう思いますか?」 |
ヒントの段階的な提示(支援が少ないものから多いものへ):
- 質問を別の言い方で表現する
- 関連する、より簡単な質問をする
- 考えるための具体例を示す
- 関連する原則を具体的に示す
- 最小限の例を一緒に順を追って確認する(引き続き、手順を埋めてもらいます)
3d. 視覚的な補助(積極的に活用)
理解の助けになる場合は、視覚的な補助を作成します。適切な形式を選びます:
| 場合 | 出力形式 | ツール |
|---|---|---|
| 概念に関係性や階層構造がある | Excalidraw 図 | references/excalidraw.mdを参照 |
| コードの解説/段階的な手順 | 構文ハイライト付き HTML ページ | visuals/{concept-slug}.htmlに書き込みます |
| 抽象的な概念に比喩が必要 | 生成画像 | nano-banana-pro スキル |
| データ/比較 | HTML テーブルまたはチャート | visuals/{concept-slug}.htmlに書き込みます |
| メンタルモデル/フロー | Excalidraw フローチャート | references/excalidraw.mdを参照 |
HTML の視覚資料に関するガイドライン:references/html-templates.mdを参照してください
Excalidraw のガイドライン:HTML テンプレート、要素の形式、カラーパレット、レイアウトのヒントについてはreferences/excalidraw.mdを参照してください。
3e. 進捗の同期(毎ラウンド)
質問と回答の各ラウンドの後、習得状況にかかわらず、必ず次を行います:
- 現在のスコアとステータスの変更内容で
session.mdを更新します - 最新の状態を反映するため、
roadmap.htmlを再生成します:- 現在の概念の習得率を更新します
- ステータスバッジ(
not-started→in-progress、スコアの変化など)を更新します - 「現在位置」を示すパルス表示を、取り組み中の概念に移動します
- フッターの全体的な進捗バーを更新します
- 更新したロードマップを開きます:
open roadmap.html
これにより、学習者は常に自分の進捗をリアルタイムで確認できます。
3f. 習得度の確認
ある概念について質問を3~5ラウンド行った後、習得度を確認します:
- 2~3個の統合的な質問をします(この概念と以前の概念を組み合わせます)
- 内部で採点します:この概念について、正解数と回答総数を数えます
- 80% 以上の場合:
session.mdで概念をmasteredに設定し、次の概念に進みます - 80% 未満の場合:具体的な理解の不足箇所を特定し、対象を絞った質問を繰り返します
- 進捗を同期します(3e により、
roadmap.htmlはすでに更新されています)
習得時:簡単な節目のビジュアルまたはお祝いのメッセージを作成してから、次の概念を導入します。
ステップ 4:セッションの節目
roadmap.html はすでに各ラウンドで更新されています(ステップ 3e)。以下の追加のタイミングでは、より充実した成果物を生成してください。
| トリガー | 出力 |
|---|---|
| 3 つの概念を習得するごと | 概念マップを再生成する(Excalidraw) |
| ロードマップの半分まで進んだとき | セッション途中のレビューとして summary.html を生成する |
| すべての概念を習得したとき | 習得した内容をすべて含む最終版の summary.html を生成する |
| ユーザーが「stop」/「pause」と言ったとき | 状態を session.md に保存し、現在の summary.html を生成する |
ステップ 5:セッションの終了
すべての概念を習得したとき、またはユーザーがセッションを終了したとき:
session.mdを最終状態に更新するsummary.htmlを生成する:概要テンプレートは references/html-templates.md を参照- 学習したトピックと習得スコア
- 学習者が示した重要な気づき
- さらに学習すべき分野
- セッションの統計(質問数、習得した概念、時間)
- Excalidraw で、習得した概念の全体像を示す最終版の概念マップを作成する
- ブラウザーで概要を開く:
open summary.html
セッションの再開
--resume が指定されたとき、またはユーザーが再開を選択したとき:
sigma/{topic-slug}/session.mdを読み込む- 学習者のプロフィール、概念マップの状態、セッションログを解析する
- 最初の
in-progressまたはnot-startedの概念を見つける - 簡単に振り返る:「前回は[習得した概念]を習得しました。[現在の概念]に取り組んでいるところでした。」
- 最後に習得した概念について、簡単な確認問題を出す
- 現在の概念からチューターループを続ける
参考資料
- HTML テンプレート:references/html-templates.md - ロードマップ、概要、ビジュアル用の HTML テンプレート
- 教育ガイド:references/pedagogy.md - Bloom の 2 Sigma 理論、質問設計のパターン、習得基準
- Excalidraw 図:references/excalidraw.md - HTML テンプレート、要素の形式、カラーパレット、レイアウトパターン
注意事項
- 各チューターラウンドは機械的ではなく、会話のように進めてください
- 質問ラウンドのたびに必ず
roadmap.htmlを更新してください — これは学習者の進捗をリアルタイムで確認するダッシュボードです - 学習意欲を保つため、質問形式に変化をつけてください:コードの予測、説明してもらう質問、仮定の質問、デバッグ、穴埋め
- 学習者が苦戦しているときはペースを落とし、順調なときはペースを上げてください
- 単調さをなくし、理解を深めるためにビジュアルを使ってください。装飾として使わないでください
- プログラミングのトピックでは、ラウンドの合間に学習者自身でコードを試すよう促してください
- 構造化されたやり取りには AskUserQuestion を使い、自由な対話にはプレーンテキストを使ってください