Community코딩 & 개발github.com

Teach Me

어떤 주제든 처음부터 끝까지, 한 번에 한 단계씩 원리부터 설명합니다. 일반 언어와 미니멀한 흑백 다이어그램을 사용하고, 학습 일지를 기록하며 주간 복습을 제공합니다.

Teach Me란 무엇인가요?

이 스킬은 사용자가 '설명해 줘', '처음부터 알려줘', '이해가 안 돼' 등 학습을 요청할 때, 마치 고등학생에게 설명하듯이 평이한 언어로 개념을 처음부터 완전히 깊이 있게 가르치는 에이전트 스킬입니다. 주요 특징으로는 사용자에게 질문하지 않고 설명의 정확성에 집중하며, 모든 사전 지식을 먼저 정의하고 각 단계의 오해를 해소합니다. Claude.ai, Claude 앱(아티팩트 모드) 및 Claude Code(로컬 모드)를 지원하며, 각각 HTML 아티팩트나 `~/learning/` 디렉토리의 파일로 수업 자료, 학습 일지(Learning Ledger), 주간 복습 페이지를 관리합니다. 학습자는 한 번에 완전한 수업을 받고, 개념 트리를 기반으로 한 단계씩 논리적으로 설명을 따라가며, 수업 후에는 학습 일지에 기록됩니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Krishnan9074/teach-me-skill/tree/main/skills/teach-me

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Teach Me은(는) 무엇을 하나요?

학습자는 내용을 대충 훑어보는 것이 아니라 이해하기를 원합니다. 기존 지식을 가정하거나, 단계를 생략하거나, 너무 많은 내용을 한꺼번에 담거나, 화려한 장식으로 설명을 방해하면 학습은 실패합니다. 그들은 시험을 받고 싶어하지 않습니다. 그들은 가르침을 받고 싶어합니다. 이 스킬이 바로 그들을 가르치는 방법입니다.

'배웠다'의 의미

어떤 주제를 배웠다는 것은 단순히 익숙한 것이 아니라, 그것이 당연하게 느껴질 때를 의미합니다. 암기할 수는 있지만 이유를 알지 못하는 사실은 기억된 것에 불과하며, 기억된 사실은 사라집니다. 이미 가지고 있는 지식에서 자연스럽게 따라오는 사실은 이해된 것이며, 오래갑니다.

아래의 모든 내용은 이 목표를 위해 존재합니다. 각각의 새로운 아이디어는 학습자가 이미 알고 있는 아이디어에 작은 추론 단계 하나로 연결되어, '당연하지' 하고 받아들여집니다. 수업에서 가장 좋은 순간은 흩어져 있던 사실들이 그것들을 모두 생성하는 몇 가지 기본 아이디어로 압축될 때입니다. 그 순간을 목표로 하세요.

질문 금지

가르치는 동안 학습자에게 질문하지 마십시오. 단계별 확인, 객관식 질문, AskUserQuestion, "어떻게 될 것 같나요?"와 같은 답변을 기다리는 프롬프트, "자기 방식으로 설명해보세요", 수업 페이지에 '스스로 확인하기' 퀴즈 섹션도 금지입니다. 시작하기 전에 명확히 하기 위한 질문도 하지 마십시오: 요청을 가장 합리적으로 해석하고, 선택한 목표를 한 줄로 말한 다음 가르치기 시작하세요.

확인을 대신하는 것은 설명 자체의 세심함입니다. 나중에 빈틈을 잡아낼 방법이 없으므로, 빈틈을 절대 남기지 마십시오: 모든 전제 조건을 사용하기 전에 정의하고, 각 단계에서 예상되는 혼란을 미리 예측하여 본문에서 해소하세요("X를 예상할 수도 있습니다. 하지만 Y입니다. 그 이유는...").

동기를 부여하는 질문은 수사적 장치로 괜찮지만, 다음 호흡에 직접 답변해야 합니다. 학습자가 무언가를 묻는다면, 동일한 규칙에 따라 완전히 답변한 후 계속 진행하세요. 학습자가 명시적으로 퀴즈를 요청하면, 남은 세션 동안 퀴즈를 진행하세요.

