memory-curator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited memory-curator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
인자가 없으면 기본 모드, review 인자가 있으면 리뷰 모드로 실행한다.
retrospective와의 관계: 이 기본 모드는 retrospective 회고가 넘긴 메모리 후보를 받는 단일 관문이기도 하다. retrospective는 "무엇을 어디에 남길지"(볼트·스킬·문서화·CLAUDE.md)를 넓게 분배하고, 그중 메모리는 여기로 위임한다. 직접 호출되든 retrospective에서 이어지든 절차는 같다 — 핵심은 아래 4번 중복 방지 필터로 메모리가 비대해지지 않게 막는 것이다.# 현재 작업 디렉토리로 프로젝트 슬러그 계산
# 예: /Users/gagip/workspace/voltera/vibe-voltera-wearable-issue18
# → -Users-gagip-workspace-voltera-vibe-voltera-wearable-issue18
cwd=$(pwd)
slug=$(echo "$cwd" | sed 's|/|-|g' | sed 's|^-||')
project_dir="$HOME/.claude/projects/$slug"
# 가장 최근 JSONL 파일
ls -t "$project_dir"/*.jsonl 2>/dev/null | head -1JSONL에서 type=user와 type=assistant 메시지를 읽어 대화 흐름을 파악한다.
python3 - <<'EOF'
import json, sys
path = "<위에서 찾은 JSONL 경로>"
lines = [json.loads(l) for l in open(path)]
for l in lines:
if l.get('type') in ('user', 'assistant'):
role = l['type']
content = l.get('message', {}).get('content', '')
if isinstance(content, list):
text = ' '.join(c.get('text','') for c in content if c.get('type')=='text')
else:
text = str(content)
if text.strip() and not text.startswith('<system-reminder'):
print(f"[{role}] {text[:300]}")
EOFmemory_dir="$HOME/.claude/projects/$slug/memory"
cat "$memory_dir/MEMORY.md" 2>/dev/null
# 각 메모리 파일도 필요 시 읽기전역 메모리도 확인:
ls "$HOME/.claude/memory/" 2>/dev/null세션 내용을 분석해 아래 기준으로 메모리 후보를 판단한다.
저장하는 것 (메모리 타입별)
| 타입 | 저장 기준 |
|---|---|
feedback | 사용자가 접근 방식을 수정했거나 ("아니면", "그게 낫다", "그렇게 하지 마"), 명시적으로 확인한 비자명한 선택 |
project | 새로 알게 된 마감일, 의사결정 배경, 이해관계자 요구사항 |
user | 사용자의 역할/전문성/선호에 대해 새로 알게 된 사실 |
reference | 외부 시스템 위치, 대시보드 URL, 이슈 트래커 링크 |
저장하지 않는 것 — 중복 방지 필터 (이 스킬의 핵심 역할)
메모리의 가치는 "많이 쌓는 것"이 아니라 "다음에 행동을 바꿀 것만 남기는 것"이다. 아래에 걸리면 거른다. 빈손("이번 세션에서 추가할 메모리 없음")이 오히려 건강한 신호다 — 새로 줍는 것보다 이미 있는 것을 거르는 게 이 스킬의 본질이다.
신규 항목마다 아래 형식으로 파일 생성:
---
name: kebab-case-slug
description: 한 줄 요약 — MEMORY.md 인덱스에 표시될 내용
metadata:
type: feedback|project|user|reference
---
[내용]
**Why:** [이유 — feedback/project 타입에 필수]
**How to apply:** [적용 시점 — feedback/project 타입에 필수]저장 위치:
~/.claude/projects/<slug>/memory/<name>.md~/.claude/memory/<name>.mdMEMORY.md 인덱스에 한 줄 추가:
- [제목](파일명.md) — 한 줄 훅저장한 항목과 이유를 사용자에게 간결하게 보고한다. 저장한 것이 없으면 "이번 세션에서 추가할 메모리 항목이 없습니다"라고 말한다.
slug=$(pwd | sed 's|/|-|g' | sed 's|^-||')
ls ~/.claude/projects/$slug/memory/*.md 2>/dev/null
ls ~/.claude/memory/*.md 2>/dev/null각 파일의 frontmatter와 본문을 읽어 전체 메모리 목록을 파악한다.
다음 항목을 찾는다:
정리 대상 목록을 사용자에게 보여주고 확인을 받은 후 실행한다.
여러 feedback 메모리에서 반복되는 패턴이 보이면 CLAUDE.md에 추가할 전역 지침 후보로 제안한다.
형식:
## CLAUDE.md 승격 후보
다음 패턴이 여러 세션에서 반복됩니다. 전역 지침으로 추가하시겠습니까?
1. **[규칙 요약]**
- 근거: [관련 메모리 파일 목록]
- 제안 문구: "[CLAUDE.md에 추가할 내용]"project/reference 타입 메모리 중 노션 문서로 정리할 만한 내용을 추출해 초안을 제시한다.
형식:
## 노션 초안: [주제]
### 배경
[왜 이 작업을 했는지]
### 결정 사항
[주요 의사결정과 근거]
### 관련 링크
[PR, 이슈, 참고 문서]~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.