Help us improve
Share bugs, ideas, or general feedback.
From autonomy-obsession
대화 기록에서 '나'의 생성 규칙을 추출하는 스킬. 1,196개 세션을 Python으로 정제 → Haiku 병렬 분석 → Opus 종합하여 10개 레이어별 판단 규칙집을 만든다. /extract-me, '나 추출', '규칙 추출', '판단 기준 분석', 'extract rules', 'extract me', 'analyze my patterns' 등으로 트리거. 대화 기록 분석, 패턴 추출, 자아 모델링, pretending 관련 요청에도 반드시 사용할 것.
npx claudepluginhub tumblecat44/autonomy-obsession --plugin autonomy-obsessionHow this skill is triggered — by the user, by Claude, or both
Slash command
/autonomy-obsession:extract-meThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> 특성 목록(Table)이 아니라 생성 규칙(Function)을 추출한다.
Distills user profiles from prompt history or local agent chat logs, extracting personality, work traits, and communication preferences. Opt-in for explicit requests with privacy safeguards.
Extracts conversation patterns and logic jumps from tagged dialog reports, clustering trigger→reaction pairs into a thinking profile and self-interview document.
Analyzes recent /define sessions to extract user preference patterns like probing styles and trade-offs, then writes them to CLAUDE.md after approval. Improves future /define consistency.
Share bugs, ideas, or general feedback.
특성 목록(Table)이 아니라 생성 규칙(Function)을 추출한다. "미니멀 좋아함"이 아니라 "기본적으로 미니멀 선호. 단 반복 비용이 커지면 약간 복잡해도 자동화를 택함". 모든 규칙에는 반드시 반례(counter-example)가 있어야 한다.
상세 철학은 PHILOSOPHY.md를 참조.
Phase 1: 정제 (Python, ~30초)
history/index.json → 1,196 세션 JSONL
→ user/assistant 텍스트 + 도구 사용 내역만 추출
→ 379MB → 39MB (96.5% 노이즈 제거)
→ analysis/cleaned/ 에 정제된 파일 저장
Phase 2: 배치 (Python, ~5초)
→ 400KB 이하로 bin packing
→ ~115 bins 생성
→ analysis/batches.json 에 배치 매핑 저장
Phase 3: 추출 (Haiku 병렬, ~5분)
→ 각 bin → Haiku subagent
→ 10개 레이어별 판단 순간(moments) 추출
→ analysis/moments/ 에 bin별 결과 저장
Phase 4: 종합 (Opus, ~3분)
→ 전체 moments 통합
→ 중복 제거, 충돌 해결, 가치 위계 추론
→ analysis/rules.yaml (구조화된 규칙집)
→ analysis/pretend-as-me.md (시스템 프롬프트용)
Phase 5: 검증 (선택)
→ 처음 보는 상황 10개로 예측 테스트
→ 7/10 이상 일치 → 통과
scripts/clean.py를 실행한다.
이 스크립트는 각 JSONL 세션에서 다음만 추출한다:
type: "user" → message.content 중 type: "text" 부분type: "assistant" → message.content 중 type: "text" 부분type: "assistant" → message.content 중 type: "tool_use" → 도구명 + 입력 요약type: "user" → message.content 중 type: "tool_result" → 결과 (2KB 제한)출력: analysis/cleaned/{project}/{session_id}.json
{
"session_id": "abc123",
"project": "portagain",
"turns": [
{"role": "user", "text": "우아한 방법으로 해줘"},
{"role": "assistant", "text": "심볼릭 링크를 쓰겠습니다"},
{"role": "assistant", "tool": "Bash", "input": {"command": "ln -s ..."}},
{"role": "tool_result", "content": "링크 생성됨"},
{"role": "user", "text": "좋아"}
]
}
scripts/batch.py를 실행한다.
정제된 파일들을 400KB 이하 bin으로 묶는다 (first-fit decreasing bin packing). 600KB 초과 파일이 있으면 50턴 슬라이딩 윈도우로 분할한다.
출력: analysis/batches.json
{
"bins": [
{
"bin_id": 0,
"sessions": ["portagain/abc123.json", "portagain/def456.json"],
"total_kb": 380
}
],
"total_bins": 115,
"strategy": "first-fit-decreasing, limit=400KB"
}
각 bin에 대해 Haiku subagent를 생성한다. 병렬도는 10으로 시작하고, 실패 시 줄인다.
너는 대화 기록 분석가다. 아래 대화에서 "이 사람의 판단 방식"을 드러내는 순간들을 추출하라.
## 추출할 10개 레이어
0. 목표 함수: 이 사람이 궁극적으로 최적화하는 것
1. 금지 규칙: 절대 안 하는 선택
2. 트레이드오프 가중치: 두 가치가 충돌할 때 뭘 택하는지
3. 예외 조건: 평소 규칙을 깨는 상황
4. 불확실성 처리: 모를 때 어떻게 반응하는지
5. 상태 변화: 피곤/급할/자신있을 때 달라지는 판단
6. 감정 방향성: 뭘 불쾌해하고 뭘 통쾌해하는지
7. 실패 패턴/약점: 이 사람의 판단이 실패하는 순간
8. 자기 수정 루프: 틀렸을 때 어떻게 업데이트하는지
9. 서사적 자아: 자신을 어떤 사람으로 이해하는지
## 추출 포맷
각 발견에 대해:
```yaml
- layer: 0 # 레이어 번호
trigger: "어떤 상황에서"
judgment: "무엇을 기준으로 보고"
choice: "대체로 뭘 고르고"
exception: "언제 바꾸고"
expression: "어떤 말투로 드러내는지"
evidence: "실제 대화에서의 원문 인용"
counter_evidence: "이 규칙이 깨진 순간 (없으면 null)"
{cleaned_conversation_data}
### 결과 저장
`analysis/moments/bin-{id}.yaml`
---
## Phase 4: Opus 종합
모든 moments를 모아서 Opus agent에게 넘긴다.
### Opus 프롬프트
아래는 1,196개 대화 세션에서 추출한 판단 순간들이다. 이것들을 종합하여 이 사람의 "생성 규칙집"을 만들어라.
meta:
total_sessions_analyzed: 1196
total_moments_extracted: N
generated_at: "YYYY-MM-DD"
confidence_note: "빈도가 높을수록 confidence가 높다"
layers:
- id: 0
name: "목표 함수"
rules:
- id: "goal-001"
rule: "생성 규칙 문장"
confidence: high|medium|low
frequency: N # 이 규칙이 관찰된 횟수
evidence:
- "인용 1"
- "인용 2"
exceptions:
- condition: "이런 상황에서는"
behavior: "이렇게 바뀜"
evidence: "인용"
rules.yaml을 기반으로, AI 시스템 프롬프트에 바로 넣을 수 있는 형태로 변환하라. 포맷은 자연어 지시문. "이 사람은..." 이 아니라 "너는..." 형태로 쓴다.
---
## 진행 상태 관리
`analysis/progress.json`으로 상태를 추적한다.
```json
{
"phase": 3,
"phase_name": "extraction",
"total_bins": 115,
"completed_bins": [0, 1, 2, ...],
"failed_bins": [],
"started_at": "...",
"last_updated": "..."
}
이 파일이 존재하면 중단된 지점부터 재개한다. Phase 1-2는 멱등이므로 항상 재실행해도 안전하다.
/extract-me 를 실행하면 Phase 1 → 2 → 3 → 4 를 논스톱으로 끝까지 완주한다. 중간에 멈추지 않는다.
1. Phase 1 실행: python3 skills/extract-me/scripts/clean.py
→ 완료 확인: analysis/cleaned/ 에 파일 존재
→ 즉시 Phase 2로
2. Phase 2 실행: python3 skills/extract-me/scripts/batch.py
→ 완료 확인: analysis/batches.json 존재
→ 즉시 Phase 3으로
3. Phase 3 실행: batches.json에서 전체 bin 목록을 읽고,
10개씩 병렬로 Haiku subagent 생성.
각 agent는 bin 내 세션 파일을 읽고 moments를 추출하여
analysis/moments/bin-{NNN}.yaml 에 저장.
progress.json 으로 진행 추적.
전체 bin 완료될 때까지 반복.
→ 전체 bin 완료 확인
→ 즉시 Phase 4로
4. Phase 4 실행: analysis/moments/ 의 모든 yaml을 읽고,
Opus agent에게 종합을 맡김.
→ analysis/rules.yaml 생성
→ analysis/pretend-as-me.md 생성
→ 완료 보고
progress.json이 있으면 완료된 bin은 건너뛰고 남은 것만 처리한다./extract-me --status 로 현재 진행 상태를 확인할 수 있다.analysis/
├── cleaned/ # Phase 1 출력 (정제된 대화)
│ ├── portagain/
│ ├── ai-native-life/
│ └── ...
├── batches.json # Phase 2 출력 (배치 매핑)
├── moments/ # Phase 3 출력 (bin별 추출 결과)
│ ├── bin-000.yaml
│ ├── bin-001.yaml
│ └── ...
├── rules.yaml # Phase 4 출력 (최종 규칙집)
├── pretend-as-me.md # Phase 4 출력 (시스템 프롬프트용)
└── progress.json # 진행 상태