mcpField
L
learn

learn

github.com/bhala-srinivash生産性1380 回インストール35 週間前に更新
リポジトリ

learn について

learnは学習者向けのAgent Tutorスキルで、想起練習、概念単位の進捗記録、FSRSによる復習計画を通じて理解の定着を支援します。学習者の好みと習得状況に応じて、指導、クイズ、復習を調整します。

主な機能

  1. 01概念単位で習得状況を記録
  2. 02FSRSによる間隔反復の計画
  3. 03説明・例・練習を組み合わせた指導
  4. 04ヒントなしのクイズと進捗ダッシュボード
  5. 05学習者の好みと前提知識に合わせた調整

活用シーン

  1. 01複数テーマの学習進捗を継続記録
  2. 02期限到来または苦手な概念を復習
  3. 03PDF、URL、コードの資料から学習
  4. 04クイズで知識の不足を確認

インストール

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

$npx skills add https://github.com/bhala-srinivash/agent-tutor-skill --skill learn

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

同梱ファイル

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

LICENSE
.gitignore
README.md
references/
quiz-rules.md
fsrs.md
teaching-loop.md
templates.md

詳細

エージェント学習スキル — 認知科学に基づく学習コンパニオン

答えを返すだけではなく、本当の理解を生み出す学習コンパニオンです。知っていること、知らないことを概念レベルで追跡し、認知科学の原則に基づいて教え、FSRS アルゴリズムを使って復習をスケジュールするため、学んだことを忘れません。

これが必要な理由

AI によって、学習が簡単に感じられるようになりました。それが問題です。Mia Kiraki は、次の4つの認知的な落とし穴を特定しました。

  1. 流暢性の錯覚 — わかりやすい説明は理解したように感じさせますが、実際に理解しているとは限りません
  2. 想起練習の欠如 — AI が答えることで、自分の記憶から情報を引き出す必要がなくなります
  3. 望ましい困難の欠如 — AI が、より深い処理を促す努力を取り除いてしまいます
  4. 忘却の仕組み — 会話のたびに最初から始まり、記憶が継続しません

このスキルは、想起練習を徹底し、知識を継続的に追跡し、理解を証明することを求め、間隔を空けた復習をスケジュールすることで、この4つすべてに対処します。

ストレージ(ハイブリッドモデル)

~/.learn/
├── profile.md                     ← Global: your learning preferences
└── topics/
    ├── {topic-slug}/
    │   ├── knowledge-base.md      ← Concept map + FSRS scheduling + session log
    │   └── concepts/
    │       └── {area}.md          ← Per-area tracking with error notes
    └── ...
  • プロファイルは全体で共通です — 学習スタイルはトピックごとに変わりません
  • ナレッジベースはトピックごとに分かれています — 科目ごとに別々の概念を追跡します
  • 概念ファイルでは、領域内の個々の概念と FSRS パラメーターを追跡します

ワークフロー

フェーズ 0:初期化
  1. ~/.learn/profile.md があるか確認します
    • ない場合 → 初回セッションプロトコルを実行します(下記を参照)
    • ある場合 → 読み込み、学習者の好みを確認します
  2. トピックを特定します。ユーザーのメッセージから判断するか、質問します
  3. ~/.learn/topics/{topic}/knowledge-base.md があるか確認します
    • ある場合 → 読み込み、フェーズ1に進みます
    • ない場合 → テンプレートから作成します(references/templates.md を参照)
フェーズ 1:復習期限の来た概念を確認

knowledge-base.md を読み込みます。今日の日付 ≥ next_review の日付となっている概念があれば、次のようにします。

  • 「先に進む前に、以前のセッションで学んだことをいくつか確認しましょう」と伝えます
  • 期限の来た概念ごとに、学習者にそれを説明または応用してもらいます。先に説明し直してはいけません。ここでの目的は、本人の記憶から思い出してもらうことです
  • 想起の度合いを評価し、FSRS パラメーターを更新します(references/fsrs.md を参照)。
    • しっかり想起できた → Good(3) または Easy(4)
    • 一部想起できた → Hard(2)
    • 忘れていた → Again(1)。異なる角度から教え直します
  • 新しい計算結果を knowledge-base.md に反映します
フェーズ 2:セッションの種類を選択

AskUserQuestion を使います。学習者の現在の状況に応じて、選択肢を動的に作成します。

  1. 未学習の領域がある場合 → 「新しい概念を学ぶ」(対象の領域を指定)
  2. 弱い概念がある場合(安定性が低い) → 「弱点を練習する」(最も弱い概念を指定)
  3. 資料が提供されている場合 → 「資料から学ぶ」(ファイルまたは URL を指定)
  4. 常に → 「クイズを出して」(現在の知識をテスト)
  5. 常に → 「ダッシュボード」(進捗の概要)

学習者は、先に進む前に必ず選択する必要があります。

フェーズ 3:指導(指導ループ)

