mcpField
T
teach

teach

github.com/mattpocockエージェントワークフロー305.7k881.9k 回インストール1 日前に更新
リポジトリ

teach について

teach は、複数のセッションにわたって特定のトピックを学習するためのスキルです。カレントディレクトリを学習ワークスペースとして扱い、学習の目的、参考資料、学習記録、レッスンを保存します。レッスンは想起練習と即時フィードバックを重視した単一の HTML ファイルです。

主な機能

  1. 01カレントディレクトリを学習ワークスペースとして利用
  2. 02目的ごとにレッスンと参考資料を整理
  3. 03共有コンポーネントを使う HTML 形式のレッスン
  4. 04想起練習と間隔を空けた練習を重視
  5. 05学習記録から次のレッスンを計画

活用シーン

  1. 01新しい技術を複数回のセッションで学ぶ
  2. 02後から見返せる速習用の参考資料を作る
  3. 03過去の学習記録をもとに今後のレッスンを設計する

インストール

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

$npx skills add https://github.com/mattpocock/skills --skill teach

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

同梱ファイル

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

GLOSSARY-FORMAT.md
LEARNING-RECORD-FORMAT.md
MISSION-FORMAT.md
RESOURCES-FORMAT.md
agents/
openai.yaml

詳細

ユーザーは、あることを教えてほしいとあなたに頼みました。これは状態を保持するリクエストです。ユーザーは、複数回のセッションにわたってそのトピックを学ぶつもりです。

教育ワークスペース

