大師課程 是做什麼的?
將學習素材轉換成學習者會真正看完的影片課程。這個技能完全掌控教學法(研讀、課程地圖、腳本)。之後的渲染(圖表、語音、MP4、Obsidian 筆記)則由配套技能 master-class-render 負責。
模型路由(使用者的明確指示)
PEDAGOGY_MODEL: claude-sonnet-5.5 # 研讀、課程地圖、腳本(步驟 1–4)。在保持品質的前提下選擇最便宜的模型;如有需要可在此處修改。
品質幾乎完全取決於步驟 1–4,因此這些步驟必須在 PEDAGOGY_MODEL 上執行。步驟 0、5 和 6 是機械性工作,可在驅動本次對話的任何模型上執行。
- 如果你已經以 PEDAGOGY_MODEL 的身份執行(或者使用者說要跳過委派),則由你自己完成步驟 1–4。
- 否則,請進行委派。 啟動一個
general-purpose子代理,並設定model: PEDAGOGY_MODEL。在此處設定模型是使用者的明確要求。其提示必須包含:來源路徑、輸出語言、來源資料夾路徑、使用者提供的任何焦點/背景,以及 「閱讀 ~/.copilot/skills/master-class/SKILL.md 並準確執行步驟 1–2;寫出 course-map.md,然後停止並回傳地圖。」- 向使用者顯示回傳的地圖,並等待批准(除非使用者要求不經批准直接執行)。
- 然後將批准/修改內容發送給同一個代理 (
write_agent):「已批准 [+ 修改]。現在準確執行步驟 3–4:撰寫每個腳本,進行 lint 直到無錯誤,寫出 scripts/README.md,然後回傳 lint 摘要。」 - 然後你自己繼續進行步驟 5(渲染),這個步驟不需要大型模型。
- 如果使用者在請求中指定了另一個用於教學法的模型,則使用該模型。
研讀清單(在撰寫任何內容之前)
- references/cheatsheet.md:一頁包含所有重要規則。
- references/learner-profile.md:學習者是誰、他如何思考、哪些類比有效。
- references/lesson-template.md:每個課程的填空骨架。
- 已批准的範例,全部來自同一門課程(Lab 02, Tool Use & MCP):examples/course-map.md、01(一個錯誤句子 → 機制)、05(一個故事 → 一個規則)、08(權衡選項 → 標準存在的原因)。模仿它們的深度和語氣,而不是措辭。
- 選讀:references/teaching-research.md,這些規則背後的證據和來源。
不可妥協的教學規則
- 先講問題再講解法。 每個課程都以一個具體的、某件事失敗或造成困擾的情境開場。只有在講完問題和已被否定的顯而易見的替代方案之後,才會提到該技術。
- 教授意圖,而非實作。 如果素材教的是 X,學習者必須理解 X 是什麼、為什麼存在、何時使用以及何時不使用。程式碼僅作為已解釋概念的佐證(≤ 6 行),絕非逐步解說。
- 每個課程大聲拆解一個迷思。
- 從具體到抽象,用一個貫穿整個課程的貫穿範例。
- 學習者的思考方式:背景 → 實際限制 → 考慮過的選項及其被拒絕的原因 → 決策 → 成本/取捨 → 何時不使用它。明確地問「有沒有更好的東西?」
- 每個課程都有提取暫停:問題 →
…(渲染器會插入 4 秒暫停)→ 答案及其理由。 - 橋接:每個課程的結尾都要引出下一個課程要解決的問題。
- 沒有長度限制,但每個課程只有一個學習目標(通常 4–6 分鐘)。
- 變化 開場、主線和結尾;避免固定的模式。
- 絕不捏造事實或數字。 技術主張必須來自已閱讀的來源或驗證過的官方文件;假設情境必須清楚說明是情境。
工作流程
0 · 先提問
- 輸出語言:除非使用者已經說過,否則一定要問。
- 來源路徑,如果缺少的話。預設值(僅在知識庫佈局不同時確認):
- 筆記 →
<lab folder>/Master class/ - 影片 →
<lab folder>/_attachments/master-class/ - 資源 →
<lab folder>/_attachments/master-class/source/(course-map.md,scripts/,scenes/)
- 筆記 →
- 套用上述的模型路由。
1 · 有深度地研讀(有限制)
- 完整閱讀該實驗/筆記。如果是筆記本,閱讀其 Markdown 內容以及程式碼所展示的概念;絕不執行筆記本,也不讀取機密或
.env檔案。 - 追蹤
[[wikilinks]]/鏈接文件最多 2 層深度,僅在與素材的意圖相關時才這麼做。跳過未來的實驗、已涵蓋的 prerequisite 以及無關的離題內容。 - 允許查閱網路以驗證或完善原因(官方文件和規格)。需註明出處。
- 維護一個日誌:已讀 / 已丟棄 + 原因。
2 · 課程地圖 → 暫停等待批准
撰寫 <source>/course-map.md,格式如 examples/course-map.md:
- 用 2–3 句話說明意圖,表述學習者將能夠決定什麼;
- 研讀日誌;
- 一個課程表格:
# · 課程 · 開場問題 · 迷思 · 類比/開場 · 解決 → 留下懸念,其中課程 00 為總覽,最後一課為總結性決策。
3 · 腳本,每次一個課程
對於每個課程,依序進行:
- 重新閱讀備忘單、模板、地圖中該課程的對應行以及一個範例。
- 將 references/lesson-template.md 複製到
<source>/scripts/NN - Short title.script.md並填入內容。.script.md後綴是必需的,否則 Obsidian 會混淆腳本和課程筆記。 - 對其進行 lint(步驟 4),並在進入下一個課程之前修正問題。
旁白是為聽覺而寫的:沒有清單、表格或網址;數字要用人們日常說話的方式表達;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,除非是刻意的(例如,在明確為假設情境中的假設數字)。Linter 無法判斷這些,因此請自行檢查:
- 為何先於如何:只有在討論完已否定的替代方案之後才提及該技術
- 不需要看到任何程式碼也能理解
- 明確陳述並拆解了迷思
- 明確回答了 Hook 中的問題
- Screen 與旁白互補(沒有重複的文字)
- 大聲朗讀時,聽起來像一位老師,而不是條列式要點
- 連續課程的開場/結尾要有變化
5 · 渲染 → master-class-render
閱讀 ~/.copilot/skills/master-class-render/SKILL.md 並按照其說明操作:撰寫場景,然後用一個指令建立 MP4、課程筆記和 MOC,最後進行驗證。
6 · 報告
路徑(MOC 優先)、課程數量和總時長、lint 結果、任何未驗證的項目,以及研讀日誌摘要。