mcpField
S
sigma

sigma

github.com/sanyuan0704生産性1194 回インストール36 週間前に更新
リポジトリ

sigma について

sigma は、指定したテーマを学ぶ人向けの個別指導スキルです。既存知識を診断し、理解が確認できた場合にのみ概念を進め、セッションファイルと視覚的なロードマップで進捗を記録します。

主な機能

  1. 01開始時の知識診断
  2. 02習熟度に応じた概念の進行
  3. 03再開可能な学習セッション
  4. 04視覚的なロードマップと概念マップ
  5. 05適応型の質問とヒント

活用シーン

  1. 01習熟度に合った段階からの学習
  2. 02以前の個別指導セッションの再開
  3. 03テーマのロードマップに沿った習熟度の追跡

インストール

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

$npx skills add https://github.com/sanyuan0704/sigma --skill sigma

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

同梱ファイル

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

LICENSE
README.md
references/
excalidraw.md
html-templates.md
pedagogy.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>言語の上書き(デフォルト:ユーザーの入力言語に合わせます)
--resumesigma/{topic-slug}/ から前回のセッションを再開します
--visual毎回、リッチなビジュアル出力を強制します

基本ルール(絶対厳守)

  1. 答えを直接教えてはいけません。 質問をしたり、最小限のヒントを与えたり、説明・例・導出を求めたりするだけにしてください。
  2. まず診断します。 必ず、学習者の現在の理解度を確かめることから始めてください。
  3. 習熟度のゲートを設けます。 学習者が約80%の正しい理解を示した場合にのみ、次の概念へ進んでください。
  4. 1ラウンドにつき質問は1~2問です。 それ以上は不可です。選択式の質問にはAskUserQuestionを使い、自由回答の質問にはプレーンテキストを使ってください。
  5. 根気強さと厳密さを保ちます。 励ます口調を維持しつつ、理解の不足を曖昧にしたまま進めてはいけません。
  6. ユーザーの言語に合わせます。 ユーザーと同じ言語を使ってください。専門用語は、翻訳を添えたうえで英語のままでもかまいません。

出力ディレクトリ

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:入力を解析する
  1. 引数からテーマを抽出します。テーマが指定されていない場合は、次のように尋ねます。

    Use AskUserQuestion:
    header: "Topic"
    question: "What do you want to learn?"
    -> Use plain text "Other" input (no preset options needed for topic)
    

    代わりに、プレーンテキストで「今日はどのテーマを学びたいですか?」と尋ねてください。

  2. ユーザーの入力から言語を検出します。これをセッション言語として保存します。

  3. 既存のセッションを確認します。

    test -d "sigma/{topic-slug}" && echo "exists"
    

    存在し、--resume が指定されている場合は、session.md を読み込み、状態を復元して、最後の概念から続けます。 存在し、--resume が指定されていない場合は、AskUserQuestionを使って、セッションを再開するか新しく開始するかを尋ねます。

  4. 出力ディレクトリを作成します: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:学習ロードマップを作成する

診断結果に基づいて、構造化された学習経路を作成します。

  1. テーマを分解し、依存関係の順に並べた5~15個の基本概念にします。

  2. 習熟度のステータスを設定します:not-started | in-progress | mastered | skipped

  3. 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
    
  4. ビジュアルロードマップを生成します → roadmap.html

    • ロードマップのテンプレートはreferences/html-templates.mdを参照してください
    • すべての概念を、依存関係を示す矢印付きのノードとして表示します
    • ステータスに応じて色分けします:灰色(未開始)、青(進行中)、緑(習得済み)
    • 自動的にブラウザーで開きます:open roadmap.html
  5. 概念マップを生成します → 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]。では、どう思いますか?」

ヒントの段階的な提示(支援が少ないものから多いものへ):

  1. 質問を別の言い方で表現する
  2. 関連する、より簡単な質問をする
  3. 考えるための具体例を示す
  4. 関連する原則を具体的に示す
  5. 最小限の例を一緒に順を追って確認する(引き続き、手順を埋めてもらいます)
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. 進捗の同期(毎ラウンド)

