chore: initial commit — portable agent memory & skill scaffold

Extracted and cleaned up from a prior WSL/Windows agent-memory setup.
Contains only project-agnostic content:

- Claude_Memory/: feedback rules, user profile, reusable reference docs,
  session scratch space (claude_info/, claude_log/), mirrored skill defs
- caveman/: ultra-compressed communication mode skill + subcommands
- html-slide-deck/: self-contained HTML slide deck builder skill

Project-specific knowledge (previously mixed in) was moved out to each
project's own repository as part of this cleanup.
This commit is contained in:
JunHo Kim committed 2026-07-02 17:32:34 +09:00
commit 25256ec417
61 files changed
+4431

No files matched your search

+46
View File
@@ -0,0 +1,46 @@
# Memory Index
> 작업 시작 시 `claude_info/CHECKPOINT.md` 먼저 확인.
> 소스 코드 작업 전 `graphify-out/GRAPH_REPORT.md` 먼저 읽기.
## 세션 상태
- [CHECKPOINT](claude_info/CHECKPOINT.md) — 현재 작업 상태, 브랜치, 다음 시작 위치
- [NOTES](claude_info/NOTES.md) — 세션별 주요 발견사항·비직관적 동작
- [TIPS](claude_info/TIPS.md) — 재사용 패턴 & 해결법
- [TODO](claude_info/TODO.md) — 우선순위별 다음 작업 목록
## 작업 로그 (claude_log/)
- (현재 없음 — 프로젝트별 로그는 각 프로젝트 폴더에 기록. 포맷은 [README](claude_log/README.md) 참고)
## Feedback (행동 규칙)
- [Commit 전 Linter](feedback_linter_before_commit.md) — commit 전 변경 파일 linter 실행
- [Agent 자동 승인](feedback_agent_permission.md) — Agent(*) 자동 실행
- [Bash/Python3 자동 승인](feedback_bash_python_auto_approve.md) — Bash/Python3 즉시 실행
- [Truncated output 판단 금지](feedback_truncated_output.md) — "Output too large" 시 전체 파일 읽고 판단
- [Caveman 한국어](feedback_caveman_korean.md) — caveman 모드 활성 시 한국어 파편문
- [Caveman MD 스타일](feedback_caveman_md_style.md) — 기획/스펙 문서 caveman style 작성
- [Handoff 로드](feedback_handoff_load.md) — 핸드오프 파일 경유 세션 인계
- [Worktree 확인](feedback_worktree_check.md) — 코드 작업 전 git worktree list + .worktrees/ 확인
## User Profile
- [코드 주석 스타일](user_code_comment_style.md) — 주요 로직 영문 주석, Doxygen (모든 코드베이스 공통)
- [세션 시작 스킬 안내](user_session_start_skills.md) — 세션 시작 시 활성 스킬 목록 제시
- [Usage 리셋 알람](user_usage_alarm.md) — "usage 꽉 찼다" → 5시간 후 알람 예약
- [Developer Profile](user_developer_profile.md) — 소통/의사결정/디버깅 성향 프로필
## Reference
- [graphify 도구](reference_graphify.md) — Knowledge Graph 빌드, 출력물 구조, 명령어 (범용)
## Skills
- `claude_skills/` — archive-session, graphify, grill-me, handoff
- `../caveman/` — caveman, cavecrew, caveman-commit/compress/help/review/stats, find-skills
- `../html-slide-deck/`, `../html-slide-deck.skill`
---
## 프로젝트별 메모리는 각 프로젝트 폴더에서 관리
이 폴더(`Agent_Memories`)는 프로젝트에 무관하게 재사용 가능한 범용 지식만 보관한다.
특정 프로젝트(코드베이스·언어·툴체인에 종속된) 지식은 해당 프로젝트 폴더 안에서 관리한다.
예: Universal_AVI 프로젝트 관련 지식은 `4_Universal_AVI/.claude/claude_info/`, `claude_log/`에 있음
(2026-07-01 통합 정리 이전 자료는 `4_Universal_AVI/.claude/_imported_from_agent_memory_unification/`에 아카이브됨).
+21
View File
@@ -0,0 +1,21 @@
# CHECKPOINT — 세션 진행 상황
> 작업 시작 시 이 파일을 가장 먼저 확인할 것.
> 작업 종료 전 현재 상태로 업데이트할 것.
---
## 현재 상태
- **마지막 업데이트**: (없음)
- **진행 중인 작업**: 없음
- **브랜치**: (없음)
---
<!-- 업데이트 포맷:
## 현재 상태
- **마지막 업데이트**: 2026-MM-DD
- **진행 중인 작업**: 작업명 또는 없음
- **브랜치**: feature/xxx or HEAD
-->
+18
View File
@@ -0,0 +1,18 @@
# NOTES — 중요 발견사항
작업 중 발견한 설계 결정, 비직관적 동작, 주의사항을 기록.
---
## 포맷
```markdown
### [YYYY-MM-DD] 제목
**관련 파일**: `경로`
**내용**: 발견한 사실 / 결정 이유 / 주의사항
```
---
<!-- 여기에 노트 추가 -->
+22
View File
@@ -0,0 +1,22 @@
# TIPS — 재사용 패턴 & 해결법
반복적으로 쓰이는 코드 패턴, 편집 방법, 이슈 해결법을 기록.
---
## 포맷
```markdown
### [태그] 제목
**상황**: 어떤 상황에서 쓰는가
**해결책**: 방법 설명
**예시**:
\`\`\`cpp
// 코드
\`\`\`
```
---
<!-- 여기에 팁 추가 -->
+15
View File
@@ -0,0 +1,15 @@
# TODO — 다음 작업 목록
미완료 항목, 다음 세션에서 이어받을 작업을 우선순위 순으로 기록.
---
## 우선순위 기준
- `P1` — 즉시 처리 필요 (블로커)
- `P2` — 현재 마일스톤 내 처리
- `P3` — 다음 마일스톤 이후 가능
---
<!-- 여기에 TODO 추가 -->
+51
View File
@@ -0,0 +1,51 @@
# claude_md — 작업 지식 로그
작업 중 발견한 코드 구조, 패턴, 제약조건을 날짜/주제별로 기록.
에이전트가 동일 영역 재작업 시 중복 탐색을 줄이기 위한 지식 베이스.
---
## 파일 네이밍
```
LOG_YYYYMMDD_<Topic>.md
```
예시:
- `LOG_20260410_Auth_Module_Structure.md`
- `LOG_20260411_Build_Pipeline_Encoding.md`
---
## 파일 포맷
```markdown
---
date: YYYY-MM-DD
topic: 주제 (한글 가능)
related_files: [파일경로1, 파일경로2]
tags: [태그1, 태그2]
---
# 제목
## 발견 내용
...
## 주의사항
...
## 관련 코드 위치
- `파일경로:라인번호` — 설명
```
---
## 저장 시점
- 새로운 모듈/클래스 구조를 파악한 후
- 예상과 다른 동작/패턴을 발견했을 때
- 향후 동일 영역 작업 시 참조 가치가 있는 정보를 얻었을 때
+59
View File
@@ -0,0 +1,59 @@
---
name: archive-session
description: 현재 세션의 작업 결과, 파악된 지식, 다음 단계(TODO)를 프로젝트의 공식 문서 체계(claude_log, claude_info)에 따라 자동으로 아카이브하고 요약합니다. 작업 종료 직전이나 주요 마일스톤 완료 시 사용합니다.
---
# Archive Session
이 스킬은 현재 세션에서 발생한 지식과 진행 상황을 구조화된 문서로 저장하여 다음 세션에서 문맥을 완벽하게 복원할 수 있도록 돕습니다.
## 📁 문서 체계 (Storage Locations)
모든 문서는 프로젝트 루트의 `.claude/` 하위에 저장됩니다.
- **작업 로그 (`.claude/claude_log/`)**: 세션의 상세 기술적 내역 보관.
- 파일명: `LOG_YYYYMMDD_<Topic>.md`
- **세션 정보 (`.claude/claude_info/`)**: 지속적으로 업데이트되는 상태 정보.
- `CHECKPOINT.md`: 현재 위치 및 다음 시작 지점.
- `NOTES.md`: 파악된 주요 기술적 사실.
- `TIPS.md`: 재사용 가능한 패턴.
- `TODO.md`: 잔여 작업 목록.
## 🔄 워크플로우 (Workflow)
스킬 호출 시 다음 단계를 수행하세요:
### 1. 정보 수집 및 요약
- `git log` 및 `git diff`를 통해 이번 세션의 코드 변경 사항 확인.
- 파악된 새로운 아키텍처 규칙, 안티 패턴, 파일 구조 정리.
### 2. 상세 로그 작성 (`.claude/claude_log/`)
새로운 로그 파일을 생성합니다.
- **날짜**: YYYY-MM-DD
- **주제**: 핵심 작업 내용 (예: UI Mapping Enhancement)
- **내용**: 변경된 파일 목록, 구현된 주요 로직, 직면했던 문제와 해결 방법.
### 3. 상태 업데이트 (`.claude/claude_info/`)
기존 파일들을 **교체(Overwrite)** 하거나 **추가(Append)** 합니다.
- **CHECKPOINT**: 이전 내용을 지우고 현재의 최신 상태와 "Next Step"만 명확히 기술.
- **NOTES/TIPS**: 이번에 새로 배운 내용이 있다면 리스트에 추가.
- **TODO**: 완료된 항목은 제거하거나 체크(`[x]`)하고, 새로 발견된 과제 추가.
### 4. 프로젝트 루트 업데이트
- **CLAUDE.md**: 프로젝트 전반에 걸친 중요한 규칙(Rule) 변경이 있다면 반영.
### 5. Graphify 지식 그래프 갱신
세션 중 코드 변경이 있었다면 `graphify update .`를 실행하여 지식 그래프를 최신 상태로 유지.
```bash
if command -v graphify &> /dev/null; then
graphify update .
fi
```
- graphify CLI가 없으면 skip.
- 완료 후 사용자에게 갱신 여부 보고.
## 💡 작성 가이드라인 (Writing Guidelines)
- **언어**: 모든 문서는 **한국어**로 작성하되, 기술 용어는 원문을 병기하거나 그대로 사용 (예: Multi-line support).
- **간결성**: Caveman 스타일을 유지하여 핵심 정보만 불릿 포인트로 기술.
- **검증**: 아카이브 완료 후 `ls` 명령으로 파일 생성을 확인하고 사용자에게 요약 보고.
+1
View File
@@ -0,0 +1 @@
0.8.1
File diff suppressed because it is too large. Load diff
+10
View File
@@ -0,0 +1,10 @@
---
name: grill-me
description: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
---
Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
Ask the questions one at a time.
If a question can be answered by exploring the codebase, explore the codebase instead.
+13
View File
@@ -0,0 +1,13 @@
---
name: handoff
description: Compact the current conversation into a handoff document for another agent to pick up.
argument-hint: "What will the next session be used for?"
---
Write a handoff document summarising the current conversation so a fresh agent can continue the work. Save it to a path produced by `mktemp -t handoff-XXXXXX.md` (read the file before you write to it).
Suggest the skills to be used, if any, by the next session.
Do not duplicate content already captured in other artifacts (PRDs, plans, ADRs, issues, commits, diffs). Reference them by path or URL instead.
If the user passed arguments, treat them as a description of what the next session will focus on and tailor the doc accordingly.
+13
View File
@@ -0,0 +1,13 @@
---
name: Agent 도구 자동 승인
description: Agent(서브에이전트) 도구는 settings.json allow 목록에 등록되어 있어 자동 실행됨
type: feedback
---
`Agent(*)` = `~/.claude/settings.json` `permissions.allow` 등록 → 승인없이 자동실행.
**Why:** `Bash(python3:*)` 동일. 코드리뷰·탐색 서브에이전트 매번 승인프롬프트 불필요.
**How to apply:**
- `Agent` 호출 시 확인없이 실행
- `Bash(python3:*)` 동일 "Don't Ask" 동작
+11
View File
@@ -0,0 +1,11 @@
---
name: Bash/Python3 자동 승인
description: Bash 및 Python3 명령은 사용자 승인 없이 자동 실행
type: feedback
---
Bash/Python3 실행 시 승인 요청 금지.
**Why:** 반복 호출마다 승인 요청 → 작업 흐름 단절.
**How to apply:** Bash 호출 즉시 실행. 단, 파일 삭제·git push 등 파괴적 작업은 확인 필요.
+14
View File
@@ -0,0 +1,14 @@
---
name: caveman-korean
description: caveman 모드 활성 시 한국어로 응답
metadata:
node_type: memory
type: feedback
originSessionId: 8f69f046-87b8-492c-8f19-ca78a8512cfa
---
Caveman 모드 활성 여부 무관하게 모든 응답 한국어. Caveman 문체(간결·파편·조사 생략) 유지하되 언어는 항상 한국어.
**Why:** 사용자 명시 요청. 영어 caveman 출력 거부.
**How to apply:** `/caveman` 활성 시 한국어 파편문으로 응답. 예: "Bug in auth middleware" → "auth 미들웨어 버그".
Gemini/Antigravity 에이전트에서는 세션 기본값을 caveman mode(핵심만, 한국어)로 둘 것을 사용자가 선호.
+14
View File
@@ -0,0 +1,14 @@
---
name: feedback-caveman-md-style
description: "프로젝트 기획/스펙 MD 파일은 caveman style(파편문, 간결체)로 작성"
metadata:
node_type: memory
type: feedback
originSessionId: 9eaa0ad7-0128-4d11-be9b-fa11a0bb5936
---
프로젝트 기획/스펙 문서(PROJECT.md, REQUIREMENTS.md, ROADMAP.md 류 — 특정 기획 도구 무관)는 caveman style로 작성.
**Why:** 불필요한 설명 없이 핵심 정보만. 가독성·유지보수 효율.
**How to apply:** 문장 대신 키워드/명사구 중심. 동사는 최소화. 설명 문단 지양.
+15
View File
@@ -0,0 +1,15 @@
---
name: ""
metadata:
node_type: memory
originSessionId: e5b7295d-190c-4567-9da4-b103fffee074
---
"handoff 불러들여", "handoff 파일 로드", "이전 handoff 불러와" 등 handoff 파일 로드 요청 시:
1. `~/.claude/last_handoff_path.txt` 읽기 → 경로 확인
2. 해당 경로의 파일 Read → 컨텍스트 복원
**Why:** handoff 스킬은 매번 `/tmp/handoff-XXXXXX.md` 형태의 임시 파일을 생성하므로 경로가 고정되지 않음. PostToolUse hook이 Write 시 자동으로 `~/.claude/last_handoff_path.txt`에 경로를 저장.
**How to apply:** handoff 로드 요청 시 파일 경로 추측 금지. 반드시 `~/.claude/last_handoff_path.txt` 먼저 읽을 것.
+17
View File
@@ -0,0 +1,17 @@
---
name: Commit 전 Linter 수행
description: git commit 전 변경 파일에 linter 실행, 통과 후 commit
type: feedback
---
`git commit` 전 변경 파일에 linter 실행.
**Why:** 린팅 오류 커밋 이력 방지.
**How to apply:**
- `git diff --name-only HEAD` 또는 `git status`로 변경 파일 확인.
- `.clang-format` 있으면 `clang-format --dry-run`으로 C++ 검사.
- `.clang-tidy` 있으면 `clang-tidy` 정적 분석.
- 기타 linter(eslint, pylint 등) 있으면 실행.
- linter 오류 → 수정 후 commit.
- linter 설정 없어도 사용자에게 수행 여부 확인.
+14
View File
@@ -0,0 +1,14 @@
---
name: feedback-truncated-output
description: "system-reminder에 \"Output too large / Preview\" 표시 시 전체 파일 읽기 필수"
metadata:
node_type: memory
type: feedback
originSessionId: 442b5c1a-bf31-4f49-be3a-abe955ac1516
---
system-reminder에 "Output too large... Full output saved to: <path>" 메시지가 있으면, 미리보기(Preview)만 보고 내용을 판단하지 말 것.
**Why:** 2KB 미리보기만 보고 "CHECKPOINT.md / TODO.md만 주입됐다"고 잘못 단정한 사례 발생. 실제로는 NOTES.md, TIPS.md, 로그 파일 2개까지 모두 주입됐음.
**How to apply:** "Output too large" 문구 확인 시 → 저장된 전체 파일 경로를 Read 또는 `cat`으로 읽은 후 판단.
+16
View File
@@ -0,0 +1,16 @@
---
name: 코드 작업 전 Worktree 확인
description: 코드 작업 전 `git worktree list` + `.worktrees/` 확인 → 기존 worktree 재사용 or 신규 생성 여부 사용자 확인
type: feedback
---
코드 작업 전 반드시 worktree 상태 확인.
**Why:** 기존 worktree 모르고 main 브랜치 작업 or 브랜치 중복 생성 방지.
**How to apply:**
1. `git worktree list`로 등록된 worktree 목록 확인.
2. `.worktrees/` 하위 폴더명 확인 (`ls .worktrees/` 또는 `Glob`).
3. 관련 worktree 존재 → 해당 worktree 사용.
4. 관련 worktree 없음 → 사용자에게 신규 생성 여부 확인.
5. 생성 시 `.worktrees/<작업명>` 경로 + 브랜치명 사용자 협의.
+88
View File
@@ -0,0 +1,88 @@
---
name: reference_graphify
description: graphify 도구 전체 개요 — 설치·실행 방법, 출력물 위치, 쿼리 방법
metadata:
type: reference
---
## 개요
`graphify` (pip 패키지명: `graphifyy`)는 폴더의 코드·문서·이미지·영상을 Knowledge Graph로 변환하는 도구.
트리거: `/graphify` 슬래시 명령 → Skill tool `skill: "graphify"` 호출 필수.
> **공유 리소스 가능성**: graphify 출력물을 다른 AI Agent(예: Google Antigravity)와 공유하는 경우, 출력물 수정·재빌드 시 다른 Agent의 참조에 영향을 줄 수 있으므로 주의.
- Skill 위치: `Claude_Memory/claude_skills/graphify/SKILL.md`
---
## 출력물 구조 (`graphify-out/`)
| 파일 | 설명 |
|------|------|
| `GRAPH_REPORT.md` | 코드베이스 질문 시 **먼저 읽어야 할 파일**. God Nodes·커뮤니티·Surprising Connections 포함 |
| `graph.json` | 원본 그래프 데이터 (GraphRAG-ready JSON) |
| `graph.html` | 브라우저에서 여는 인터랙티브 시각화 |
| `manifest.json` | 이전 실행 기록 (incremental update용) |
| `cache/` | 파일별 시멘틱 추출 캐시 |
| `.graphify_labels.json` | 커뮤니티 레이블 |
| `.graphify_python` | 사용 중인 Python 인터프리터 경로 |
| `.graphify_root` | 스캔 루트 경로 |
---
## 주요 명령
```bash
# 최초 빌드
/graphify <path>
# 변경 파일만 재추출 (코드만 변경 시 LLM 불필요)
/graphify <path> --update
# 그래프 질문 (BFS: 넓은 컨텍스트)
/graphify query "<질문>"
# 그래프 질문 (DFS: 특정 경로 추적)
/graphify query "<질문>" --dfs
# 두 개념 간 최단 경로
/graphify path "<A>" "<B>"
# 단일 노드 설명
/graphify explain "<노드명>"
# 커뮤니티 재클러스터링만 (추출 생략)
/graphify <path> --cluster-only
```
---
## 관리 정책
- graphify 출력물(`graphify-out/`)은 대상 프로젝트 루트가 아니라 **이 메모리 폴더(`Agent_Memories`) 하위**에서 관리하는 것을 기본 원칙으로 한다 (프로젝트 저장소를 캐시로 오염시키지 않기 위함).
- 프로젝트별로 스캔 제외 규칙(불필요한 대용량/생성물 폴더)이 필요할 수 있음 — 대상 프로젝트의 `.gitignore` 패턴을 기본으로 따르고, 프로젝트 전용 제외 규칙은 해당 프로젝트의 자체 메모리/문서에 기록한다.
---
## 사용 규칙 (CLAUDE.md에서)
1. **소스 파일 읽기·grep/glob 검색·코드베이스 질문 전 항상 `graphify-out/GRAPH_REPORT.md` 먼저 읽기**
2. `graphify-out/wiki/index.md` 존재 시 raw 파일 대신 탐색
3. 교차 모듈 관계 질문: grep 대신 `graphify query/path/explain` 우선
4. graphify 출력물은 대상 프로젝트 루트가 아닌 이 메모리 폴더 하위에서 관리
---
## 설치 확인
```bash
# uv 기반 (권장)
uv tool install --upgrade graphifyy
# pip 기반
pip install graphifyy --break-system-packages
```
GEMINI_API_KEY 또는 GOOGLE_API_KEY 미설정 시 → Claude Code 서브에이전트로 시멘틱 추출 수행.
설정 시 → Gemini(`gemini-3-flash-preview`) 사용으로 토큰 절감.
+16
View File
@@ -0,0 +1,16 @@
---
name: 코드 주석 스타일 규칙
description: 구현 시 주요 Logic→영문 주석, 필요시 Doxygen
type: user
---
Impl: EN comment per major logic block. Doxygen for func/class/complex logic.
**Applies to:** 모든 코드베이스 (프로젝트 무관, 2026-04-08 global 규칙으로 격상됨)
**Why:** readability/doc quality 선호, all codebases.
**How to apply:**
- Every significant logic block → short English comment describing intent
- Function/class definitions → Doxygen `/** @brief ... @param ... @return ... */`
- Complex conditionals → inline comment: condition purpose
+27
View File
@@ -0,0 +1,27 @@
---
name: user_developer_profile
description: 사용자의 개발자 성향 프로필 — 소통/의사결정/디버깅/UX 철학 등
metadata:
type: user
---
| Dimension | Rating | Confidence |
|-----------|--------|------------|
| Communication | terse-direct | HIGH |
| Decisions | fast-intuitive | HIGH |
| Explanations | concise | MEDIUM |
| Debugging | diagnostic | MEDIUM |
| UX Philosophy | function-first | MEDIUM |
| Vendor Choices | opinionated | LOW |
| Frustrations | instruction-adherence | MEDIUM |
| Learning | self-directed | MEDIUM |
**Directives:**
- **Communication:** 간결·행동. 결과 먼저. 군더더기 없음.
- **Decisions:** 명확 추천, 빠르게. 목록 금지(요청 시 제외).
- **Explanations:** 설명+코드 간결. 한 문장 이유. 설명 불필요(요청 시 제외).
- **Debugging:** 원인 먼저, 수정.
- **UX Philosophy:** 기능 우선. 스타일 금지(요청 시). UX=사용성/데이터흐름.
- **Vendor Choices:** 기술 제약 준수. 대체 라이브러리 금지(요청 시). 최소 의존성.
- **Frustrations:** 지시 정확히. 반복 재독. 범위 확장 금지. 모호 시 질문.
- **Learning:** 맥락 파악 전제. 직접 답변. 기본 생략.
+11
View File
@@ -0,0 +1,11 @@
---
name: 세션 시작 시 활성 스킬 안내
description: 세션 시작 시 활성 skill 목록 사용자에게 알릴 것
type: user
---
세션 시작 시 활성 Claude skill 목록 사용자에게 안내.
**Why:** 사용자가 `/skills` 없이 활성 스킬 파악 가능.
**How to apply:** 새 세션 시작 시 (context 요약 후 첫 응답 포함) system-reminder 의 skills 목록 확인, 표 형식으로 제시.
+16
View File
@@ -0,0 +1,16 @@
---
name: user-usage-alarm
description: Claude Code usage 리셋 알람 패턴 — 사용자가 usage 꽉 찼다고 하면 1시간 후 PushNotification 예약
metadata:
node_type: memory
type: feedback
originSessionId: 246c0ef0-1a76-42ef-bcc3-483d58b9fc21
---
사용자 "usage 꽉 찼다"/"usage full" 전달 시:
1. 즉시 `ScheduleWakeup(delaySeconds=18000)` 호출 — 5시간 후 예약
2. 5시간 후 `PushNotification` 발송 — "Claude Code usage가 리셋됐을 것 같습니다"
**Why:** Claude Code usage % 조회 API 없음 — 직접 감지 불가. 사용자 수동 알림 기준 5시간 타이머.
**How to apply:** 사용자 usage 한도 도달 메시지 수신 즉시 — 확인 없이 ScheduleWakeup 실행.