マスタークラス は何をしますか?
学習教材を、学習者が実際に視聴したくなるような動画コースに変換します。このスキルは教育法(教材の読み込み、コースマップ、台本)を担当します。レンダリング(図、音声、MP4、Obsidianノート)は、補完スキル master-class-render が行います。
モデルルーティング(ユーザーの明示的な指示)
PEDAGOGY_MODEL: claude-sonnet-5.5 # 読み込み、コースマップ、台本(ステップ1~4)。品質を維持できる最も安価なモデル。必要に応じてここで変更。
品質はほぼ完全にステップ1~4に依存するため、これらは必ずPEDAGOGY_MODELで実行する必要があります。ステップ0、5、6は機械的な作業であり、このセッションを駆動しているモデルで実行します。
- 既にPEDAGOGY_MODELとして実行している場合(またはユーザーが委譲をスキップするよう指示した場合)、ステップ1~4を自分で実行します。
- それ以外の場合は委譲します。
model: PEDAGOGY_MODELを指定したgeneral-purposeサブエージェントを起動します。ここでモデルを設定することはユーザーの明示的なリクエストです。そのプロンプトには、ソースパス、出力言語、ソースフォルダのパス、ユーザーが指定したフォーカス/コンテキスト、および 「~/.copilot/skills/master-class/SKILL.md を読み、ステップ1~2を正確に実行してください。course-map.md を書き、停止してマップを返してください。」 を含める必要があります。- 返されたマップをユーザーに表示し、承認を待ちます(ユーザーが承認なしで実行するよう依頼した場合を除く)。
- 次に、承認/変更を同じエージェント(
write_agent)に送信します:「承認しました [+ 変更点]。次にステップ3~4を正確に実行してください。すべての台本を書き、エラーがなくなるまで lint を実行し、scripts/README.md を書き、lint のサマリーを返してください。」 - その後、大きなモデルを必要としないステップ5(レンダリング)を自分で続行します。
- ユーザーがリクエスト内で教育法に別のモデルを指定した場合は、代わりにそのモデルを使用します。
読み込みリスト(何かを書く前に)
- references/cheatsheet.md:重要なルールをまとめた1ページ。
- references/learner-profile.md:学習者が誰か、どのように考えるか、どのアナロジーが伝わるか。
- references/lesson-template.md:すべてのレッスンに使用する埋め込み用の骨組み。
- 承認済みの例(すべて1つのコース「Lab 02, Tool Use & MCP」より):examples/course-map.md、01(誤った文→メカニズム)、05(ストーリー→ルール)、08(選択肢の比較→標準が存在する理由)。これらの深さと語り口を模倣しますが、文言は模倣しません。
- 任意:references/teaching-research.md、ルールの根拠と出典。
絶対的な教育ルール
- 問題が先、解決策は後。 すべてのレッスンは、何かがうまくいかない、または機能しない具体的な状況から始まります。技術の名前は、問題と却下された明白な代替案の後にのみ登場します。
- 実装ではなく意図を教える。 教材がXを教えている場合、学習者はXが何か、なぜ存在するか、いつ使用するか、いつ使用しないかを理解する必要があります。コードはすでに説明された概念の証拠(6行以下)であり、コードのウォークスルーであってはなりません。
- レッスンごとに1つの誤解を分解する、声に出して。
- 具体→抽象。 1つの実行例がコース全体を通して登場します。
- 学習者の思考法: コンテキスト → 現実の制約 → 検討された選択肢とそれぞれが却下された理由 → 決定 → コスト/トレードオフ → いつ使用しないか。「もっと良い方法はありますか?」と明示的に問いかけます。
- 想起のためのポーズ 各レッスンに:質問 →
…(レンダラーが4秒間のポーズを挿入)→ 理由付きの回答。 - ブリッジ:各レッスンは、次のレッスンが解決する問題で終わります。
- 長さ制限なし、ただし1レッスンあたり1つの学習目標(通常4~6分)。
- バリエーションを持たせる: 導入、スレッド、締めくくり。固定の型にはめない。
- 事実や数字を捏造しない。 技術的な主張は、読み込んだソースまたは検証済みの公式ドキュメントから得ます。仮説的なシナリオは、明確にシナリオであると明示します。
ワークフロー
0 ・ 最初に確認
- 出力言語:ユーザーが既に指定していない限り、必ず確認します。
- ソースパス(未指定の場合)。デフォルト(Vaultのレイアウトが異なる場合のみ確認):
- ノート →
<lab folder>/Master class/ - 動画 →
<lab folder>/_attachments/master-class/ - ソース →
<lab folder>/_attachments/master-class/source/(course-map.md、scripts/、scenes/)
- ノート →
- 上記のモデルルーティングを適用します。
1 ・ 制限付きの深さで読み込む
- ラボ/ノートを完全に読み込みます。ノートブックの場合は、マークダウンとコードが示す概念を読み込みます。ノートブックを実行したり、シークレットや
.envを読み込んだりしないでください。 [[wikilinks]]/リンクされたドキュメントは、教材の意図に関連する場合に限り、最大2レベルまでたどります。将来のラボ、既にカバーされた前提知識、および本筋から外れたトピックはスキップします。- なぜ を検証または補完するためにWebの使用も許可します(公式ドキュメントと仕様)。出典を明記します。
- ログを保持します:読み込んだもの/破棄したもの+その理由。
2 ・ コースマップ → 承認のため停止
<source>/course-map.md を examples/course-map.md のように作成します。
- 学習者が判断できるようになることとして、2~3文での意図。
- 読み込みログ。
- レッスンテーブル:
# ・ レッスン ・ 導入する問題 ・ 誤解 ・ アナロジー/導入 ・ 解決 → 未解決のまま残すもの。レッスン00を全体像とし、最後のレッスンを判断としての統合とします。
3 ・ 台本、1レッスンにつき1パス
各レッスンを順番に:
- チートシート、テンプレート、マップ内のレッスンの行、および1つの例を再読します。
- references/lesson-template.md を
<source>/scripts/NN - Short title.script.mdにコピーし、内容を埋めます。.script.mdサフィックスは必須です。そうしないと、Obsidianが台本とレッスンノートを混同するためです。 - Lint(ステップ4)を実行し、次のレッスンに進む前に修正します。
ナレーションは耳で聞くために書きます:リスト、表、URLは禁止。数字は人が言うように。ID/コードはバッククォートで囲み(単語として読む)。想起ビートは Retrieval pause というタイトルで、質問と回答の間に … を入れます。そのScreenが質問自体である場合は、*"質問"* と書きます。
最後に <source>/scripts/README.md を作成します:レッスンテーブル+ルーブリック自己レビュー。
4 ・ Lint + ルーブリック(レンダリング前に合格必須)
python3 ~/.copilot/skills/master-class/scripts/lint_script.py "<source>/scripts" --sources "<lab folder>" <その他読み込んだノート>
すべての ERROR を修正します。すべての WARN は、意図的でない限り(例:明らかに仮説的なシナリオにおける仮説的な数値)修正します。リンターはこれらを判断できないため、自分で確認します:
- 方法の前に理由:技術は却下された代替案の後にのみ登場する
- コードを見なくても理解できる
- 誤解が明示的に述べられ、分解されている
- フックの質問に明示的に回答されている
- Screenがナレーションを補完している(テキストの重複なし)
- 声に出して読んだとき、教師のように聞こえ、箇条書きではない
- 連続するレッスン間で導入/締めくくりが変化している
5 ・ レンダリング → master-class-render
~/.copilot/skills/master-class-render/SKILL.md を読み、それに従います:シーンを作成し、1つのコマンドでMP4、レッスンノート、MOCを構築し、確認します。
6 ・ 報告
パス(MOCが先)、レッスン数と合計時間、lint結果、未確認の内容、および読み込みログの要約。