마스터 클래스은(는) 무엇을 하나요?
학습 자료를 학습자가 실제로 시청할 비디오 코스로 바꿉니다. 이 스킬은 교육학(읽기, 강좌 지도, 대본)을 담당합니다. 렌더링(다이어그램, 음성, 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단계를 정확히 수행하세요: 모든 대본을 작성하고, 오류가 없을 때까지 린트하고, scripts/README.md를 작성한 후 린트 요약을 반환하세요." - 그런 다음 직접 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 폴더>/Master class/ - 비디오 →
<lab 폴더>/_attachments/master-class/ - 소스 →
<lab 폴더>/_attachments/master-class/source/(course-map.md,scripts/,scenes/)
- 노트 →
- 위의 모델 라우팅을 적용하세요.
1 · 제한된 깊이로 읽기
- 랩/노트를 완전히 읽으세요. 노트북의 경우, 마크다운과 코드가 보여주는 개념을 읽으세요; 절대 노트북을 실행하지 말고 비밀번호나
.env파일을 읽지 마세요. - 자료의 의도와 관련된 경우에만
[[위키링크]]/연결된 문서를 최대 2단계 깊이까지 따라가세요. 이후의 랩, 이미 다룬 전제 조건, 관련 없는 주제는 건너뛰세요. - 웹 검색은 이유를 확인하거나 완성하기 위해 허용됩니다 (공식 문서와 명세서). 출처를 인용하세요.
- 로그를 유지하세요: 읽은 내용 / 폐기한 내용 + 이유.
2 · 강좌 지도 → 승인을 위해 중단
<source>/course-map.md를 examples/course-map.md처럼 작성하세요:
- 의도를 2-3문장으로, 학습자가 결정할 수 있게 되는 내용;
- 읽기 로그;
- 레슨 표:
# · 레슨 · 시작 문제 · 오해 · 비유/도입부 · 해결 → 미해결 과제. 레슨 00은 큰 그림, 마지막 레슨은 결정으로서의 종합.
3 · 대본, 레슨당 한 번에 하나씩
각 레슨에 대해 순서대로:
- 치트시트, 템플릿, 강좌 지도에서 해당 레슨 행, 그리고 하나의 예제를 다시 읽으세요.
- references/lesson-template.md를
<source>/scripts/NN - 짧은 제목.script.md로 복사하고 채우세요..script.md접미사는 필수입니다. 그렇지 않으면 Obsidian이 대본을 레슨 노트와 혼동합니다. - 린트 검사(4단계)를 수행하고 다음 레슨으로 넘어가기 전에 수정하세요.
내레이션은 듣기 위해 작성됩니다: 목록, 표, URL 없음; 숫자는 사람들이 말하는 방식으로; ID/코드는 백틱으로 감싸서 단어처럼 읽도록 합니다. 인출 연습 구간은 인출 연습 제목을 사용하고 질문과 답변 사이에 …를 사용합니다. 해당 구간의 Screen이 질문 자체라면 *"질문"* 형식으로 작성하세요.
마지막으로 <source>/scripts/README.md를 작성하세요: 레슨 표 + 루브릭 자체 검토.
4 · 린트 + 루브릭 (렌더링 전 반드시 통과)
python3 ~/.copilot/skills/master-class/scripts/lint_script.py "<source>/scripts" --sources "<lab 폴더>" <읽은 다른 노트들>
모든 ERROR를 수정하세요. 의도적이지 않은 한(예: 명확히 가상 시나리오의 가상 숫자) 모든 WARN을 수정하세요. 린터는 이것들을 판단할 수 없으므로 직접 확인하세요:
- '왜'가 '어떻게'보다 먼저 나오는가: 기술은 거부된 대안들 이후에만 등장하는가
- 코드를 전혀 보지 않고도 이해할 수 있는가
- 오해가 명시적으로 언급되고 해체되는가
- 도입부의 질문에 명시적으로 답하는가
- Screen이 내레이션을 보완하는가(중복 텍스트 없음)
- 소리 내어 읽었을 때 선생님처럼 들리는가, 불릿 리스트처럼 들리지 않는가
- 연속된 레슨 사이에 도입부/마무리가 다양한가
5 · 렌더링 → master-class-render
~/.copilot/skills/master-class-render/SKILL.md를 읽고 따르세요: 장면을 쓰고, 하나의 명령으로 MP4, 레슨 노트, MOC를 빌드한 후 검증하세요.
6 · 보고
경로(MOC 우선), 레슨 수 및 총 길이, 린트 결과, 미검증 사항, 읽기 로그 요약.