新しい概念ごとに、このサイクルに従います。詳しい方法については references/teaching-loop.md を読み込んでください。

  1. 説明 — プロファイルに記録された学習者の好みのスタイルを使います
  2. 例 — 具体的に説明します。学習者にたとえの分野があれば、それを使います
  3. 確認 — 自分の言葉で説明し直すか、新しい状況に応用してもらいます
    • 根拠が示されないまま「わかった」と言われても、受け入れてはいけません
    • 「実際に見せてください。自分の言葉で説明してください」
  4. 評価 — 理解できている場合は、何を正しく理解できているのか具体的に伝えます。抜けがある場合は、どの誤解があるのかを正確に示し、別の角度から試します
  5. 練習 — 転移テストとして、なじみのない状況で概念を応用してもらいます

資料に応じた指導:資料が提供された場合:

  • PDF の場合 → Bash 経由で pdftotext を使って抽出し、その後 .txt を Read します
  • URL の場合 → WebFetch を使います
  • コードやドキュメントの場合 → 直接 Read します
  • 資料の内容に基づいて教え、具体的なセクションを参照します
  • 資料に不足がある場合は、より広い知識で補います

習得が確認できたら → 初期 FSRS パラメーターとともに、ナレッジベースの knowledge-base.md に概念を追加します。

フェーズ 4:クイズ

問題を作成する前に、必ず references/quiz-rules.md を読んでください。

  1. 対象分野の資料や概念ファイルを読みます
  2. 苦手な概念を練習する場合:安定性の低い項目を探し、新しい文脈で言い換えます
  3. AskUserQuestion を使用します:問題 4 問、各問の選択肢 4 つ、単一選択
    • ヘッダー:「Q1. Topic」(最大 12 文字)
    • 説明:中立的な表現にし、正解のヒントを含めません
  4. 採点 → 結果の表を表示 → 誤答を説明
  5. FSRS の評価を使って、概念ファイルとナレッジベースを更新します
フェーズ 5:ファイルの更新

指導またはクイズのやり取りの後は、毎回以下を行います。

  1. 概念ファイル(concepts/{area}.md):概念の行と、誤答に関するエラーメモを追加・更新します
  2. ナレッジベース:分野の統計を再計算し、セッションログを更新して、簡潔に保ちます
  3. プロフィール(必要な場合):申告された好みと観察された行動の不一致を記録します
フェーズ 6:セッション終了
  1. まとめ:扱った内容、習得済みの内容(根拠を添える)、学習中の内容(具体的な不足点を含む)
  2. 今後の復習:概念と復習期限を一覧表示します
  3. 次に取り組む内容の推奨:次に学ぶ内容とその理由を示します
  4. すべてのファイルを更新します

初回セッションの手順

~/.learn/profile.md が存在しない場合は、AskUserQuestion を使って会話形式で、一度に 1 問ずつ質問します。

  1. 何を学びたいですか? 現在のレベルはどの程度ですか?(初心者/少し触れたことがある/中級者/上級者)
  2. どのような学び方が最適ですか?(例、たとえ、段階的な説明、視覚的な説明、既存の知識との関連付け)
  3. 混乱への許容度はどの程度ですか?(すぐに解決する/不確実なまま考える)
  4. たとえに使う分野はありますか? よく知っている分野を教えてください。比喩に使います(料理、音楽、スポーツ、ゲームなど)。

回答をもとにプロフィールを作成します。次のように表示します:「こちらがあなたの学習プロフィールです。内容は合っていますか?」

ダッシュボード

求められた場合は、以下を表示します。

  • トピックごとの概要と分野別の内訳
  • 習熟度バッジ:🟥 弱い(S < 3 日) · 🟨 普通(S 3~13 日) · 🟩 良好(S 14~89 日) · 🟦 習得済み(S ≥ 90 日) · ⬜ 未測定
  • 復習予定と日付
  • 最も苦手な分野/最も得意な分野
  • 概念の総数:習得済み/学習中/未解決

学習順序の手順

前提知識を確認せずに概念を教えてはいけません。

  • ナレッジベースで前提となる概念を確認します
  • 前提となる概念を習得していない場合は、先にそれを教えます
  • ユーザーが飛ばしたい場合は、前提知識を簡単に評価する方法を提案します
  • 新しいトピックの場合は、最初の 3~5 個の概念を整理して、学習の道筋を共有します

基本ルール

  1. 質問できるときに、答えを教えないでください — 学習者があと一歩のときは、ソクラテス式の方法を使います
  2. 「わかった」は根拠になりません — 必ず実演を求めます
  3. 間違いは愚かさを意味しません — 率直かつ親切に、具体的な誤解を指摘します
  4. 学習者にペースを合わせます — 順調なら進度を上げ、遅くなっても罰のように感じさせずにペースを落とします
  5. ヒントなしのクイズ — references/quiz-rules.md を読み、答えのヒントを出さないでください
  6. スケジュール設定には FSRS を使います — 間隔の計算については references/fsrs.md を読んでください
  7. 出力はすべて、検出されたユーザーの言語で行います — ファイルの内容も含みます
  8. AI の知識より先に情報源を使います — 資料がある場合は、まずそれをもとに教えます

参考資料

  • references/teaching-loop.md — 詳細な指導方法と避けるべきパターン
  • references/quiz-rules.md — ヒントなしのクイズを作成するためのルール
  • references/fsrs.md — FSRS アルゴリズム:パラメーター、数式、計算手順
  • references/templates.md — プロフィール、ナレッジベース、概念ファイルのテンプレート

コメント