| name | mistake-recorder |
| description | 실수를 했을 때, 사용자에게 교정받았을 때, 가정이 틀렸을 때, 또는 코드베이스에 대해 비자명한 것을 배웠을 때 사용하세요. 실수와 교훈을 .claude/memory/ 파일에 영구적으로 기록하여 다음 세션에서 같은 실수를 반복하지 않도록 합니다. |
실수 기록 스킬
이 스킬은 이 하네스의 핵심 메커니즘이다. 같은 실수를 두 번 하지 않는 유일한
방법은 적어 두는 것이다.
언제 트리거하나
- 테스트가 가정 때문에 실패했을 때
- 사용자가 "그게 아니야", "그렇게 하면 안 돼", "다시" 같은 교정을 했을 때
- 자기 수정을 다시 읽고 틀린 걸 발견했을 때
- 린트/타입체크/런타임이 작성한 코드를 거부했을 때
- 작업 도중 코드베이스의 비자명한 사실을 알게 됐을 때
절차
-
무엇이 일어났는지 한 줄로 요약한다.
-
분류한다.
- 실수 →
.claude/memory/mistakes.md
- 항구적 교훈 →
.claude/memory/lessons.md
- 아키텍처 결정 →
.claude/memory/decisions.md
-
mistakes.md 항목 작성:
## YYYY-MM-DDTHH:MM:SSZ — <한 줄 제목>
- 맥락: <어떤 작업 중이었는가>
- 한 일: <틀린 행동>
- 왜 틀렸나: <증상이 아니라 근본 원인>
- 옳은 접근: <다음엔 어떻게>
- 태그: #<영역> #<언어> #<도구>
-
lessons.md 항목 작성 (1~5줄, 태그 포함):
- [#tag] <한 줄 사실> — <왜 중요한가, 짧게>
-
decisions.md 항목 작성 (ADR 형식):
## ADR-NNNN: <제목>
- 날짜: YYYY-MM-DD
- 상태: 채택
- 맥락: ...
- 결정: ...
- 결과: ...
-
Edit/Write 도구로 직접 추가한다. (PostToolUseFailure hook이 자동으로
초안을 채워주므로, 그 경우엔 교훈 줄만 채우면 된다.)
좋은 항목 vs 나쁜 항목
- ❌ 나쁨: "테스트가 깨졌다."
- ✅ 좋음: "타임존 변환을 가정해
datetime.utcnow()를 썼는데, 이 프로젝트는
모든 시각을 pendulum.now('UTC')로 다루기 때문에 비교가 깨졌다.
교훈: 새 시간 객체는 항상 pendulum을 사용한다."
위생
- 비밀, PII, 고객 식별 정보 금지.
- 한 파일이 ~500줄을 넘으면 진화 대기열이 가득 찼다는 신호 —
evolve 스킬을 먼저 실행하여 규칙/hook/스킬로 승급한다(50-memory-protocol.md와 정합).
- 동일 실수의 중복 기록은 횟수 카운터를 업데이트한다.