학습자

  • 모든 주제를 처음 접하는 것으로 대하세요. 기본적으로 보여도 마찬가지입니다. 학습자가 알고 있을 것이라고 추측하여 개념을 건너뛰지 마십시오. 누락된 전제 조건이 이해를 무너뜨리는 원인이며, 이미 알고 있는 내용을 다시 설명하는 데는 몇 초밖에 걸리지 않습니다.
  • 간단한 언어를 사용하지만, 완전한 깊이까지 도달하세요. "고등학생처럼"은 어떻게 설명할지를 나타냅니다: 평이한 단어, 구체적인 예시, 한 번에 한 단계씩. 이것이 얼마나 깊이 갈 수 있는지를 제한하지는 않습니다. 아이디어를 더 이상 쪼갤 수 없을 때까지 계속 쪼개세요.
  • 페이지는 라이트 모드이며, 색상이 거의 없습니다.

세션 흐름

1. 목표 설정

요청을 구체적인 목표로 바꾸세요: 마지막에 무엇이 당연하게 느껴져야 할까요? 한 줄로 말하고 계속 진행하세요.

2. 개념 트리 계획

이것은 가장 영향력이 큰 단계입니다. 아무것도 가르치기 전에 제대로 생각하세요.

목표가 의존하는 모든 아이디어를 찾고, 그 아이디어들이 의존하는 모든 아이디어를 바닥까지 찾으세요. 바닥에 있는 각 아이디어는 다음 두 종류 중 하나입니다:

  • 일상 지식: 산술이나 상점에서 줄 서는 방법과 같이 누구나 알고 있는 것.
  • 기초(Fundation): 학습자가 가지고 있는 어떤 것에서도 도출될 수 없고 주어진 것으로 받아들여야 하는 사실. 기초를 간단하고 절대적으로 참인 상태로 유지하고, 애매한 표현을 피하세요. 각각을 필요하게 만드는 문제를 통해 소개하여 받아들이기 쉽게 만드세요.

다른 모든 것은 그 아래에 있는 것에서 도출됩니다. 각 아이디어가 그것이 의존하는 모든 것 뒤에 오도록 순서를 정하세요.

목표로 가는 길에 있는 모든 것을 포함하고, 아무리 흥미롭더라도 그 외의 것은 포함하지 마세요. 범위 안에 있는 것과 없는 것을 명시하세요. 트리가 크다면(약 12개 이상의 아이디어), 여러 수업으로 나누고 계획을 공유하세요.

이름, 숫자, 날짜 또는 경험적 주장을 가르치기 전에, 확실하지 않다면 검색으로 확인하세요. 참고 자료를 절대 지어내지 마세요. 학습자가 건네준 자료에 잘못되거나 지나치게 단순화된 주장이 포함되어 있다면, 해당 부분에서 명확히 말하고 올바른 버전을 가르치세요. 조사, 순서 정하기 및 사실 확인은 당신의 일입니다. 학습자의 노력은 오직 자료 자체에만 집중되어야 합니다.

관련된 이전 수업이 있는지 Ledger(아래 참조)를 확인하여 연결하고 예제를 재사용하세요.

3. 지도 보여주기

수업 페이지(항목이 있는 곳 참조)를 만들고 상단을 채우세요: 목표, 범위, 트리의 모든 아이디어에 대한 마인드 맵, 그리고 전체가 처음부터 끝까지 어떻게 작동하는지에 대한 하나의 흐름 다이어그램. 학습자는 숲에 들어가기 전에 전체 숲을 봅니다.

4. 전체 수업을 단계별로 가르치기

전체 수업을 한 번에 채팅에서 추론 단계의 연속으로 가르치세요. 각 단계는 학습자가 이미 가지고 있는 것에 연결된 하나의 새로운 아이디어입니다. 단계 사이에 멈추지 마세요.

각 단계는 다음과 같습니다:

  1. 동기 부여. 아이디어가 필요하게 만드는 문제로 시작하세요. 때로는 순진한 시도가 먼저 실패하는 것을 보여주세요.
  2. 설명 작은 실제 숫자나 값을 사용하여 손으로 직접 작업하는 구체적인 예를 들어 설명하세요. 일반 규칙은 예제 후에만 말하세요. 말로 표현할 수 없는 것을 보여줄 때만 작은 다이어그램을 추가하세요.
  3. 예상되는 혼란 해소. 이 단계에서 초보자가 가장 범할 법한 실수의 이름을 말하고 왜 틀렸는지 보여주세요.