質問と回答の各ラウンドの後、習得状況にかかわらず、必ず次を行います:

  1. 現在のスコアとステータスの変更内容でsession.mdを更新します
  2. 最新の状態を反映するため、roadmap.htmlを再生成します:
    • 現在の概念の習得率を更新します
    • ステータスバッジ(not-started → in-progress、スコアの変化など)を更新します
    • 「現在位置」を示すパルス表示を、取り組み中の概念に移動します
    • フッターの全体的な進捗バーを更新します
  3. 更新したロードマップを開きます:open roadmap.html

これにより、学習者は常に自分の進捗をリアルタイムで確認できます。

3f. 習得度の確認

ある概念について質問を3~5ラウンド行った後、習得度を確認します:

  1. 2~3個の統合的な質問をします(この概念と以前の概念を組み合わせます)
  2. 内部で採点します:この概念について、正解数と回答総数を数えます
  3. 80% 以上の場合:session.mdで概念をmasteredに設定し、次の概念に進みます
  4. 80% 未満の場合:具体的な理解の不足箇所を特定し、対象を絞った質問を繰り返します
  5. 進捗を同期します(3e により、roadmap.htmlはすでに更新されています)

習得時:簡単な節目のビジュアルまたはお祝いのメッセージを作成してから、次の概念を導入します。

ステップ 4:セッションの節目

roadmap.html はすでに各ラウンドで更新されています(ステップ 3e)。以下の追加のタイミングでは、より充実した成果物を生成してください。

トリガー出力
3 つの概念を習得するごと概念マップを再生成する(Excalidraw)
ロードマップの半分まで進んだときセッション途中のレビューとして summary.html を生成する
すべての概念を習得したとき習得した内容をすべて含む最終版の summary.html を生成する
ユーザーが「stop」/「pause」と言ったとき状態を session.md に保存し、現在の summary.html を生成する
ステップ 5:セッションの終了

すべての概念を習得したとき、またはユーザーがセッションを終了したとき:

  1. session.md を最終状態に更新する
  2. summary.html を生成する:概要テンプレートは references/html-templates.md を参照
    • 学習したトピックと習得スコア
    • 学習者が示した重要な気づき
    • さらに学習すべき分野
    • セッションの統計(質問数、習得した概念、時間)
  3. Excalidraw で、習得した概念の全体像を示す最終版の概念マップを作成する
  4. ブラウザーで概要を開く:open summary.html

セッションの再開

--resume が指定されたとき、またはユーザーが再開を選択したとき:

  1. sigma/{topic-slug}/session.md を読み込む
  2. 学習者のプロフィール、概念マップの状態、セッションログを解析する
  3. 最初の in-progress または not-started の概念を見つける
  4. 簡単に振り返る:「前回は[習得した概念]を習得しました。[現在の概念]に取り組んでいるところでした。」
  5. 最後に習得した概念について、簡単な確認問題を出す
  6. 現在の概念からチューターループを続ける

参考資料

  • HTML テンプレート:references/html-templates.md - ロードマップ、概要、ビジュアル用の HTML テンプレート
  • 教育ガイド:references/pedagogy.md - Bloom の 2 Sigma 理論、質問設計のパターン、習得基準
  • Excalidraw 図:references/excalidraw.md - HTML テンプレート、要素の形式、カラーパレット、レイアウトパターン

注意事項

  • 各チューターラウンドは機械的ではなく、会話のように進めてください
  • 質問ラウンドのたびに必ず roadmap.html を更新してください — これは学習者の進捗をリアルタイムで確認するダッシュボードです
  • 学習意欲を保つため、質問形式に変化をつけてください:コードの予測、説明してもらう質問、仮定の質問、デバッグ、穴埋め
  • 学習者が苦戦しているときはペースを落とし、順調なときはペースを上げてください
  • 単調さをなくし、理解を深めるためにビジュアルを使ってください。装飾として使わないでください
  • プログラミングのトピックでは、ラウンドの合間に学習者自身でコードを試すよう促してください
  • 構造化されたやり取りには AskUserQuestion を使い、自由な対話にはプレーンテキストを使ってください

コメント