Communitygithub.com

マスタークラス

学習教材(Obsidianノート、ノートブック、コード)を、フルナレーション付き動画マスタークラスに変換します。各レッスンにつきMP4+ノート、コースインデックス(MOC)を同じObsidian Vault内に保存します。コードの行ごとの解説ではなく、コースの意図(問題解決前、誤解、直感、限界)を教えます。「学習教材からマスタークラス/コース/動画レッスン/チュートリアル動画を作って」と依頼されたときに使用します。

マスタークラス とは?

このスキルは、ユーザーが提供した学習教材(Obsidianノート、ノートブック、コードなど)を、学習者が実際に視聴したくなるような、フルナレーション付きの動画マスタークラスに変換します。教材の内容をコードの行ごとに解説するのではなく、問題解決の文脈、よくある誤解、直感的な理解、技術の限界といった「意図」を教える教育法に重点を置いています。出力は、各レッスンごとのMP4動画とObsidianノート、そしてコース全体のインデックス(MOC)として、元の教材と同じObsidian Vault内に保存されます。このスキルは教育設計(教材の読み込み、コースマップ作成、台本執筆)を担当し、実際の動画レンダリング(図、音声、MP4、ノート作成)は、**master-class-render**という補助スキルが担当します。Claude CodeやClineなどのターミナルベースのAIエージェントで使用することを想定しており、教育モデル(例:Claude Sonnet 5.5)に教育設計部分を委譲し、高品質な教材作成を効率的に行えるよう設計されています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/carlos-carvajal-slalom/master-class-skills/tree/main/master-class

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

マスタークラス は何をしますか?

学習教材を、学習者が実際に視聴したくなるような動画コースに変換します。このスキルは教育法(教材の読み込み、コースマップ、台本)を担当します。レンダリング(図、音声、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(レンダリング)を自分で続行します。
  • ユーザーがリクエスト内で教育法に別のモデルを指定した場合は、代わりにそのモデルを使用します。

読み込みリスト(何かを書く前に)

  1. references/cheatsheet.md:重要なルールをまとめた1ページ。
  2. references/learner-profile.md:学習者が誰か、どのように考えるか、どのアナロジーが伝わるか。
  3. references/lesson-template.md:すべてのレッスンに使用する埋め込み用の骨組み。
  4. 承認済みの例(すべて1つのコース「Lab 02, Tool Use & MCP」より):examples/course-map.md、01(誤った文→メカニズム)、05(ストーリー→ルール)、08(選択肢の比較→標準が存在する理由)。これらの深さと語り口を模倣しますが、文言は模倣しません。
  5. 任意:references/teaching-research.md、ルールの根拠と出典。

絶対的な教育ルール

  1. 問題が先、解決策は後。 すべてのレッスンは、何かがうまくいかない、または機能しない具体的な状況から始まります。技術の名前は、問題と却下された明白な代替案の後にのみ登場します。
  2. 実装ではなく意図を教える。 教材がXを教えている場合、学習者はXが何か、なぜ存在するか、いつ使用するか、いつ使用しないかを理解する必要があります。コードはすでに説明された概念の証拠(6行以下)であり、コードのウォークスルーであってはなりません。
  3. レッスンごとに1つの誤解を分解する、声に出して。
  4. 具体→抽象。 1つの実行例がコース全体を通して登場します。
  5. 学習者の思考法: コンテキスト → 現実の制約 → 検討された選択肢とそれぞれが却下された理由 → 決定 → コスト/トレードオフ → いつ使用しないか。「もっと良い方法はありますか?」と明示的に問いかけます。
  6. 想起のためのポーズ 各レッスンに:質問 → …(レンダラーが4秒間のポーズを挿入)→ 理由付きの回答。
  7. ブリッジ:各レッスンは、次のレッスンが解決する問題で終わります。
  8. 長さ制限なし、ただし1レッスンあたり1つの学習目標(通常4~6分)。
  9. バリエーションを持たせる: 導入、スレッド、締めくくり。固定の型にはめない。
  10. 事実や数字を捏造しない。 技術的な主張は、読み込んだソースまたは検証済みの公式ドキュメントから得ます。仮説的なシナリオは、明確にシナリオであると明示します。

ワークフロー

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. チートシート、テンプレート、マップ内のレッスンの行、および1つの例を再読します。
  2. references/lesson-template.md を <source>/scripts/NN - Short title.script.md にコピーし、内容を埋めます。.script.md サフィックスは必須です。そうしないと、Obsidianが台本とレッスンノートを混同するためです。
  3. 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結果、未確認の内容、および読み込みログの要約。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル