clean-memory

프로젝트 메모리를 스캔하여 글로벌 CLAUDE.md와 중복된 항목을 정리하고, 범용 규칙을 글로벌로 승격하는 스킬. "메모리 정리해줘", "메모리 청소", "중복 메모리 삭제", "글로벌로 올려", "메모리 승격", "clean memory", "prune memory", "promote memory" 등에서 트리거.

SKILL.md

GitHub

Clean Memory

프로젝트별 메모리를 스캔하여 글로벌 CLAUDE.md와 중복된 항목을 삭제하고, 범용 규칙을 글로벌로 승격 제안한다.

절차

1. 글로벌 CLAUDE.md 읽기

~/.claude/CLAUDE.md를 읽어 섹션별 규칙을 파악한다.

2. 전체 프로젝트 메모리 수집

ls ~/.claude/projects/*/memory/*.md

MEMORY.md(인덱스 파일)는 제외하고 개별 메모리 파일만 대상으로 한다.

3. 각 파일 분류

모든 메모리 파일을 읽고 아래 세 카테고리로 분류한다.

**판단 기준은 "내용이 프로젝트 특정인가 vs 범용인가"**이다. 파일명 접두사(feedback_, user_, project_)는 참고만 하고, 본문 내용으로 판단한다.

카테고리 조건 액션
중복 CLAUDE.md 특정 섹션에 이미 반영된 내용 삭제 대상
승격 후보 프로젝트 특정이 아닌 범용 규칙인데 CLAUDE.md에 없음 글로벌 승격 제안
보존 해당 프로젝트에서만 유효한 정보 건드리지 않음

분류 시 매핑 근거를 명시한다. 중복이면 CLAUDE.md 어느 섹션과 대응하는지, 승격이면 왜 범용인지.

4. 보고

카테고리별 요약을 한 번에 보여준다.

## 중복 (삭제 대상) — N건
| 파일 | 프로젝트 | 대응 CLAUDE.md 섹션 |
|------|----------|---------------------|
| feedback_no_git_clean.md | nimo-mobile-front | §7 Git Safety |
| ... | ... | ... |

## 승격 후보 — N건
| 파일 | 프로젝트 | 내용 요약 | 승격 위치 제안 |
|------|----------|-----------|---------------|
| feedback_foo.md | bar | ... | CLAUDE.md §5 또는 global memory |
| ... | ... | ... | ... |

## 보존 — N건
(목록만 간략히)

5. 사용자 승인 후 실행

승인을 받은 뒤 아래를 수행한다.

중복 삭제:

  1. rm 으로 파일 삭제
  2. 해당 프로젝트의 MEMORY.md에서 삭제된 파일 참조 라인 제거 (Edit)
  3. MEMORY.md가 비게 되면 헤더만 남기고 비운다 (# Memory Index 정도)

승격 실행 (사용자가 승인한 항목만):

  • CLAUDE.md 추가가 적합한 경우 → 해당 섹션에 규칙 추가 (Edit)
  • 독립 메모리가 적합한 경우 → 글로벌 프로젝트 메모리 디렉토리에 새 메모리 파일 생성 + MEMORY.md 업데이트
    • 글로벌 프로젝트 메모리 경로: ~/.claude/projects/$(echo $HOME/.claude | tr '/.' '-')/memory/
  • 승격 완료 후 원본 프로젝트 메모리 파일 삭제 + MEMORY.md 참조 제거

6. 결과 요약

실행 결과를 한 줄씩 보고한다.

- 삭제: N건
- 승격: N건 (CLAUDE.md M건, global memory K건)
- 보존: N건

Gotchas

  • MEMORY.md에서 참조를 제거할 때 빈 줄이 연속으로 남지 않도록 정리. 링크 라인만 제거하고 전후 빈 줄이 2개 이상 연속되면 1개로 줄인다.
  • 같은 내용이 3개 이상 프로젝트에 퍼져 있으면 거의 확실한 중복/승격 후보. 하지만 1개 프로젝트에만 있어도 내용이 범용이면 승격 대상이다. 개수가 아니라 내용으로 판단.
  • CLAUDE.md에 "의미적으로" 포함된 경우도 중복으로 판단. 예: "untracked 파일 삭제 금지"와 "git clean 사용 금지"는 같은 규칙.
  • 승격 시 CLAUDE.md가 비대해지지 않도록 기존 섹션에 자연스럽게 녹여넣는다. 새 섹션을 만들기보다 기존 섹션 확장을 우선.
  • 글로벌 프로젝트 메모리 경로(~/.claude/projects/$(echo $HOME/.claude | tr '/.' '-')/memory/)의 파일도 스캔 대상이지만, 글로벌 메모리 자체가 CLAUDE.md와 중복인 경우도 있다.