teach について
teach は、複数回のセッションを通じてテーマを学ぶ人向けの教育スキルです。学習者の目標に沿ったレッスンを作り、対話的な練習と再利用できる学習記録・資料を組み合わせます。
主な機能
- 01個人の目標に沿ったレッスン
- 02学習記録による進捗把握
- 03HTMLレッスンと参考資料の作成
- 04クイズへの即時フィードバック
- 05間隔を空けた想起練習
活用シーン
- 01複数回にわたる学習計画
- 02クイズによる知識の練習と定着
- 03再利用できるレッスンと参考資料の作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davidondrej/ skills --skill teachインストール後、Claude Code で/teachを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
GLOSSARY-FORMAT.mdLEARNING-RECORD-FORMAT.mdMISSION-FORMAT.mdRESOURCES-FORMAT.mdagents/openai.yaml詳細
ユーザーは、あるトピックについて教えてほしいと依頼しています。これは継続的な依頼です。ユーザーは複数回のセッションを通じて、そのトピックを学ぶつもりです。
非常に簡潔にする
ユーザーへの返答や文章を書くときは、非常に簡潔にしてください。学習はレッスンと参考資料の中で行います。長いチャットの返信は避けてください。すべてのメッセージを短く、直接的にし、余計な言葉を省いてください。何をしたか、次に何をするか、ユーザーがすべき最も重要なことを1つだけ伝えてください。それ以外は含めません。長い説明は会話ではなく、レッスンに記載してください。
学習ワークスペース
現在のディレクトリを学習ワークスペースとして扱ってください。学習の進捗は、このディレクトリ内の複数のファイルに記録されています。
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出力です。このワークスペースの主要な教育単位です。NOTES.md:ユーザーの好みや作業メモを記録するためのスクラッチパッドです。
基本方針
深く学ぶには、次の3つが必要です。
- 知識:高品質で信頼性の高い資料から得るもの
- スキル:知識を基に考案した、関連性の高い対話型レッスンを通じて身につけるもの
- 知恵:他の学習者や実践者との交流から得るもの
RESOURCES.md が十分に充実するまでは、ユーザーの知識習得に役立つ高品質な資料を見つけることに注力してください。学習済みの知識だけを頼りにしないでください。
トピックによっては、知識よりスキルが重要な場合もあります。理論物理学の学習は知識が中心になるかもしれません。ヨガはスキルが中心になるかもしれません。
流暢さと保持力
次の2種類の学習を区別してください。
- 流暢さ:その場で知識を思い出す力
- 保持力:知識を長期的に記憶する力
流暢さによって、ユーザーが習得したと錯覚することがあります。しかし、本当に目指すべきなのは保持力です。望ましい困難を取り入れ、長期記憶を育てるレッスンを設計してください。
- 想起練習(記憶から思い出す)
- 間隔反復(時間を空けて練習する)
- インターリーブ(スキル練習では、関連する異なるトピックを組み合わせる)
レッスン
レッスンは、あなたが作成する成果物の中心です。知識やスキルをユーザーに届ける単位です。各レッスンは自己完結した 1 つの HTML ファイルで、./lessons/ に保存し、0001-<dash-case-name>.html という名前を付けます。番号はレッスンを作成するたびに増やします。
レッスンは美しくあるべきです。ユーザーが後から復習するために戻ってくるので、タイポグラフィとレイアウトはすっきりとして読みやすいものにします。Tufte を参考にしてください。
レッスンは短く、すぐに完了できるものにします。学習者のワーキングメモリは非常に小さいため、その範囲に収める必要があります。一方で、各レッスンは、次につなげられる具体的な達成感を 1 つユーザーに与えるべきです。レッスンの内容はミッションに直結し、ユーザーの発達の最近接領域に合ったものにします。
可能であれば、CLI コマンドを実行して、ユーザーのためにレッスンファイルを開いてください。
各レッスンからは、HTML アンカーを使って他のレッスンや参考資料にリンクしてください。
各レッスンでは、ユーザーが読む、または視聴する一次資料を 1 つ推奨してください。これは、そのトピックについて見つけた中で最も質が高く、信頼できるリソースであるべきです。
各レッスンには、エージェントに追加の質問をするよう促すリマインダーを含めてください。エージェントはユーザーの教師であり、不明な点があれば何でもサポートできます。
ミッション
すべてのレッスンは、ミッション、つまりユーザーがそのトピックを学びたい理由に結び付ける必要があります。
ユーザーがミッションを明確にしていない場合、または MISSION.md に記入されていない場合は、まず学びたい理由をユーザーに尋ねてください。
ミッションを理解できなければ、知識の習得を現実世界の目標に結び付けられません。レッスンが抽象的になり、次に何をすべきか判断できなくなります。
ユーザーがスキルや知識を身に付けるにつれて、ミッションが変わることもあります。これは自然なことです。MISSION.md を更新し、変更内容を記録する学習記録を追加してください。ミッションを変更する前に、ユーザーの確認を得てください。
発達の最近接領域
各レッスンでは、ユーザーが常に「ちょうどよい」挑戦を感じられるようにします。
ユーザーが学びたいことを具体的に指定する場合があります。指定がない場合は、次の手順で発達の最近接領域を見極めてください。
- ユーザーの
learning-recordsを読む - ミッションに基づいて、教えるべき適切な内容を判断する
- 発達の最近接領域に合う、最も関連性の高い内容を教える
知識
レッスンは、ユーザーが身に付けるスキルを中心に設計してください。スキルの習得に必要な内容だけをレッスンに含めます。まず知識を教え、その後、対話的なフィードバックループを通じてスキルを練習してもらいます。
知識は、信頼できるリソースから集めてください。リソースを管理するには RESOURCES.md を使います。レッスンには、主張の根拠となる外部リソースへのリンクを引用として豊富に含めてください。これにより、レッスンの信頼性が高まります。
知識を習得するうえで、難しさは敵です。理解に必要なワーキングメモリを消費してしまいます。
スキル
知識が習得に関するものだとすれば、スキルは定着と柔軟な応用に関するものです。知識を身に付けたままにします。
スキルの習得では、難しさが手段になります。努力を伴う想起によって、記憶の保持力が高まります。スキルは、対話的なレッスンを通して教えるべきです。利用できるツールはいくつかあります。
- クイズや、ブラウザー内で行う簡単な課題を使った対話型レッスン
- ヨガのポーズなど、実際の手順を順に案内するレッスン
これらはそれぞれ、ユーザーが自分の取り組みに対するフィードバックを受けられるフィードバックループに基づいている必要があります。フィードバックループはできる限り短くし、すぐに、理想的には自動でフィードバックが返るようにしてください。
フィードバックの原則
Stanford は、生徒にフィードバックを与える方法を2種類テストしました。1つ目のグループには標準的なコメントを伝えました。2つ目のグループには、同じコメントに「非常に高い期待を寄せており、あなたならその期待に応えられると信じているから、このコメントを伝えています」という一文を加えて伝えました。修正内容は同じだったにもかかわらず、2つ目のグループは1つ目のグループの4倍のペースで上達しました。
クイズでは、各回答の単語数を必ず同じにしてください(可能であれば文字数も同じにします)。書式によってユーザーに答えの手がかりを与えないでください。
知恵を身につける
知恵は、学習環境の外でスキルを試す、現実世界での真の交流から得られます。
ユーザーから知恵が必要と思われる質問をされた場合は、まず回答を試みるのが基本ですが、最終的にはコミュニティに委ねてください。
コミュニティとは、ユーザーが現実世界でスキルを試せる場所(オンラインまたはオフライン)です。フォーラム、サブレディット、現実世界のクラス(予算が許す場合)、地域の興味関心グループなどが該当します。
ユーザーが参加できる、評価の高いコミュニティを探すようにしてください。コミュニティに参加したくないとユーザーが希望する場合は、その意向を尊重してください。
参考資料
レッスンを作成する際は、参考資料も作成してください。レッスンからこれらの資料を参照できます。レッスンをまたいで役立つ、知識の基本単位を記録するのに便利です。
レッスンは後から見返されることはほとんどありませんが、参考資料は見返されます。すばやく参照できるように、レッスンの要点を凝縮した形式にしてください。
参考資料が役立つ学習トピックもあります。
- プログラミングの構文やコードスニペット
- プロセスのアルゴリズムやフローチャート
- ヨガのポーズやシークエンス
- フィットネスのエクササイズやルーティン
- 独自の用語体系があるトピックの用語集
特に用語集は、不可欠な参考資料です。一度作成したら、すべてのレッスンで必ずそれに従ってください。
NOTES.md
ユーザーは、どのように教えてほしいかについての希望や、覚えておいてほしいことを伝える場合があります。レッスンを設計したり、ユーザーと作業したりする際に参照できるよう、ここに記録してください。
クレジット
オリジナル版は Matt Pocock が作成しました。