CS Drill — 실작업이 안 던져주는 것을 배운다
이 스킬이 다루는 것
| 상황 | 담당 |
|---|---|
| 커리큘럼의 개념을 처음부터 배우기 | 이 스킬 |
| 배운 것을 간격을 두고 다시 확인하기 | 이 스킬 |
| Claude가 짠 코드를 설명 못 하는 것 | senior-mentor 모드 C/L |
| 내가 짠 코드 리뷰 (알고리즘 풀이 포함) | senior-mentor 모드 R |
| 대화 중 개념 질문에 답이 새 개념을 가르침 | senior-mentor 모드 Q |
두 스킬이 재는 것이 다르다. senior-mentor는 "이미 존재하는 코드를 설명하는가"를 재고(이해 부채), 이 스킬은 "안 배운 것을 배웠는가"를 잰다(미학습). 재료의 출처가 반대다 — 앞은 작업이 던져주고, 뒤는 목록이 정한다.
원장
~/.claude/cs-progress.md 하나다. 커리큘럼·진도·학습 항목·스킵 기록이 전부 거기 있다.
comprehension-debt.md에 쓰지 않는다. 그 파일의 분포는 AI 코드 이해도를 재는 지표이고, 여기 결과를 섞으면 두 지표의 혼합이 되어 어느 쪽도 못 읽는다. 원작성자 실행에서 다른 지표를 그 원장에 얹었다가 같은 날 되돌린 사례가 있다 — 지표를 섞으면 원장이 통과 도장이 된다.
발동 경로 셋
1. 명시적 요청
"CS 공부하자", "복습할 거 있어?" 등. 원장을 읽고 아래 "고르는 순서"대로 하나를 낸다.
2. 세션 시작 훅
~/.claude/hooks/cs-due.ps1이 due: 날짜가 지난 항목 개수만 알린다. 개념명은 알리지 않는다 — 이름을 밝히면 사용자가 노트를 먼저 읽고 답할 수 있어서 재대조가 무효가 된다(senior-mentor의 겨냥 규칙과 같다).
알림을 받으면 묻고 시작한다. "지금 하나 볼까요"가 아니라 곧바로 문제를 내면 작업 흐름을 끊는다. 사용자가 아니라고 하면 스킵 기록 한 줄을 남기고 끝낸다.
3. 실작업 중 인접 개념이 스쳤을 때
대화에서 커리큘럼과 닿는 개념이 나왔을 때, 답변을 완전히 마친 뒤 인접 항목 하나를 제안한다.
senior-mentor 모드 Q와 경계를 지킨다. 사용자가 개념 질문을 했으면 그 문답 자체는 모드 Q 소유이고 comprehension-debt.md로 간다. 이 스킬은 그 뒤에 붙어 커리큘럼 항목 하나를 제안할 뿐이고, 진행되면 cs-progress.md에만 적재한다. 같은 사건이 두 원장에 들어가지 않는다.
- 제안은 한 건. 목록을 늘어놓지 않는다
- 거절당하면 그대로 넘어간다. 스킵 기록도 남기지 않는다 — 사용자가 요청한 적 없는 제안이다
고르는 순서
due:가 지난 항목 — 오래 지난 것부터- 없으면 실작업과 닿은 영역의 미착수 항목
- 그것도 없으면 커리큘럼 위에서부터
한 번에 하나만 낸다. 두 개를 내면 둘 다 흐려진다.
첫 노출 — 설명 모드
안 배운 개념에 예측-대조를 요구하지 않는다. 모르는 게 정상이라 모름만 쌓이고 배우는 것이 없다. senior-mentor 모드 L과 같은 흐름이다.
순서를 지킨다 — 상황 먼저, 이름 나중. 멘티 프로필(~/.claude/mentee-profile.md)이 정한 순서다. 용어를 먼저 던지면 다시 안 읽는다.
- 상황을 준다. "스레드 두 개가 각각 다른 변수를 쓰는데 성능이 안 나온다" 같은 구체적 장면
- 어떻게 될 것 같은지 묻는다. 답이 "모르겠다"여도 그대로 진행한다 — 여기서는 측정이 아니라 붙잡을 자리를 만드는 것이다
- 설명한다. 왜 그렇게 되는지, 무엇이 갈리는 지점인지
- 이름을 붙인다. "이게 false sharing입니다"
- 원장에 적재한다. 상태
학습함,다음은due:+3일
재대조 — 판별점을 겨냥한다
due:가 지난 항목은 다시 묻는다. 개념을 다시 설명해 달라고 하지 않는다. 그건 암기 확인이고, 통과해도 아는 층이 그대로다.
적재해 둔 판별점이 성립하는 새 상황을 만들어 묻는다.
| 예 (false sharing) | |
|---|---|
| ❌ 암기 확인 | "false sharing이 뭐죠?" |
| ⭕ 판별점 | "구조체에 카운터 두 개를 나란히 뒀는데 각각 다른 스레드가 씁니다. 둘 사이에 패딩 56바이트를 넣으면 무엇이 달라집니까" |
- 판별점을 스스로 짚으면 통과. 상태를 올리고
due를 다시 잡는다 - 못 짚으면 다시 설명하고
학습함으로 되돌린다. 설명을 듣고 납득한 것은 통과가 아니다 - 판별점이 성립하는 상황을 못 만들겠으면 그 항목은 건너뛰고 다음으로 간다. 억지로 물으면 상태만 올라가고 아는 것은 그대로다
스킵
한 단어면 끝난다. "패스", "나중에" 한 마디에 즉시 물러나고 원장 ## 스킵 기록에 한 줄만 남긴다.
스킵률이 이 스킬의 1차 지표다. 마찰이 커지면 사용자가 훅 알림 자체를 무시하게 되고, 그 시점에 스킬은 죽는다.
볼트 승격은 여기서 하지 않는다
배웠다는 이유만으로 지식 볼트에 노트를 만들지 않는다. 커리큘럼은 주기적으로 도는데 볼트의 유입량 통제는 드문 적재를 전제로 설계돼 있다. 볼트 경로와 승격 형식은 mentee-profile.md의 "지식 볼트" 절이 정한다.
승격은 배운 개념이 나중에 실작업과 만났을 때 한다. 그 만남 자체가 재노출 신호이기도 하다. 절차는 senior-mentor의 "볼트 승격" 절이 소유한다.
하지 말 것
- 퀴즈 결과를
comprehension-debt.md에 쓰는 것 — 지표가 섞여 어느 쪽도 못 읽게 된다 - 한 번에 두 개 이상 내는 것
- 훅 알림이나 대화에서 다음에 물을 개념명을 미리 밝히는 것
- 커리큘럼 목록을 이 조문에 옮겨 적는 것 — 원장이 소유한다
- 재대조에서 개념 정의를 다시 말해 달라고 하는 것
- 배운 즉시 볼트 노트를 만드는 것
- 사용자가 작업 중일 때 제안 없이 문제부터 내는 것
성공 기준 · 존재 의의
RATIONALE.md를 만들어 아래 셋을 시드로 옮기고, 이후 관측은 그 파일에 쌓는다. 만든 뒤에는 이 절을 참조만 하고 두 벌로 두지 않는다.
없애려는 것 — 실작업 경로는 정해진 학습 범위를 만나지 않는다. 이해 부채 원장에서 승격되는 개념은 그 사람의 작업이 실제로 부딪힌 것뿐이라, 작업이 안 닿는 영역은 아무리 오래 돌려도 안 나온다. 그 빈 곳을 채우는 것이 이 스킬이다.
재는 것 (1차) — 스킵률. 원장 ## 스킵 기록의 빈도. 3주 연속 스킵이면 절차를 고치지 말고 방식 자체를 재설계한다. 정기 발동을 쓰는 이상 마찰이 실패 경로이므로 마찰부터 잰다.
재는 것 (2차) — 재대조 통과율. 기한이 지나 다시 물었을 때 판별점을 스스로 짚은 비율. 커버리지로 재지 않는다 — 빨리 넘길수록 올라가서, 목록을 훑기만 한 상태와 실제로 배운 상태가 구분되지 않는다.
사용자가 "이 스킬 의도대로 작동해?" 라고 물으면 RATIONALE.md와 원장을 읽고 그 세션과 대조한다.