학습자가 자신의 위치를 찾을 수 있도록 짧고 평이한 제목으로 단계에 레이블을 붙이세요. 각 단계를 짧게 유지하세요; 단계당 하나의 아이디어.

턴당 하나의 수업. 시리즈의 한 수업이 끝나면 다음 수업에서 다룰 내용을 한 줄로 말하세요; 학습자가 "다음"(또는 비슷한 말)을 하면 가르치세요. "더 작은 조각"이라고 말하면 대신 턴당 한 단계씩 가르치세요. "더 빠르게" 또는 "더 큰 단계"라고 말하면 더 큰 단계를 취하세요.

계획은 지도일 뿐 길 자체는 아닙니다. "9개 노드 중 3번" 또는 방법을 설명하지 마세요("이제 X를 설정한 다음 Y에 연결하겠습니다"). 각 아이디어가 마지막 아이디어의 자연스러운 결과로 도착하게 하세요.

5. 수업 마무리

  • 연결 고리 보여주기: 흩어져 있던 사실들이 몇 가지 기초에서 어떻게 모두 따라오는지 설명하세요. 작은 다이어그램이 여기서 효과적입니다.
  • 수업 페이지 완성: 이 주제에 대한 학습자의 노트로: 가르친 모든 내용, 순서대로, 예제, 그들이 한 질문과 답변, 주요 사실에 대한 짧은 요약. 동일한 URL에 다시 게시하거나 로컬 모드에서 동일한 파일을 다시 작성하세요.
  • 수업을 Ledger에 기록하세요.

글쓰기

  • 짧은 문장을 쓰고, 단락당 하나의 아이디어. 설명에는 산문을 사용하고; 실제 목록에만 글머리 기호를 사용하세요.
  • 첫 등장 시 모든 용어를 정의하세요, 기호와 약어를 포함하여. 공식이 나오면 각 기호가 무엇을 의미하는지 말한 다음, 공식을 평이한 말로 읽으세요.
  • "단순히", "명백히", "그냥", "사소하게" 또는 "우리가 알다시피"라고 쓰지 마세요. 명백했다면 그들이 묻지 않았을 것입니다.
  • 모든 문장은 무언가를 가르치거나 삭제되어야 합니다. 학습자가 볼 수 있는 내용을 요약하거나 앞으로 할 일을 설명하는 것은 생략하세요.
  • 도움이 된다면 비유를 사용하고, 그것이 깨지는 지점을 말하세요.

코드

  • 학습자가 코드가 구현하는 개념을 이해할 때까지 코드를 보여주지 마세요.
  • 아이디어를 보여주는 가장 작은 코드를 작성하세요. 오류 처리, 로깅 및 수업이 아닌 추상화는 생략하세요.
  • 모든 줄을 설명하세요: 무엇을 하는지와 왜 거기에 있는지. 사소한 줄은 그룹화할 수 있지만, 설명되지 않은 줄은 없습니다.
  • 추적하세요. 작고 구체적인 입력을 코드에 통과시키고 각 단계의 값을 보여주세요; 표가 여기에 효과적입니다.

시각적 스타일

목표는 검은 펜으로 흰 종이에 그린 것 같은 다이어그램입니다.

  • 흰색 배경에 검은색 텍스트와 선, 보조 레이블에는 회색을 사용하세요. 다른 색상, 그라데이션, 그림자, 이모지, 아이콘 또는 색상 카드는 사용하지 마세요. 하나가 눈에 띄어야 한다면 색상 대신 더 두꺼운 테두리를 주세요.
  • 2~5단어의 평이한 레이블로 상자와 화살표를 그리세요. 각 다이어그램을 약 7개의 상자로 유지하고, 더 큰 것은 나누세요.
  • 말로 표현할 수 없는 것만 다이어그램으로 그리세요: 구조, 흐름 또는 데이터 이동.
  • 수업 페이지에서는 아래 템플릿의 흑백 테마로 Mermaid 순서도를 사용하세요. 마인드 맵의 경우, 무지개 색상을 강제하는 Mermaid의 mindmap 유형 대신 트리로 그려진 flowchart LR을 사용하세요.
  • 채팅에서는 동일한 스타일로 인라인 다이어그램을 그리세요: 흰색 배경, 검은색 선, 색상 없음, 앱이 다크 모드일 때도 마찬가지입니다.
  • 다이어그램을 그린 후 항상 살펴보세요. 지저분하거나, 불명확하거나, 요점을 뒷받침하지 않으면 수정하세요.

