learnlisted
Install: claude install-skill idean3885/claude-ops-agent
# 레슨런 승격
작업 세션을 기존 레슨런 자산과 대조해 승격 여부를 판정한다. 용어·절차·재발 분석은 [docs/lessons.md](../../docs/lessons.md) 가 정본이며 여기서 재정의하지 않는다.
## 판정 입력
두 가지를 함께 본다. 어느 하나로 대체하지 않는다.
| 입력 | 성격 |
|------|------|
| Stop 훅 후보 (`~/.claude/lesson-candidates.jsonl`) | 예비 신호. 정규식이 잡은 것만 들어 있다 |
| 작업 세션 트랜스크립트 | 판정 근거. 훅이 놓친 교정과 자산 재발이 여기에만 있다 |
**후보가 0건이어도 세션 대조는 한다.** 후보 파일만 읽으면 정규식이 놓친 교정은 재발 대조가 시작되지 않는다. 그 재발은 없었던 것이 된다. 검출 패턴은 부정어 중심이라 지시형·질문형 교정을 놓친다. 오판을 짚는 발화일수록 그 형태로 나온다.
### 후보 파일 필드
한 줄이 후보 1건이다. 사용자 발화 원문이 들어가므로 로컬 전용이고 레포에 커밋하지 않는다.
| 필드 | 내용 |
|------|------|
| `capturedAt` | 적립 시각 |
| `session` · `transcript` | 원본 포인터. 등재 시 그대로 옮긴다 |
| `cwd` | 발생 위치 |
| `signals` | 검출된 신호 라벨 |
| `excerpt` | 사용자 발화 앞 400자 |
## 절차
1. 후보 파일과 세션 트랜스크립트를 모은다
2. 세션에서 교정을 추린다. 후보에 없어도 교정이면 센다. 후보에 있어도 단순 방향 전환·취향 변경이면 뺀다. **추린 수를 적어 둔다.** 검출률의 분모가 이 수다
3. 소비 프로젝트의 레슨런 버킷 전체와 대조해 갈래를 정한다
4. 게이트 3종을 통과시킨다
5. 통과분만 등재한다. 등재와 로컬 인덱스 요약은 한 동작이다
6. 판정 요약을 남긴다 ([판정 요약 기록](#판정-요약-기록-필수))
7. 처리한 후보를 원본에서 옮긴다
### 갈래
| 판정 | 조치 |
|------|------|
| 신규 | 게이트를 걸고 등재안을 올린다 |
| 재발 | 새 파일을 만들지 않는다. 발생 이력을 더하고 분석으로 보낸다 |
| 무효화 | 자산이 지금 사실과 어긋난다. 사상 수정 또는 삭제 후보로 올린다 |
| 없음 | 아무것도 만들지 않는다 |
3번 대조는 자산 전체를 읽어야 하고 세션도 길다. 컨텍스트 비용이 크므로 서브에이전트에 위임하고 결론만 받는다. 위임할 때는 요약이 아니라 원본 경로를 넘긴다. 요약본을 받은 판정자가 원본을 받은 쪽보다 나빴다는 결과가 있다.
## 게이트
| 게이트 | 판정 |
|--------|------|
| 사실 확인 | 원천이 실제로 그 파일·그 위치에 있는가. 원천이 최신 사실과 맞는가 |
| 모순 확인 | 기존 레슨런과 충돌하지 않는가 |
| 일반화 확인 | 한 번의 변동을 규칙으로 굳히는 건 아닌가 |
통과하지 못한 후보는 기각으로 기록한다. 기각률이 이 절차의 자기 점검 지표다.
## 무효화