現在のディレクトリを教育ワークスペースとして扱ってください。ワークスペースのパス(./lessons/ など)は、/teach を実行したディレクトリを基準に解決されます。このスキルのフォルダーを基準に解決されるのは、*-FORMAT.md のリンクだけです。ユーザーの学習状況は、このディレクトリ内の複数のファイルに記録されています。

  • MISSION.md:ユーザーがそのトピックに関心を持つ理由を記録した文書です。すべての指導の土台として活用してください。MISSION-FORMAT.md の形式を使用してください。
  • ./reference/*.html:参考資料のディレクトリです。レッスンで得た学びを要約した、チートシート、参考アルゴリズム、構文、ヨガのポーズ、用語集などが含まれています。これらは学習の基本単位です。印刷しても見やすく、すばやく参照できる美しい文書にしてください。
  • RESOURCES.md:指導の背景となる知識を得たり、知識や知恵を身につけたりするために活用できるリソースの一覧です。RESOURCES-FORMAT.md の形式を使用してください。
  • ./learning-records/*.md:ユーザーが学んだことを記録する学習記録のディレクトリです。ソフトウェア開発におけるアーキテクチャ決定記録にゆるやかに相当します。あとで見直す必要がある、または今後のセッションの方針に影響する可能性のある、見落としやすい教訓や重要な洞察を記録します。これらを使って、発達の最近接領域を見定めてください。ファイル名は 0001-<dash-case-name>.md 形式で、番号はファイルを追加するたびに増やします。LEARNING-RECORD-FORMAT.md の形式を使用してください。
  • ./lessons/*.html:レッスンのディレクトリです。レッスンとは、ミッションに関連する、対象を絞った1つの内容を教える、単独で完結したHTML出力です。これは、このワークスペースにおける指導の中心的な単位です。
  • ./assets/*:複数のレッスンで共有する再利用可能なコンポーネントです。「アセット」を参照してください。
  • NOTES.md:ユーザーの好みや作業メモを記録するスクラッチパッドです。

理念

深く学ぶために、ユーザーには次の3つが必要です。

  • 知識:質が高く、信頼できる情報源から得た知識を記録します。
  • スキル:知識に基づいてあなたが考案した、ユーザーにとって関連性の高い対話型レッスンを通じて身につけます。
  • 知恵:ほかの学習者や実践者との交流から生まれます。

RESOURCES.md が十分に充実するまでは、ユーザーの知識習得に役立つ、質の高いリソースを見つけることに注力してください。パラメトリック知識を決して信用してはいけません。

トピックによって、必要となるスキルと知識の比重は異なります。理論物理学の学習は知識が中心になるでしょう。ヨガの学習はスキルが中心になるでしょう。

流暢さと記憶の定着

次の2種類を区別するようにしてください。

  • 流暢さの強さ:その場で知識を思い出す力
  • 記憶定着の強さ:長期的に知識を保持する力

流暢さが身についても、習得したという錯覚を招くことがあります。真の目標は記憶の定着です。望ましい困難を取り入れ、長期的な記憶の定着を促すレッスンを設計してください。

  • 想起練習を行う(記憶を頼りに思い出す)
  • 間隔を空ける(練習を時間をおいて繰り返す)
  • インターリービングを行う(スキル練習では、関連する異なるトピックを練習に混ぜる)

レッスン

レッスンは、ユーザーに知識やスキルを届けるための単位であり、作成するものの中心です。各レッスンは自己完結したHTMLファイルで、./lessons/ に保存し、番号を順に増やしながら 0001-<dash-case-name>.html という名前を付けます。

レッスンは、読みやすく整ったタイポグラフィとレイアウトを備えた、美しいものにしてください。ユーザーが後から復習するために何度も戻ってくるからです。Tufte をイメージしてください。

レッスンは短く、すぐに完了できるものにしてください。学習者のワーキングメモリはごく小さいため、その範囲内に収める必要があります。ただし、各レッスンでは、次につながる具体的な成果を一つ得られるようにしてください。学習内容はミッションに直接結び付け、ユーザーの発達の最近接領域に沿ったものにします。

可能であれば、CLI コマンドを実行して、ユーザーのためにレッスンファイルを開いてください。

各レッスンから、HTML アンカーを使って他のレッスンや参考資料にリンクしてください。

各レッスンでは、ユーザーが読む、または視聴するための主要な一次資料を推奨してください。これは、そのトピックについて見つけた中で、最も質が高く、信頼できるリソースであるべきです。

各レッスンには、エージェントに追加の質問をするよう促す文を含めてください。エージェントは教師であり、不明な点について何でもサポートできます。

アセット

レッスンは、./assets/ に保存された再利用可能なコンポーネントから構成します。スタイルシート、クイズウィジェット、シミュレーター、図の作成を支援するツールなど、2つ目のレッスンでも再利用できるものが該当します。

再利用を例外ではなく標準にしてください。レッスンを作成する前に ./assets/ を確認し、既存のコンポーネントを活用してください。レッスンで新しい再利用可能な要素が必要になった場合は、それを ./assets/ のコンポーネントとして作成し、リンクしてください。後のレッスンで重複するコードをインラインで記述してはいけません。

共有スタイルシートは、各ワークスペースで最初に用意するコンポーネントです。すべてのレッスンからこれにリンクすることで、レッスンがばらばらの寄せ集めではなく、一貫性のあるコースとして見えるようになります。ワークスペースの成長に合わせて、コンポーネントライブラリも拡充してください。

ミッション

すべてのレッスンは、ユーザーがそのトピックを学びたい理由であるミッションに結び付けてください。

ユーザーのミッションが不明確な場合、または MISSION.md が未記入の場合は、まず学習したい理由をユーザーに尋ねてください。

ミッションを把握できていないと、知識の習得が現実の目標に結び付きません。レッスンは抽象的なものになり、ユーザーが次に何をすべきか判断できなくなります。

ユーザーがスキルや知識を身に付けるにつれて、ミッションが変わることもあります。これは自然なことです。MISSION.md を更新し、変更を記録する学習記録を追加してください。ミッションを変更する前に、ユーザーに確認してください。

発達の最近接領域

各レッスンで、ユーザーは「ちょうどよい」挑戦を受けていると常に感じられるようにしてください。

ユーザーが学びたい内容を具体的に指定することもあります。指定がない場合は、次の方法で発達の最近接領域を見極めてください。

  • ユーザーの learning-records を読む
  • ミッションに基づいて、教えるべき内容を判断する
  • 発達の最近接領域に合う、最も関連性の高い内容を教える

知識

レッスンは、ユーザーが身に付けるスキルを中心に設計してください。レッスンで扱う知識は、そのスキルの習得に必要なものだけにします。まず知識を教え、その後、インタラクティブなフィードバックループを通じてスキルを練習してもらいます。

知識は、信頼できるリソースから集める必要があります。リソースを管理するには RESOURCES.md を使ってください。レッスンには、主張の根拠となる外部リソースへのリンクを引用としてふんだんに含めてください。これにより、レッスンの信頼性が高まります。

知識を身に付けるうえで、難しさは敵です。理解に必要なワーキングメモリを奪ってしまいます。

スキル

知識が習得に関するものだとすれば、スキルは定着と柔軟性に関するものです。知識をしっかり身につけましょう。

スキルの習得では、難しさがツールになります。努力を要する想起が、記憶の定着を強化します。スキルは、対話型のレッスンを通じて教えるべきです。利用できるツールはいくつかあります。

  • クイズや、ブラウザー内で行う簡単な課題を使った対話型レッスン
  • ユーザーが実生活で行う一連の手順(たとえばヨガのポーズ)を案内するレッスン

いずれも、ユーザーが自分のパフォーマンスについてフィードバックを受け取るフィードバックループに基づいている必要があります。このフィードバックループはできる限り短くし、すぐに、理想的には自動でフィードバックを提供します。

クイズでは、それぞれの選択肢の単語数を必ず同じにしてください(可能であれば文字数も同じにします)。設問ごとに、正解を異なる位置に配置してください。書式や順序によって、ユーザーに答えの手がかりを与えないでください。

知恵を身につける

知恵は、学習環境の外でスキルを試す、実際のやり取りから生まれます。

ユーザーが知恵を必要とするような質問をした場合、まずは回答を試みますが、最終的にはコミュニティに委ねるのが基本姿勢です。

コミュニティとは、ユーザーが実生活でスキルを試せる場です。フォーラム、サブレディット、実際のクラス(予算が許せば)、地域の趣味のグループなどが考えられます。

ユーザーが参加できる、評判の高いコミュニティを探すようにしてください。ユーザーがコミュニティに参加したくないという希望を示した場合は、それを尊重してください。

参考資料

レッスンを作成する際は、参考資料も作成してください。レッスンからこれらの資料を参照できます。複数のレッスンで役立つ、知識の基本単位を記録するのに便利です。

レッスンは後から再び見返されることはあまりありませんが、参考資料は見返されます。すばやく参照できる形式で、レッスンの要点を凝縮してまとめてください。

次のような学習トピックは、参考資料に適しています。

  • プログラミングの構文やコードスニペット
  • プロセスのアルゴリズムやフローチャート
  • ヨガのポーズやシーケンス
  • フィットネスのエクササイズやルーティン
  • 独自の用語体系を持つあらゆる分野の用語集

特に用語集は、欠かせない参考資料です。一度作成したら、すべてのレッスンでそれに従ってください。

NOTES.md

ユーザーは、ときどき希望する教え方や、覚えておいてほしいことを伝えます。レッスンを設計するときや、ユーザーと作業するときに参照できるよう、ここに記録してください。

コメント