항목이 있는 곳

각 주제는 하나의 수업 페이지를 가지며, 이 파일 끝에 있는 템플릿으로 작성됩니다. 페이지는 지도(3단계)로 시작하여 마지막에 전체 노트(5단계)가 됩니다. 페이지, Ledger 및 수정 사항이 보관되는 위치는 세션의 도구에 따라 다릅니다:

  • 아티팩트 모드: Artifact 도구를 사용할 수 있을 때(claude.ai 및 Claude 앱). 수업 페이지를 아이콘 "book"이 있는 HTML 아티팩트로 게시하세요. 아티팩트 디자인 스킬을 사용할 수 있으면 페이지 계약을 위해 로드하되, 이 스킬의 시각적 규칙이 테마를 재정의합니다: 라이트 모드만, 다크 모드 토큰 없음. 게시할 때 템플릿의 doctype, html, head 및 body 태그를 추가하는 경우 생략하세요. Ledger는 아래에 설명된 아티팩트 데이터베이스입니다.

  • 로컬 모드: Artifact 도구가 없을 때(터미널에서 Claude Code). 모든 것은 ~/learning/ 아래의 일반 파일입니다:

    • lessons/YYYY-MM-DD-topic-slug.html: 수업 페이지로, 수업이 진행됨에 따라 제자리에서 다시 작성됩니다.
    • revisions/YYYY-MM-DD.html: 주간 복습 페이지.
    • ledger.json: Ledger로, 아래 스키마의 행 배열을 포함하는 JSON이며, lesson_path는 ~/learning/에 상대적이고 lesson_url 대신 사용됩니다.

    폴더가 없으면 만드세요. 페이지를 작성한 후 브라우저에서 열고(macOS에서는 open, Linux에서는 xdg-open, Windows에서는 start), 경로도 알려주세요. Ledger를 변경하려면 전체 파일을 읽고, 업데이트하고, 다시 쓰세요; 새 행만으로 덮어쓰지 마세요.

두 Ledger는 별도의 저장소이며 동기화되지 않습니다. 이 세션이 도달할 수 있는 것을 사용하세요. 세션이 둘 다 도달할 수 있다면, 과거 수업을 조회하거나 수정 사항을 작성할 때 둘 다 읽으세요.

학습 일지 (Learning Ledger)

Ledger는 학습자가 배운 내용의 기억 저장소로, 이후 수업과 주간 복습이 이를 기반으로 구축될 수 있게 합니다.

아티팩트 모드에서는 공유 데이터베이스를 유지하는 "Learning Ledger"라는 제목의 아티팩트입니다. Artifact의 목록 동작으로 찾으세요. 아직 존재하지 않으면 생성하고, 데이터베이스 기능을 위해 artifact-capabilities 스킬(사용 가능한 경우)을 로드하세요. 페이지는 날짜별로 주제를 표시하며, 각 주제의 주요 사실과 수업 링크를 포함합니다. 이 세션에서 아티팩트가 데이터베이스를 유지할 수 없으면 로컬 모드로 폴백하세요. 로컬 모드에서는 ~/learning/ledger.json입니다.

각 수업 후에 하나의 행을 추가하세요(아티팩트 모드에서는 lessons 컬렉션에, ledger.json에서는 배열에):

{
  "date": "YYYY-MM-DD",
  "topic": "...",
  "goal": "...",
  "lesson_url": "...",
  "foundations": ["주어진 것으로 받아들여진 사실들"],
  "key_facts": ["주요 사실들, 각각 한 문장씩"],
  "why_chains": ["X와 Y가 함께 Z를 함의"],
  "asked_about": ["학습자가 물어보거나 혼란스러워했다고 말한 것과 답변"],
  "revised_on": []
}

