| name | work-retro |
| description | 작업 task 종료 시점의 회고 초안을 생성합니다. 현재 대화 맥락과 memento-mcp의 과거 유사 회고를 결합해 '왜(근거) / 고려한 대안' 두 축으로 정리한 md를 ~/.claude/work-retro-logs/ 에 저장하고 memento에 reflect로 적재합니다. '실행 결과 측정' 섹션은 task 직후에 수치가 안 나오는 경우가 많아 보류 placeholder로 두며, 사용자가 나중에 /work-retro-measure로 명시적으로 추가할 때만 채워집니다. 트리거 키워드 "회고", "retro", "정리", "작업 마감", "측정 추가". |
| allowed-tools | Bash, Read, Write, Edit, Glob |
work-retro
작업 task가 끝났을 때 호출되는 회고 자동화 skill. 사용자의 알려진 3가지 누락 패턴을 다룬다:
- 왜 이 일을 해야 하는지(근거) 가 정리되지 않는 경향
- 여러 대안을 비교하지 않고 단일안으로 직행하는 경향
- 결과를 측정·기록하지 않는 경향
이 중 1·2번은 task 직후에 회고 가능하므로 빈 칸으로라도 노출하고 ⚠️로 누락을 시각화한다. 3번(측정)은 task 직후에 수치가 안 나오는 경우가 많아 회고 생성 시점에 강제하지 않는다 — 보류 placeholder로 두고, 측정값이 나오면 /work-retro-measure {파일경로}로 사용자가 명시적으로 추가한다.
두 가지 모드
| 모드 | 트리거 | 하는 일 |
|---|
| draft (기본) | /work-retro [주제] | 새 회고 md를 만들고 1·2·4·5 섹션 채움. 섹션 3은 보류 placeholder로 둠. memento에 reflect. |
| measure | /work-retro-measure {경로|주제} | 기존 회고 md의 섹션 3 placeholder를 측정값으로 교체. memento도 amend/reflect로 갱신. |
draft 모드 워크플로우
이 skill이 /work-retro로 호출되면 다음 순서를 따른다:
1. memento 가용성 점검
mcp__memento__memory_stats 호출
성공: 다음 단계로.
실패 (도구 없음 / 서버 다운 / 인증 실패): ${CLAUDE_PLUGIN_ROOT}/docs/memento-setup.md를 사용자에게 보여준 뒤, "memento 없이 md만 만들까요? (y/n)" 물어본다. y면 step 3을 skip하고 step 4부터 진행 (reflect 단계도 skip).
2. task 주제 결정
- skill 인자(
$ARGUMENTS)가 비어있지 않으면 그것을 그대로 주제로 사용.
- 비어있으면 직전 대화의 마지막 사용자 turn + 직전 어시스턴트 turn을 한 줄로 요약 (15단어 이내) — 이게 주제.
- 사용자에게 "주제: '...' 맞나요?" 한 번만 확인.
3. 유사 과거 회고 검색 (memento recall)
mcp__memento__recall 호출
text: <task 주제>
contextText: <현재 세션 최근 5 turns의 한국어 요약, ~300자>
limit: 5
mode: hybrid
similarity ≥ 0.6 인 결과만 채택. fragment id, similarity, topic, 1줄 요약을 step 4의 {{RECALL_RESULTS}}에 채울 데이터로 보관.
4. 회고 초안 작성
${CLAUDE_PLUGIN_ROOT}/templates/retro-template.md를 Read로 읽어 다음 placeholder를 치환:
| placeholder | 채움 규칙 |
|---|
{{TASK_TITLE}} | step 2의 주제 |
{{ISO_DATE}} | date +%Y-%m-%d (Bash) |
{{HOSTNAME}} | hostname -s |
{{SESSION_HASH}} | `date +%s |
{{LOG_PATH}} | step 5에서 결정될 저장 경로 (먼저 next_log_path.sh를 호출해 미리 받아둘 것) |
{{RECALL_RESULTS}} | step 3 결과를 - {topic} (sim={similarity:.2f}) — {요약} 줄로 |
섹션별 본문 채움 원칙:
- 현재 대화에서 명시적으로 드러난 사실만 채운다. 추측·창작 금지.
- 빈 bullet은 그대로 두고, 섹션 헤더 옆에
⚠️ 미기록 표시 추가.
- 섹션 1 (근거): 비어있으면 ⚠️ 미기록.
- 섹션 2 (대안): 대화에서 실제로 언급/검토된 대안만 채운다. 1개 이하면 헤더에 ⚠️ 단일안 직행 표시.
- 섹션 3 (측정): draft 모드에서는 절대 채우지 않는다. 템플릿의 placeholder 블록(
<!-- MEASUREMENT-SECTION:START --> ... :END -->)을 그대로 두되, {{LOG_PATH}}만 실제 경로로 치환. 사용자에게 ⚠️ 표시도 하지 않는다 (의도된 보류이므로).
- 섹션 4 (학습): 대화에서 드러난 것만. 비면 그대로.
5. md 파일 저장
bash ${CLAUDE_PLUGIN_ROOT}/scripts/next_log_path.sh "<주제>"
위 경로로 Write 도구를 사용해 step 4의 결과 저장. 디렉토리가 없으면 스크립트가 만든다.
6. memento에 reflect
step 1에서 memento 가용했을 때만 실행:
mcp__memento__reflect 호출
topic: <task 주제>
summary: 섹션 1/2 의 핵심을 3-5문장으로 (측정은 보류 상태임을 명시)
decisions: 섹션 2의 "선택한 안과 그 근거" — 채워졌으면
questions: ⚠️로 표시된 미기록 항목 리스트 + "측정 결과 추후 입력 필요"
keywords: 주제에서 명사 3-5개 자동 추출
importance: 0.6 (기본)
적재된 fragment id를 사용자 출력에 함께 보여주면, 나중에 measure 모드에서 amend 대상을 식별하기 쉬워진다.
7. 사용자에게 결과 출력
다음 형식의 짧은 메시지를 한국어로:
회고 저장 완료
- 파일: ~/.claude/work-retro-logs/2026-05-05/03-juje-slug.md
- memento fragment: <id> 적재됨 (or skip됨 — 사유)
- ⚠️ 미기록 항목 N개: [리스트] (섹션 3 측정은 의도된 보류이므로 제외)
- 📊 측정 추가 시: /work-retro-measure ~/.claude/work-retro-logs/2026-05-05/03-juje-slug.md
- 관련 과거 회고: M개 (recall similarity ≥ 0.6)
섹션 1/2/4의 미기록이 있을 때만 "지금 채워서 다시 저장할까요?"를 묻는다 (섹션 3 측정 보류는 묻지 않음).
measure 모드 워크플로우
/work-retro-measure {경로 또는 주제}로 호출되면 다음 순서를 따른다:
M1. 대상 회고 파일 식별
- 인자가 절대/상대 경로(
.md 끝남)면 그대로 사용.
- 주제 문자열이면
~/.claude/work-retro-logs/ 하위에서 slug가 가장 잘 매칭되는 가장 최근 파일을 찾는다 (Glob).
- 후보가 여러 개면 사용자에게 1회 확인.
M2. placeholder 존재 여부 점검
대상 파일을 Read해서 <!-- MEASUREMENT-SECTION:START --> ... <!-- MEASUREMENT-SECTION:END --> 블록이 있는지 확인.
- 없음 → "이미 측정값이 입력된 회고로 보입니다. 덮어쓸까요?"를 묻고, y면 기존 섹션 3을 새 측정값으로 교체. n이면 종료.
- 있음 → 다음 단계로.
M3. 측정값 수집
사용자에게 다음 4 항목을 한 번에 묻는다 (인자 본문에 이미 포함되어 있으면 추출):
- 산출물 (파일/PR/배포 URL 등)
- 수치/지표 (수치 우선; 가능한 한 정량)
- 예상 대비 실제
- 남은 리스크
빈 항목은 빈 채로 두되, 4개 모두 빈 경우 사용자에게 "측정값이 모두 비어있는데 진행할까요?"를 한 번 확인.
M4. 회고 파일의 섹션 3 교체
${CLAUDE_PLUGIN_ROOT}/templates/retro-measurement.md를 읽어 4 항목을 채운 뒤, 대상 파일의 <!-- MEASUREMENT-SECTION:START --> ... :END --> 블록을 통째로 교체. Edit 도구로 정확한 마커 매칭 사용.
{{MEASURED_AT}}는 date +%Y-%m-%dT%H:%M:%S%z.
M5. memento 갱신
가능하면 amend, 안 되면 새 reflect:
- draft 시 fragment id를 알면 →
mcp__memento__amend로 procedures/summary에 측정값 추가하고 questions에서 "측정 결과 추후 입력 필요" 제거.
- id를 모르면 →
mcp__memento__recall로 같은 topic 검색해 가장 최근 fragment에 amend, 또는 단순히 새 reflect로 측정 결과만 atomic fragment 추가.
M6. 사용자에게 결과 출력
측정값 추가 완료
- 파일: <경로> (섹션 3 갱신)
- memento: <amend된 id> 또는 <새 fragment id>
- 비어있는 항목: [있다면 리스트]
중요 지침 / 안티패턴
- 추측으로 빈 칸을 채우지 말 것. 사용자가 자기 회고를 보고 "이런 말 한 적 없는데"라고 느끼면 skill이 노이즈가 된다.
- draft 모드에서 섹션 3 측정값을 절대 자동으로 채우지 말 것. 사용자가 명시적으로
/work-retro-measure를 호출할 때만 채운다. (사용자 결정 — 2026-05-05)
${CLAUDE_PLUGIN_ROOT} 환경변수로 plugin 내부 자원에 접근. 절대 경로 하드코딩 금지.
- 회고 데이터는 plugin 디렉토리 밖(
~/.claude/work-retro-logs/)에 저장.
- 다른 skill에 위임하지 말 것.
memory-write / chat-save와 책임이 겹치지 않는다.