memory-curatorlisted
Install: claude install-skill gagip/gagip-dev
# memory-curator
## 모드 판별
인자가 없으면 **기본 모드**, `review` 인자가 있으면 **리뷰 모드**로 실행한다.
---
## 기본 모드: 세션 메모리 추출 및 저장
> **retrospective와의 관계**: 이 기본 모드는 `retrospective` 회고가 넘긴 메모리 후보를 받는 **단일 관문**이기도 하다. retrospective는 "무엇을 어디에 남길지"(볼트·스킬·문서화·상시 로드 지침)를 넓게 분배하고, 그중 **메모리는 여기로 위임**한다. 직접 호출되든 retrospective에서 이어지든 절차는 같다 — 핵심은 아래 4번 **중복 방지 필터**로 메모리가 비대해지지 않게 막는 것이다.
### 1. 현재 대화에서 후보 추출
먼저 **현재 대화 전체**를 읽어 사용자 교정, 확정한 비자명한 선택, 새 프로젝트 맥락과 재사용 가능한
참조를 추출한다. 세션 로그 파일을 찾지 못해도 이 단계만으로 기본 모드를 끝까지 수행할 수 있어야 한다.
### 2. 세션 로그로 보강 (선택)
현재 대화만으로 빠진 앞부분이 있다고 판단되고, 현재 하네스가 세션 로그 위치와 형식을 실제로
제공할 때만 로그를 보강 입력으로 읽는다.
- Claude Code의 알려진 위치는 `~/.claude/projects/<인코딩된-경로>/*.jsonl`이다.
- Codex 계열의 알려진 위치는 `~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl`이다.
- 다른 하네스에서는 위치를 추측하지 않는다. 로그를 읽을 수 없으면 Step 1 결과로 계속한다.
- JSONL 스키마가 다르므로 `type=user` 같은 필드를 공통이라고 가정하지 않는다. 실제 파일의 첫 몇
이벤트로 스키마를 확인한 뒤 사용자·assistant 텍스트만 추출하고 tool result는 제외한다.
로그는 **보강재**다. 현재 대화와 충돌하면 현재 대화에서 사용자가 명시적으로 확정한 내용을 우선한다.
### 3. 기존 메모리 파일 읽기
현재 하네스가 사용하는 설정 홈을 식별하고, 그 아래의 `memory/`를 전역 메모리 루트로 삼는다.
하네스가 이미 프로젝트 메모리 구조를 제공하면 그 구조를 유지한다. 예를 들어 Claude Code의 기존
프로젝트 메모리는 `~/.claude/projects/<slug>/memory/`다. 별도 프로젝트 구조가 없으면
`<하네스 홈>/memory/projects/<slug>/`를 프로젝트 메모리 루트로 쓴다.
각 루트의 `MEMORY.md`와 관련 메모리 파일을 읽어 중복을 확인한다. 하네스 홈을 확실히 식별하지
못하면 새 경로를 만들지 말고 사용자에게 저장 위치를 확인한다.
### 4. 저장할 항목 추출 기준
세션 내용을 분석해 아래 기준으로 메모리 후보를 판단한다.
**저장하는 것 (메모리 타입별)**
| 타입 | 저장 기준 |
|------|-----------|
| `feedback` | 사용자가 접근 방식을 수정했거나 ("아니면", "그게 낫다",