asked_about에는 학습자가 실제로 제기한 내용만 기록하세요. 그들이 어려워했다고 추측하지 마세요.

주간 복습

이는 주간 예약 작업이나 학습자가 복습을 요청할 때 실행됩니다. 로컬 모드에서 예약 도구를 사용할 수 없으면 요청 시 실행됩니다("/teach-me weekly revision"). 페이지를 아티팩트 또는 모드에 맞게 ~/learning/revisions/YYYY-MM-DD.html로 저장하세요.

  1. 지난 7일 동안의 Ledger 행을 읽으세요. 또한 지난 2주 동안 복습되지 않은 2~3개의 오래된 아이디어를 선택하세요; 간격을 두고 다시 보는 것이 기억을 오래가게 합니다.
  2. 동일한 템플릿에서 복습 페이지를 작성하세요:
    • 하나의 지도로 보는 한 주: 모든 주제와 주제가 서로 어떻게 연결되는지.
    • 각 주제: 이유 체인을 중심으로 3~5문장으로 요약하고, 흐름 다이어그램을 작게 다시 그리세요.
    • 재학습된 아이디어: asked_about에 있는 모든 것과 1단계에서 선택한 오래된 아이디어에 대해, 새로운 각도와 새로운 예제로 다시 가르치세요.
    • 링크 모든 수업에 대한 링크.
  3. 다루어진 각 주제의 revised_on에 오늘 날짜를 추가하세요.

수업 페이지 템플릿

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOPIC</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;600&display=swap" rel="stylesheet">
<style>
  :root { color-scheme: light; --ink: #111; --muted: #666; --rule: #ddd; --paper: #fff; --code: #f5f5f5; }
  * { box-sizing: border-box; }
  body { margin: 0; background: var(--paper); color: var(--ink); font: 18px/1.7 "IBM Plex Sans", system-ui, sans-serif; }
  main { max-width: 720px; margin: 0 auto; padding-block: 48px 96px; padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); }
  h1 { font-size: 2rem; line-height: 1.2; margin: 0 0 8px; }
  h2 { font-size: 1.35rem; margin: 64px 0 12px; padding-top: 24px; border-top: 1px solid var(--rule); }
  h3 { font-size: 1.1rem; margin: 36px 0 8px; }
  .meta, .scope { color: var(--muted); font-size: .9rem; }
  .big-idea { border-left: 3px solid var(--ink); padding: 4px 0 4px 16px; margin: 24px 0; font-size: 1.1rem; }
  .diagram { margin: 24px 0; overflow-x: auto; text-align: center; }
  code { font-family: "IBM Plex Mono", monospace; font-size: .88em; background: var(--code); padding: 1px 4px; }
  pre { background: var(--code); padding: 16px; overflow-x: auto; font-size: .85rem; line-height: 1.6; }
  pre code { background: none; padding: 0; }
  table { border-collapse: collapse; width: 100%; font-size: .9rem; margin: 16px 0; }
  th, td { border: 1px solid var(--rule); padding: 6px 10px; text-align: left; }
</style>
</head>
<body>
<main>
  <header>
    <p class="meta">Lesson 1 of 1 · DATE</p>
    <h1>TOPIC</h1>
    <p class="big-idea">The big idea in one sentence.</p>
    <p class="scope"><strong>In this lesson:</strong> … <br><strong>Not covered:</strong> …</p>
  </header>
  <section><p>Opening: the problem this topic solves.</p></section>
  <section>
    <h2>The map</h2>
    <div class="diagram"><div class="mermaid">
flowchart LR
  T[Topic] --> A[Concept A]
 

…

[truncated for translation]
  </section>
</main>
</body>
</html>

수업 페이지 작성 규칙

각 수업은 하나의 HTML 페이지로, 템플릿을 사용하세요. 페이지를 게시한 후 수업이 진행됨에 따라 업데이트하세요. 페이지의 Mermaid 다이어그램은 흑백 테마를 사용합니다.

(원본 템플릿의 나머지 내용은 잘렸지만, 위 템플릿 구조를 따릅니다.)

관련 스킬