1 시스템 개요
이 시스템은 Obsidian Vault를 지식 저장소로, Claude Code를 AI 두뇌로 연결해 1인 CEO가 사업 실행과 지식 관리를 동시에 처리할 수 있도록 설계된 통합 환경입니다. Andrej Karpathy의 LLM Wiki 패러다임에서 착안했으며, 모바일(Telegram 봇)과 PC(Claude Code)를 완전히 연결합니다.
Obsidian Vault
모든 노트의 물리적 저장소. Git으로 버전 관리 및 백업.
Claude Code
터미널에서 실행하는 AI. 슬래시 커맨드 19개 + 훅 8개로 자동화.
Telegram 봇
모바일에서 언제든 Vault에 텍스트·이미지를 던지는 모바일 인터페이스.
QMD + Graphify
한국어 시맨틱 검색(QMD)과 지식 그래프(Graphify)로 노트 탐색.
raw/ 는 절대 불변(IMMUTABLE). 모든 AI 가공은 wiki/ 로. 방향은 raw → wiki 단방향만 허용.
✦ 왜 이 시스템인가
이 시스템을 구축하기 전에 먼저 이해해야 할 것이 있습니다. 이것은 단순한 노트 앱이 아닙니다. 사업 또는 여러 프로젝트를 함께 운영할 때 생기는 자료 분산과 맥락 반복을 줄이기 위한 예시 시스템입니다.
기존 도구와의 비교
| 도구/방식 | 한계 | 이 시스템이 해결하는 방법 |
|---|---|---|
| Notion 단독 | 자체 AI·검색 기능을 제공하지만 로컬 파일과 Claude Code를 직접 연결하는 운영 방식과 다릅니다. | Claude Code가 Vault를 직접 읽고 쓴다. 노트 자체가 Claude의 장기 기억이 됨. |
| ChatGPT / Claude 웹 | 프로젝트·메모리·파일 연동 기능은 서비스와 설정에 따라 다릅니다. | SessionStart 훅이 설정한 핵심 문서만 세션마다 다시 참고하게 할 수 있으며 전체 맥락을 보장하지는 않습니다. |
| Obsidian 단독 | 노트는 잘 쌓이지만 AI가 없어서 분석·연결·생성을 사람이 전부 해야 함. 스케일 안 됨. | Claude가 raw → wiki 변환, 교차 링크, 품질 검사를 모두 자동화. 사람은 방향만 설정. |
| Google Keep / 메모 앱 | 캡처는 쉽지만 정리가 안 됨. 검색이 약하고 연결이 없어서 나중에 쓸 수 없는 정보가 됨. | Telegram 봇으로 캡처 마찰 최소화 + /compile로 자동 정제 + QMD로 의미 기반 검색. |
| 스프레드시트 성과 관리 | 수동으로 입력해야 해서 안 하게 됨. 맥락이 없는 숫자만 남음. | /brag-spotter가 git log와 대화를 분석해 성과를 자동 추출. 입력 부담 제로. |
맥락적 장점 7가지
일반 Claude 대화는 세션이 끝나면 리셋됩니다. 이 시스템은 North Star, 진행 중 프로젝트, 과거 결정, 협업자 프로필을 SessionStart 훅으로 매 세션 자동 주입합니다. "우리 example-service 기술스택이 뭐였지?"를 설명할 필요가 없습니다. Claude가 이미 알고 있습니다.
노트 100개가 각각 따로 있는 것과, 100개가 wikilink로 연결된 것은 검색 품질이 완전히 다릅니다. "3개월 전 투자자 피드백이 이번 기능 결정에 어떤 영향을 줬나?"를 추적할 수 있습니다. 지식은 고립되면 죽고, 연결되면 산다. QMD와 Graphify가 이 연결을 자동화합니다.
중요한 아이디어는 이동 중에도 떠오를 수 있습니다. 하지만 PC를 열었을 때는 이미 잊어버립니다. Telegram 봇에 텍스트를 던지면 thinking/session-logs/에 자동 저장됩니다. 캡처의 마찰을 0으로 낮추는 것이 이 시스템의 핵심 설계 원칙 중 하나입니다.
AI가 정보를 요약하고 재가공하다 보면 원본이 변질되는 경우가 생깁니다. 3-Layer 구조의 raw/ IMMUTABLE 규칙은 원본을 영구 보존합니다. "Claude가 요약한 것"과 "실제로 쓰인 것"이 항상 분리되어 있어서, 나중에 원본을 다시 다른 시각으로 재해석할 수 있습니다.
1인 CEO의 가장 큰 맹점은 바쁘게 일하면서도 "내가 뭘 했는지"를 정리 못한다는 것입니다. /brag-spotter는 git commit 메시지와 대화 이력을 분석해 성과를 자동으로 perf/Brag Doc.md에 추가합니다. IR 자료, 투자자 보고, 팀 리뷰를 준비할 때 이미 데이터가 쌓여 있습니다.
Vault에 파일이 쌓일수록 Claude가 "전부 읽으려는" 경향이 생깁니다. Graphify는 157개 노드의 관계를 하나의 리포트로 압축하고, QMD는 의미 기반 검색으로 관련 파일만 찾아줍니다. 파일 100개를 읽는 대신 관련 5개만 읽어서 같은 품질의 답변을 냅니다. 비용과 속도가 모두 개선됩니다.
Claude와 나눈 대화의 결론이 wiki로 다시 저장되고(Filing-Back), 그 wiki가 다음 대화의 컨텍스트가 됩니다. 쓸수록 더 똑똑해지는 구조입니다. 6개월 후 Claude는 당신의 사업, 결정 패턴, 협업자들을 외부 AI보다 훨씬 깊이 이해하는 전담 어시스턴트가 됩니다.
이 시스템의 핵심은 "Claude에게 매번 설명하는 대신, Claude가 이미 알고 있게 만드는 것"입니다. Vault가 Claude의 장기 기억이 되고, Claude는 그 기억 위에서 사업 실행을 도웁니다.
3-Layer 구조
이 시스템의 핵심 규칙입니다. 모든 정보는 아래 세 레이어 중 하나에 정확히 속해야 합니다.
| 레이어 | 경로 | 소유자 | 역할 | 수정 가능? |
|---|---|---|---|---|
| raw/ | raw/ |
사용자 | 원본 자료 — 웹 아티클, Telegram 덤프, 이미지, 데이터 | 읽기 전용 |
| wiki/ | wiki/ |
Claude | AI가 raw를 분석해 생성한 인사이트 노트 | Claude만 |
| CLAUDE.md | 루트 | 공동 | 시스템 스키마, 규칙, 컨벤션 정의 | 공동 관리 |
wiki/ → raw/ 방향 수정은 절대 금지입니다. CLAUDE.md에 읽기 전용 규칙을 명시하고 Git으로 변경을 검토하세요. 텍스트 규칙만으로 파일 권한이 기술적으로 잠기지는 않습니다.
폴더 구조 (전체)
C:\Vault\YourName\
│
├── CLAUDE.md ← 시스템 헌법 (Claude가 세션마다 읽음)
├── Home.md ← 대시보드
│
├── brain/ ← 목표·기억·결정·패턴
│ ├── North Star.md ← 최상위 목표 (세션 시작 시 자동 로딩)
│ ├── Key Decisions.md ← 주요 결정 기록
│ ├── Patterns.md ← 반복 패턴 관찰
│ ├── Gotchas.md ← 알려진 함정·버그
│ └── System-Guide.md ← 이 시스템 사용 설명서
│
├── org/
│ └── people/ ← 협업자 프로필 (/people-profiler로 관리)
│
├── work/
│ ├── active/ ← 진행 중 프로젝트 (세션 시작 시 자동 스캔)
│ │ ├── new-product.md
│ │ ├── example-website.md
│ │ └── example-service.md
│ ├── archive/2026/ ← 완료 프로젝트 (/project-archive로 이동)
│ ├── 1-1/ ← 1:1 미팅 노트
│ └── Index.md ← 전체 프로젝트 인덱스
│
├── perf/
│ ├── Brag Doc.md ← 성과 기록 (/brag-spotter가 자동 추가)
│ ├── brag/ ← 주간 brag 파일
│ └── competencies/ ← 역량 노트
│
├── raw/ ← 원본 자료 (IMMUTABLE — 수정 절대 금지)
│ ├── articles/ ← defuddle로 저장한 웹 아티클
│ ├── research/ ← 리서치 자료
│ ├── competitors/ ← 경쟁사 분석 원본
│ ├── data/ ← 데이터 파일
│ └── images/ ← Telegram 이미지 (주제별 폴더)
│ ├── unsorted/ ← 캡션 없이 온 이미지
│ └── {주제}/{하위주제}/ ← #주제/하위 캡션으로 자동 분류
│
├── wiki/ ← Claude가 생성·관리하는 인사이트 노트
│ ├── index.md ← 전체 위키 인덱스 (/compile이 자동 갱신)
│ ├── concepts/ ← 개념 노트
│ ├── entities/ ← 엔티티 노트
│ └── decisions/ ← 결정 노트
│
├── output/ ← 산출물
│ ├── answers/ ← Q&A 답변 (Filing-Back으로 wiki 승격)
│ ├── reports/
│ ├── slides/
│ └── charts/
│
├── thinking/
│ └── session-logs/ ← /dump 캡처, 세션 로그 자동 저장
│
├── templates/ ← 노트 템플릿
│
├── graphify-out/ ← Graphify 지식 그래프 출력
│ ├── GRAPH_REPORT.md ← 그래프 요약 (세션 시작 시 자동 참조)
│ └── wiki/index.md
│
└── .claude/ ← Claude Code 설정 (숨김 폴더)
├── commands/ ← 슬래시 커맨드 19개
├── skills/ ← 스킬 6개
├── scripts/ ← 훅 스크립트
└── rules/ ← 상세 규칙 문서
일상 워크플로우 한눈에 보기
| 시간대 | 행동 | 도구 | 결과물 |
|---|---|---|---|
| 아침 출근 | claude 실행 → /standup | Claude Code | 오늘 우선순위 3개 |
| 이동 중 | Telegram으로 텍스트 전송 | Telegram 봇 | thinking/session-logs/ 자동 저장 |
| 이미지 캡처 | 이미지 + #주제/하위 캡션 | Telegram 봇 | raw/images/주제/하위/ 자동 저장 |
| 웹 리서치 | defuddle parse "URL" --md > raw/articles/제목.md | defuddle | raw/articles/에 클린 마크다운 |
| 지식 정제 | /compile | Claude Code | wiki/ 인사이트 노트 생성 |
| 퇴근 전 | /wrap-up | Claude Code | 자동 커밋 + 검증 리포트 |
| 주간 | /weekly, /brag-spotter | Claude Code | 주간 요약, 성과 기록 |
2 사전 준비
Python은 훅 스크립트(자동 커밋, 분류, 검증) 실행에 필수. Node.js는 QMD·defuddle와 일부 훅 코드에 필요합니다. Claude Code 기본 설치에는 별도 Node.js가 필수는 아닙니다. Git은 Vault의 버전 관리 — 노트 하나 실수로 지워도 복구 가능. Claude Code는 터미널 AI로, 슬래시 커맨드와 훅의 실행 주체. QMD는 한국어 시맨틱 검색 — 키워드 검색 외에 의미 기반 검색을 제공합니다.
필수 도구 설치 목록
| 도구 | 버전 | 설치 명령어 / 링크 | 필수 여부 |
|---|---|---|---|
| Python | 3.10+ (고급 설정) | winget install Python.Python.3.13 | 고급용 |
| Node.js | 지원 LTS (선택 도구) | winget install OpenJS.NodeJS.LTS | 선택 |
| Git | 최신 | winget install Git.Git | 필수 |
| Claude Code | 최신 | winget install Anthropic.ClaudeCode | 필수 |
| Obsidian | 1.5+ | obsidian.md | 필수 |
| QMD | 최신 | npm install -g @tobilu/qmd | 권장 |
| defuddle | 최신 | npm install -g defuddle | 권장 |
| python-telegram-bot | 21+ | pip install python-telegram-bot | 선택 |
settings.json과 Python 스크립트에서는 반드시 forward slash를 사용하세요. JSON 문자열 속 백슬래시는 이스케이프가 필요합니다. 슬래시 경로를 사용하면 편리하지만, 올바르게 이스케이프한 백슬래시도 가능합니다. 예: C:/Vault/Personal/, C:/Python313/python.exe
Vault 초기화
-
1
Vault 루트 폴더 생성
mkdir C:\Vault\YourName— 경로는 자유롭게 설정하되, 이후 모든 스크립트에서 일관되게 사용 -
2
필수 폴더 구조 생성PowerShellps1
$vault = "C:\Vault\YourName" $folders = @( "brain", "org\people", "work\active", "work\archive\2026", "work\1-1", "perf\brag", "perf\competencies", "raw\articles", "raw\research", "raw\images\unsorted", "wiki\concepts", "wiki\entities", "wiki\decisions", "output\answers", "output\reports", "output\slides", "thinking\session-logs", "templates", ".claude\commands", ".claude\skills", ".claude\scripts", ".claude\rules" ) $folders | ForEach-Object { New-Item -ItemType Directory -Path "$vault\$_" -Force } -
3
Obsidian에서 Vault 열기
Obsidian → Open folder as vault →C:\Vault\YourName선택 -
4
Claude Code에서 프로젝트로 열기
cd C:\Vault\YourName && claude실행 — CLAUDE.md가 자동으로 컨텍스트에 로딩됨
Git 설정 및 GitHub 연동 (선택)
아래 명령은 GitHub에 비공개 저장소를 먼저 생성한 뒤 실행하는 참고 예시입니다. 원격으로 올리기 전에 API 키, 개인자료, 고객정보, 계약서가 포함되었는지 확인하세요. Git은 버전 관리 도구이지 민감자료 자동 보호 장치가 아닙니다.
# 1. Git 초기화
cd C:\Vault\YourName
git init
git branch -M main
# 2. .gitignore 생성
echo ".obsidian/workspace*" >> .gitignore
echo ".smart-env/" >> .gitignore
echo ".smtcmp_json_db/" >> .gitignore
echo ".claude/scripts/telegram-bot.py" >> .gitignore # 토큰 보안
echo "*.env" >> .gitignore
# 3. GitHub 원격 저장소 연결 (private repo 권장)
git remote add origin https://github.com/YourID/obsidian-vault.git
# 4. 초기 커밋
git add -A
git commit -m "init: vault structure"
git push -u origin main
telegram-bot.py에는 봇 토큰 환경변수 코드가 있습니다. 반드시 .gitignore에 추가하고, 토큰은 환경변수로만 관리하세요. setx VAULT_TG_TOKEN "your-token"
3 CLAUDE.md 작성
CLAUDE.md는 Claude Code가 세션을 시작할 때 자동으로 읽는 시스템 헌법입니다. 이 파일이 없으면 Claude가 Vault의 규칙을 모릅니다. 루트에 반드시 작성하세요.
없을 때: Claude가 매 세션마다 "이 폴더 구조가 뭔가요?", "어떤 규칙을 따르나요?"를 물어보거나 추측합니다. 있을 때: "raw/는 읽기 전용이고, wiki/에만 생성하고, 모든 노트에 frontmatter와 wikilink가 필수"라는 것을 처음부터 알고 있습니다. 이 파일 하나가 수백 번의 같은 설명을 대체합니다.
# CLAUDE.md - Vault 운영 매뉴얼
> Obsidian = IDE. LLM = programmer. Wiki = codebase.
## 정체성
[당신의 역할과 사업 목적을 1-3줄로 작성]
Obsidian + Claude Code + Karpathy LLM Wiki 루프.
## 3-Layer 불변 규칙
- **raw/** = 원본. IMMUTABLE. LLM은 읽기만.
- **wiki/** = LLM 전용. 생성·유지·교차참조 모두 LLM이 소유.
- **CLAUDE.md** = 스키마. 사용자+LLM이 함께 진화.
- raw/ → wiki/ 단방향만 허용. 역방향 절대 금지.
## 핵심 규칙 (NEVER 위반)
- 모든 .md에 YAML frontmatter 필수 (date, description, tags)
- 모든 노트에 [[wikilink]] 1개 이상. 링크 없는 노트 = 버그.
- wiki/ 노트에 source 필드로 raw/ 경로 필수.
- 불확실한 정보에 [unverified] 태그.
- .obsidian/ 설정 수정 금지.
- 삭제 전 반드시 사용자 확인.
## Context Navigation
1. ALWAYS query the knowledge graph first (graphify-out/GRAPH_REPORT.md)
2. Only read raw files if I explicitly say so
3. Use graphify-out/wiki/index.md as the file map
4. When searching, use QMD (qmd.cmd search "keyword") before reading files directly
## 명령어
/standup, /dump, /wrap-up, /weekly, /compile, /lint-wiki,
/vault-audit, /verify, /humanize, /project-archive
## 비즈니스 컨텍스트
[당신의 사업/프로젝트 목록을 작성]
이 4줄이 없으면 Claude가 매 세션마다 raw/ 파일을 전부 읽으려 하여 토큰을 낭비합니다. 그래프와 QMD를 먼저 사용하도록 명시해야 합니다.
4 Hooks 설정
훅은 Claude Code의 특정 이벤트(세션 시작, 메시지 전송, 파일 쓰기 등)에 Python/JS 스크립트를 자동 실행합니다. 설정 파일은 두 곳에 있습니다.
훅 없이도 시스템은 동작합니다. 하지만 매 세션마다 North Star를 직접 붙여넣고, 파일 쓸 때마다 frontmatter를 수동 확인하고, 세션 끝날 때 직접 git commit해야 합니다. 훅은 "해야 하지만 잊기 쉬운 반복 작업"을 전부 자동화합니다. 특히 SessionStart + Stop 훅만 있어도 일상 워크플로우의 80%가 자동화됩니다.
| 파일 위치 | 범위 |
|---|---|
%USERPROFILE%\.claude\settings.json | 전역 — 모든 Claude 프로젝트에 적용 |
C:\Vault\YourName\.claude\settings.json | 프로젝트 — 이 Vault에서만 적용 |
settings.json 훅 구성 예시 (고급·바로 붙여넣기 금지)
{
"hooks": {
// 1. 세션 시작 — North Star, git log, Graphify, QMD 로딩
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "C:/Python313/python.exe C:/Vault/YourName/.claude/scripts/session-start.py"
}]
}],
// 2. 메시지 자동 분류 — 결정/성과/미팅/아이디어/문제/사람
"UserPromptSubmit": [{
"hooks": [{
"type": "command",
"command": "C:/Python313/python.exe C:/Vault/YourName/.claude/scripts/classify-message.py"
}]
}],
// 3. 민감 파일 쓰기 차단 (.env, .key 등)
"PreToolUse": [
{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "node C:/Vault/YourName/.claude/scripts/block-sensitive-files.js"
}]
},
// 4. Graphify 사용 시 그래프 존재 여부 안내
{
"matcher": "Glob|Grep",
"hooks": [{
"type": "command",
"command": "python -c \"import os,json;r={};p='graphify-out/graph.json';r['hookSpecificOutput']={'hookEventName':'PreToolUse','additionalContext':'graphify: Knowledge graph exists. Read graphify-out/GRAPH_REPORT.md before searching raw files.'} if os.path.exists(p) else None;r={k:v for k,v in r.items() if v is not None};print(json.dumps(r) if r else '{}')\""
}]
}
],
// 5. .md 파일 쓴 후 frontmatter + wikilink 자동 검증
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "C:/Python313/python.exe C:/Vault/YourName/.claude/scripts/validate-write.py"
}]
}],
// 6. 토큰 압축 전 세션 로그 백업
"PreCompact": [{
"hooks": [{
"type": "command",
"command": "C:/Python313/python.exe C:/Vault/YourName/.claude/scripts/pre-compact.py"
}]
}],
// 7. 세션 종료 시 자동 커밋 + vault 상태 리포트
"Stop": [
{
"hooks": [{
"type": "command",
"command": "C:/Python313/python.exe C:/Vault/YourName/.claude/scripts/auto-wrapup.py"
}]
},
// 8. 화장품법 위반 표현 차단 (향수 사업용, 필요 없으면 제거)
{
"hooks": [{
"type": "command",
"command": "node C:/Vault/YourName/.claude/scripts/check-cosmetic-law.js"
}]
}
]
}
}
일부 예시에는 JSON 주석·미구현 스크립트·오래된 입력 방식이 있습니다. 전체 설정을 그대로 붙여넣지 마세요. 먼저 빠른 시작 6단계를 완료하고, 공식 훅 문서에 따라 각 훅의 stdin JSON, 권한·실행 결과를 하나씩 검증하세요. 자동 커밋과 전역 훅은 특히 주의가 필요합니다.
훅 스크립트 상세 — 6개 설계 예시
① session-start.py — 세션 시작 컨텍스트 로더
역할: 매 세션 시작 시 North Star, 활성 프로젝트, 최근 git 로그, 미완료 태스크, Graphify 상태, QMD 인덱스를 Claude에게 자동으로 주입합니다.
# -*- coding: utf-8 -*-
import subprocess, os, sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
vault = "C:/Vault/YourName" # ← 본인 경로로 수정
output_parts = []
# North Star 로딩
ns_path = os.path.join(vault, "brain", "North Star.md")
if os.path.exists(ns_path):
with open(ns_path, "r", encoding="utf-8") as f:
output_parts.append("=== NORTH STAR ===")
output_parts.append(f.read().strip())
# Active Work 스캔
active_dir = os.path.join(vault, "work", "active")
if os.path.isdir(active_dir):
files = [f for f in os.listdir(active_dir) if f.endswith(".md")]
if files:
output_parts.append("=== ACTIVE WORK ===")
output_parts.append(", ".join(files))
# 최근 Git 변경사항
try:
result = subprocess.run(["git", "log", "--oneline", "-10"],
capture_output=True, text=True, cwd=vault, timeout=5, encoding="utf-8")
if result.stdout.strip():
output_parts.append("=== RECENT CHANGES ===")
output_parts.append(result.stdout.strip())
except Exception:
pass
# 미완료 태스크 탐색
for search_dir in [os.path.join(vault, "brain"), active_dir]:
if os.path.isdir(search_dir):
for root, dirs, files in os.walk(search_dir):
for fname in files:
if fname.endswith(".md"):
fpath = os.path.join(root, fname)
try:
with open(fpath, "r", encoding="utf-8") as f:
for i, line in enumerate(f, 1):
if "- [ ]" in line:
if "=== OPEN TASKS ===" not in output_parts:
output_parts.append("=== OPEN TASKS ===")
output_parts.append(f"{fname}:{i}: {line.strip()}")
except Exception:
pass
# Graphify 상태
graph_report = os.path.join(vault, "graphify-out", "GRAPH_REPORT.md")
if os.path.exists(graph_report):
output_parts.append("=== GRAPHIFY ===")
output_parts.append("Graph report available: graphify-out/GRAPH_REPORT.md")
else:
output_parts.append("=== GRAPHIFY ===")
output_parts.append("No graph yet. Run '/graphify .' to build.")
# QMD 인덱스 갱신
try:
qmd_cmd = os.path.join(vault, "qmd.cmd")
if os.path.exists(qmd_cmd):
subprocess.run([qmd_cmd, "update"], capture_output=True, cwd=vault, timeout=30)
output_parts.append("=== QMD ===")
output_parts.append("QMD index updated.")
except Exception:
pass
print("\n".join(output_parts) if output_parts else "(no vault data yet)")
② classify-message.py — 메시지 자동 라우팅
역할: 사용자가 입력한 메시지를 분석해 어느 폴더에 저장해야 할지 힌트를 Claude에게 제공합니다. 결정/성과/미팅/아이디어/문제/사람을 자동 감지합니다.
# -*- coding: utf-8 -*-
import os, sys, json
content = os.environ.get("CLAUDE_USER_CONTENT", "")
if not content:
print(json.dumps({"decision": "approve"}))
sys.exit(0)
lower = content.lower()
hints = []
# 분류 규칙 — 키워드 기반
if any(w in lower for w in ["결정", "decision", "선택", "확정"]):
hints.append("decision -> brain/Key Decisions.md + work/ note")
if any(w in lower for w in ["성과", "완료", "달성", "win", "성공"]):
hints.append("win -> perf/Brag Doc.md")
if any(w in lower for w in ["미팅", "회의", "1on1", "1:1"]):
hints.append("meeting -> work/1-1/ or work/meetings/")
if any(w in lower for w in ["사람", "person", "팀원", "동료"]):
hints.append("person -> org/people/")
if any(w in lower for w in ["아이디어", "idea", "생각"]):
hints.append("idea -> thinking/ then promote")
if any(w in lower for w in ["문제", "버그", "에러", "incident"]):
hints.append("incident -> brain/Gotchas.md")
if hints:
result = {"hookSpecificOutput": {"additionalContext": "Routing hints: " + "; ".join(hints)}}
print(json.dumps(result, ensure_ascii=False))
else:
print(json.dumps({"decision": "approve"}))
③ validate-write.py — 노트 품질 자동 검증
역할: .md 파일을 쓸 때마다 자동으로 frontmatter와 wikilink 존재 여부를 검사합니다. 누락 시 경고를 출력합니다.
# -*- coding: utf-8 -*-
import sys, os
filepath = os.environ.get("CLAUDE_FILE_PATH", "")
if not filepath or not filepath.endswith(".md"): sys.exit(0)
if not os.path.exists(filepath): sys.exit(0)
content = None
for enc in ["utf-8", "cp949"]:
try:
with open(filepath, "r", encoding=enc) as f:
content = f.read()
break
except: continue
if content is None: sys.exit(0)
issues = []
if not content.startswith("---"): issues.append("frontmatter missing")
if "[[" not in content: issues.append("no wikilink")
print(f"[VALIDATE] {filepath}: {'; '.join(issues)}" if issues else "[VALIDATE] OK")
④ pre-compact.py — 세션 로그 백업의 시작점(예시)
주의: 아래 예시는 로그 파일의 제목만 만들며 대화 본문을 백업하지 않습니다. 실제 세션 백업에는 transcript_path 등 공식 훅 입력을 읽는 추가 구현과 개인정보 보호 조치가 필요합니다.
# -*- coding: utf-8 -*-
import datetime, os
log_dir = r"C:\Vault\YourName\thinking\session-logs" # ← 경로 수정
os.makedirs(log_dir, exist_ok=True)
ts = datetime.datetime.now().strftime("%Y-%m-%d-%H%M")
path = os.path.join(log_dir, f"session-{ts}.md")
with open(path, "w", encoding="utf-8") as f:
f.write(f"---\ndate: {ts[:10]}\ndescription: session log\ntags: [session-log]\n---\n# Session {ts}\n")
print(f"[BACKUP] {path}")
⑤ auto-wrapup.py — 세션 종료 자동 커밋
역할: Stop 훅에 연결. frontmatter 누락 파일, 고아 노트, 변경 파일을 스캔하고 자동으로 git commit합니다.
1) 전체 .md 파일 스캔 → 2) frontmatter 누락 파일 목록 → 3) wikilink 없는 고아 노트 목록 → 4) git diff로 변경 파일 → 5) 변경사항 있으면 자동 커밋 → 6) 요약 출력 (총 노트 수, 누락, 고아, 변경, 커밋 해시)
⑥ block-sensitive-files.js — 민감 파일 쓰기 차단
역할: Claude가 .env, .key, *.pem 등 민감한 파일을 실수로 수정하는 것을 막습니다. PreToolUse Write|Edit 훅에 연결합니다.
const filepath = process.env.CLAUDE_FILE_PATH || "";
const blocked = [".env", ".key", ".pem", ".secret", "id_rsa", "credentials"];
if (blocked.some(ext => filepath.endsWith(ext) || filepath.includes(ext))) {
console.log(JSON.stringify({
decision: "block",
reason: `Blocked sensitive file write: ${filepath}`
}));
} else {
console.log(JSON.stringify({ decision: "approve" }));
}
5 Skills 구성
Skills는 Claude에게 특정 도메인 지식을 주입하는 SKILL.md 파일들입니다. .claude/skills/스킬명/SKILL.md 형태로 저장합니다.
| 스킬명 | 경로 | 역할 |
|---|---|---|
| karpathy-loop | .claude/skills/karpathy-loop/SKILL.md |
compile → wiki → lint 순환 규칙. raw → wiki 변환 절차 정의. |
| vault-knowledge | .claude/skills/vault-knowledge/SKILL.md |
폴더 구조, 세션 워크플로우, 위임 규칙, 비즈니스 상세 컨텍스트. |
| obsidian-markdown | .claude/skills/obsidian-markdown/SKILL.md |
frontmatter YAML 규칙, wikilink 형식, callout 사용법. |
| obsidian-cli | .claude/skills/obsidian-cli/SKILL.md |
Obsidian REST API 사용법 및 fallback 명령어. |
| qmd | .claude/skills/qmd/SKILL.md |
QMD 시맨틱 검색 사용법. 파일 읽기 전 항상 먼저 QMD 사용 규칙. |
| defuddle | .claude/skills/defuddle/SKILL.md |
웹 URL → 클린 마크다운 변환 절차. |
karpathy-loop SKILL.md 예시
---
name: karpathy-loop
description: Karpathy LLM Wiki 패턴 — compile, lint, filing-back
---
# Karpathy Loop
## 파이프라인
소스 문서 → raw/ → /compile → wiki/ (개념, 엔티티, 인덱스)
wiki/ → /lint-wiki → 불일치 → 웹 검색 보완 → wiki/ 갱신
질문 → wiki/ 탐색 → 답변 → output/
출력물 → wiki/index.md 재등록 (자기 강화 루프)
## /compile 절차
1. raw/에서 미처리 소스 탐지
2. 소스 읽기 → 핵심 정보 추출
3. wiki/ 요약 페이지 작성 (frontmatter 필수)
4. wiki/index.md 업데이트
5. 관련 엔티티·컨셉 페이지 업데이트
6. wiki/log.md에 기록
## Filing-Back
Q&A 답변 중 가치 있는 것:
output/answers/ → wiki/ 승격 → index+log 업데이트
6 Slash Commands (19개)
각 커맨드는 .claude/commands/커맨드명.md 파일로 정의합니다. Claude Code에서 /커맨드명으로 호출합니다.
매일 사용 — 핵심 5개
| 커맨드 | 파일 | 핵심 동작 |
|---|---|---|
/standup |
standup.md | North Star 읽기 → work/active/ 스캔 → git log -15 → 미완료 태스크 grep → 오늘 추천 우선순위 3개 출력 |
/dump |
dump.md | 자유 텍스트 or 생각을 thinking/session-logs/dump-날짜-시간.md로 저장. frontmatter + 분류 태그 자동 부여. |
/compile |
compile.md | raw/ 스캔 → 핵심 개념·엔티티 추출 → wiki/ 생성/갱신 → wikilink 상호 연결 → wiki/index.md 업데이트 |
/wrap-up |
wrap-up.md | 세션 생성/수정 .md 확인 → frontmatter 검증 → wikilink 검증 → 고아 노트 탐색 → 결과 리포트 |
/weekly |
weekly.md | 이번 주 git log 분석 → 완료 항목 + 배운 점 + 다음 주 우선순위 → perf/ 업데이트 |
유지보수 — 4개
| 커맨드 | 역할 | 주기 |
|---|---|---|
/vault-librarian | Vault 건강도 점수 측정 (목표 90+). frontmatter 충족률, wikilink 밀도, 고아 노트 비율, 최근 활동. | 주 1회 |
/lint-wiki | wiki/ 전체 스캔 → 모순 탐지 → 진부화 체크 → 웹 검색으로 보완 → 갱신. | 주 1회 |
/vault-audit | 전체 구조 감사. 중복 파일, 빈 폴더, 미처리 raw/, 깨진 링크 점검. | 월 1회 |
/verify | wiki/ 노트의 사실 검증. [unverified] 태그 항목 웹 검색으로 확인. | 필요 시 |
성과 관리 — 2개
| 커맨드 | 역할 | 주기 |
|---|---|---|
/brag-spotter | 대화·git log 분석 → 성과 자동 감지 → perf/Brag Doc.md에 STAR 포맷으로 추가 | 주 1회 |
/review-prep | Brag Doc → 분기별 성과 리뷰 자료 STAR 포맷으로 생성 | 분기 1회 |
자동화 — 5개
| 커맨드 | 역할 |
|---|---|
/cross-linker | 노트 간 wikilink 누락 탐색 → 의미 유사한 노트 쌍 발견 → 자동 추가 제안 |
/context-loader | 프로젝트명 언급 시 관련 work/active/, wiki/, brain/ 노트 자동 로딩 |
/people-profiler | 사람 정보 언급 시 org/people/ 에 프로필 생성·업데이트 |
/incident-capture | 인시던트·버그 구조화 기록. 날짜·증상·원인·해결·교훈 템플릿으로 brain/Gotchas.md 추가 |
/humanize | AI 투의 텍스트를 자연스러운 한국어 문체로 변환 |
기타 — 3개
| 커맨드 | 역할 |
|---|---|
/project-archive | 완료 프로젝트를 work/active/ → work/archive/YYYY/로 이동, frontmatter에 완료일 추가 |
/slack-scan | 외부 메시지(Telegram/KakaoTalk 텍스트) 분류하여 적절한 폴더에 저장 |
/vault-migrator | Notion/Evernote 등 다른 툴에서 내보낸 파일을 이 Vault 컨벤션으로 일괄 변환 |
커맨드 파일 작성 예시
# /standup - 모닝 스탠드업
1. brain/North Star.md 읽기 후 현재 목표 확인
2. work/active/ 전체 스캔 후 진행 중 프로젝트 상태
3. git log --oneline -15 로 최근 변경사항
4. grep -rn "\- \[ \]" brain/ work/active/ 로 미완료 작업
5. 위 정보를 종합해 오늘 추천 우선순위 3가지 제시
6. 한국어로 출력
Format:
## 오늘의 스탠드업
### 활성 프로젝트
### 미완료 작업
### 오늘 추천 우선순위
7 QMD — 한국어 시맨틱 검색
QMD는 로컬 검색 도구입니다. 기본 임베딩 모델은 영어 중심일 수 있으므로 한국어 검색은 모델 설정과 자료에 따라 성능이 달라집니다. grep과 달리 의미 기반으로 유사한 노트를 찾아줍니다.
grep으로 "투자"를 검색하면 "투자"라는 단어가 있는 파일만 나옵니다. QMD로 "자금 조달 전략"을 검색하면 "IR 미팅", "시드 라운드", "캐시플로우 관리"처럼 단어는 다르지만 의미가 연결된 노트들이 전부 나옵니다. Vault가 클수록 QMD의 가치는 기하급수적으로 커집니다. 특히 몇 달 전에 쓴 노트의 정확한 제목이 기억나지 않을 때 진가를 발휘합니다.
설치
# 1. 설치
npm install -g @tobilu/qmd
# 2. Vault에서 초기 인덱싱
cd C:\Vault\YourName
qmd collection add . --name myvault
qmd embed
# 3. 설치 경로 확인 — 직접 래퍼 파일을 만들지 마세요
# qmd 명령이 실행되지 않으면 설치 상태와 PATH 확인
where.exe qmd
사용법
| 명령어 | 방식 | 용도 |
|---|---|---|
qmd query "질문" | 하이브리드 (BM25 + 벡터 + 리랭킹) | 가장 정확. 질문형 검색에 사용 |
qmd search "키워드" | 키워드 기반 | 특정 단어 포함 노트 탐색 |
qmd vsearch "의미" | 순수 벡터 | 의미적으로 유사한 노트 탐색 |
qmd update | 인덱스 갱신 | 새 파일 추가 후 실행 (세션 시작 시 자동) |
QMD 실행 위치는 설치 방식과 버전에 따라 달라집니다. where.exe qmd로 명령 경로를 확인하고, MCP 등록은 최신 공식 README의 안내를 따르세요. 특정 사용자 이름이나 내부 파일 경로를 그대로 복사하지 마세요.
8 Graphify — 지식 그래프
Graphify는 Vault의 모든 노트를 분석해 노드(개념)와 엣지(관계)로 구성된 지식 그래프를 생성합니다. Claude가 파일을 직접 읽지 않고 그래프를 통해 구조를 파악하게 합니다.
Claude가 질문에 답하려면 관련 파일을 읽어야 합니다. 파일이 100개면 100개를 전부 열어보려 합니다. Graphify는 전체 구조를 GRAPH_REPORT.md 한 파일로 압축합니다. Claude는 이 리포트 하나를 읽는 것으로 "이 Vault에서 어떤 노트가 중심적이고, 어떤 클러스터가 있고, 어디서 시작해야 하는지"를 파악합니다. 답변 품질은 같고 토큰 비용은 대폭 줄어듭니다.
설치 및 초기화
# 1. Windows PowerShell에서 (uv 사전 설치 필요)
uv tool install graphifyy
graphify install
# 2. Claude Code 안에서 실행
/graphify .
# 그래프 빌드 완료 후 생성 파일:
# graphify-out/GRAPH_REPORT.md ← 요약 (세션 시작 시 자동 로딩)
# graphify-out/graph.json ← 원본 그래프 데이터
# graphify-out/wiki/index.md ← 파일 맵
CLAUDE.md에 graphify 섹션 추가
## graphify
This project has a graphify knowledge graph at graphify-out/.
Rules:
- Before answering architecture or codebase questions,
read graphify-out/GRAPH_REPORT.md for god nodes and community structure
- If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
- After modifying code files in this session, run
follow the installed Graphify instructions to refresh the graph when files change
9 defuddle — 웹 아티클 파싱
defuddle은 웹 URL을 클린 마크다운으로 변환하는 CLI 도구입니다. 광고, 네비게이션 등 불필요한 요소를 제거하고 본문만 추출합니다.
# 설치
npm install -g defuddle
# 웹 아티클 → raw/articles/ 저장 (기본 사용법)
defuddle parse "https://example.com/article" --md > raw/articles/아티클제목.md
# 제목을 자동으로 파일명으로 사용하고 싶다면
defuddle parse "URL" --md | tee raw/articles/$(date +%Y-%m-%d)-article.md
defuddle → raw/articles/ 저장 → Claude Code에서 해당 파일 대화 → /compile → wiki/ 인사이트 노트 생성. raw/에 저장했으므로 파일은 수정 금지, wiki/에만 분석 결과 저장.
10 Telegram 봇 설치 및 설정
Telegram 봇은 모바일에서 Vault에 접근하는 유일한 인터페이스입니다. 이동 중 텍스트/이미지를 던지면 자동으로 Vault에 저장됩니다.
정보 캡처 시스템에서 가장 중요한 것은 마찰 없음입니다. 앱을 열고, 폴더를 찾고, 파일명을 정하는 과정이 3초만 걸려도 캡처를 포기하게 됩니다. Telegram은 이미 열려있는 앱입니다. 텍스트를 입력하고 전송하면 끝. 이미지는 캡션 하나면 자동 분류됩니다. 하루 평균 5개의 생각을 캡처하면 한 달에 150개, 1년에 1800개의 원본 데이터가 쌓입니다. 이 데이터가 wiki로 정제되면서 지식이 됩니다.
1단계: Telegram 봇 생성
- 1Telegram에서 @BotFather를 검색 →
/newbot명령 실행 - 2봇 이름 입력 (예: "My Vault Bot") → 사용자명 입력 (예: "ys_vault_bot")
- 3발급된 API 토큰을 복사 (절대 코드에 직접 입력 금지)
- 4환경변수로 저장:PowerShell (관리자)ps1
setx VAULT_TG_TOKEN "여기에-토큰-붙여넣기" /M # PC 재시작 후 적용됨 - 5본인 chat_id 확인: 봇과 대화 후
https://api.telegram.org/bot[토큰]/getUpdates에서 확인
2단계: telegram-bot.py 핵심 설정
# ─── 수정 필요 항목 ────────────────────────────
BOT_TOKEN = os.environ.get("VAULT_TG_TOKEN", "") # 환경변수에서 자동 로딩
VAULT = "C:/Vault/YourName" # ← 본인 경로로 수정
ALLOWED_USERS: set[int] = {123456789} # ← 본인 chat_id로 수정
# 봇 명령어 구조:
# /start → 사용법 안내
# /standup → North Star + active work 요약
# /dump 텍스트 → thinking/session-logs/dump-날짜-시간.md 저장
# /wiki 키워드 → wiki/ 검색 + 첫 매치 전송
# /status → Vault 통계 (총 노트 수, 폴더별)
# /topics → raw/images/ 주제 폴더 목록
# 일반 텍스트 → 자동 /dump 처리
# 이미지+캡션 → #주제/하위 형식이면 해당 폴더에 저장
3단계: 자동 시작 설정
@echo off
:: vault-bot.bat — PC 부팅 시 자동 실행
start /B "Vault Telegram Bot" C:\Python313\python.exe "C:\Vault\YourName\.claude\scripts\telegram-bot.py"
exit
이미지 태그 규칙
| 캡션 입력 | 저장 경로 |
|---|---|
| 캡션 없음 | raw/images/unsorted/파일명.jpg |
#ai | raw/images/ai/파일명.jpg |
#ai/tools | raw/images/ai/tools/파일명.jpg |
#brand/perfume | raw/images/brand/perfume/파일명.jpg |
#ai/git hub처럼 공백을 넣으면 #ai/git까지만 인식됩니다. 반드시 #ai/github처럼 붙여 쓰세요.
11 일상 운영 가이드
아침 루틴
# 1. Vault 폴더에서 Claude Code 실행
cd C:\Vault\YourName
claude
# → SessionStart 훅이 자동으로 실행되며:
# - North Star 로딩
# - Active projects 스캔
# - 최근 git 변경사항
# - 미완료 태스크
# - Graphify + QMD 상태
# 2. 오늘 우선순위 확인
/standup
리서치 워크플로우
- 1웹 아티클 저장
defuddle parse "https://example.com/article" --md > raw/articles/아티클제목.md - 2Claude와 내용 대화
Claude Code에서 저장된 파일에 대해 자유롭게 질문 및 토론 - 3위키로 정제
/compile실행 → wiki/에 인사이트 노트 자동 생성 (source 링크 포함) - 4교차 연결
/cross-linker로 관련 노트와 wikilink 자동 연결
노트 작성 컨벤션
모든 .md 파일은 아래 형식을 따라야 합니다. validate-write.py 훅이 자동으로 검사합니다.
---
date: 2026-04-13
description: 이 노트가 다루는 내용 한 줄 요약
tags: [concept, business, strategy]
source: raw/articles/원본파일명.md # wiki/ 노트에만 필수
---
# 노트 제목
본문 내용. [[관련 노트]]와 [[다른 노트]]를 반드시 연결.
> [!note] Callout 예시
> Obsidian callout 사용 가능
[unverified] 태그는 확인이 필요한 정보에 사용.
date, description, tags — 3개는 모든 .md에 필수. wiki/ 노트는 source도 추가. 누락 시 validate-write.py가 경고를 출력합니다.
퇴근 전 루틴
# 세션 마무리 — frontmatter 검증 + 자동 커밋
/wrap-up
# Stop 훅(auto-wrapup.py)이 자동으로:
# - 전체 .md 스캔 (frontmatter, wikilink 검증)
# - 변경사항 git add -A
# - auto: wrap-up [날짜] 메시지로 자동 커밋
# - 요약 출력
주간/월간 유지보수
| 주기 | 작업 | 명령어 |
|---|---|---|
| 주 1회 (금요일) | 주간 리뷰 + 성과 기록 | /weekly → /brag-spotter |
| 주 1회 | Vault 건강도 체크 | /vault-librarian (목표: 90+) |
| 주 1회 | wiki 품질 검사 + 보완 | /lint-wiki |
| 주 1회 | QMD 재인덱싱 (새 파일 추가 시) | qmd index . |
| 월 1회 | 전체 vault 감사 | /vault-audit |
| 분기 1회 | 성과 리뷰 자료 준비 | /review-prep |
★ 법인/개인 분리 아키텍처
사업이 성장하면서 법인 데이터와 개인 지식을 동일한 Vault에 섞는 것은 법적·전략적으로 모두 문제가 됩니다. 동시에, CEO는 법인의 모든 맥락을 알아야 합니다. 이 구조는 두 조건을 동시에 충족합니다.
고객 데이터 · IP 문서
팀 결정 · 재무 인사이트
개인 결정 · 성과 기록
+ raw/corp-sync/ ← Corp 요약
왜 분리해야 하는가
법적 리스크 차단
법인 계약서, 고객 데이터, 재무 정보가 개인 Vault에 혼재되면 개인정보보호법·영업비밀법 위반 소지가 생깁니다. 분리 구조는 "법인 데이터는 법인 시스템에서만 처리됐다"는 명확한 증거가 됩니다.
투자·감사 대응
투자자 실사(Due Diligence) 또는 회계 감사 시, 법인 데이터와 개인 데이터가 분리되어 있어야 합니다. Corp Vault의 Git history가 깔끔한 데이터 거버넌스 증거가 됩니다.
CEO는 전체를 알아야 함
분리됐지만 CEO는 법인 맥락을 항상 알고 있어야 합니다. Corp wiki 요약이 개인 Vault의 raw/corp-sync/로 흘러들어와 Claude가 법인 현황을 개인 맥락과 함께 참조할 수 있습니다.
M&A 매각 가치 극대화
Corp Vault 자체가 구조화된 기업 지식 자산이 됩니다. 팔란티어가 온톨로지로 프리미엄을 받는 것처럼, 정제된 법인 지식 그래프는 인수자에게 "즉시 가동 가능한 제도적 기억"으로 평가됩니다.
단방향 동기화 구조 상세
| 데이터 종류 | 저장 위치 | 개인 Vault에서 보이나? |
|---|---|---|
| 사업 KPI, 매출 지표 | Corp: wiki/metrics/ | 보임 — corp-sync 경유 |
| 고객 계약 요약 | Corp: wiki/decisions/ | 보임 — corp-sync 경유 |
| 고객 원본 데이터·PII | Corp: raw/customers/ | 불가 — raw/ 는 동기화 안 함 |
| 팀원 인사 기록 | Corp: org/hr/ | 불가 — HR 폴더 제외 |
| 개인 성과 기록 | Personal: perf/ | 개인만 — Corp 역류 불가 |
| 개인 학습 노트 | Personal: wiki/ | 개인만 — Corp 역류 불가 |
| 법인 지식 그래프 | Corp: graphify-out/GRAPH_REPORT.md | 보임 — corp-sync 경유 |
Corp Vault 폴더 구조
C:\Vault\Corp\
│
├── CLAUDE.md ← 법인 전용 시스템 헌법
│
├── raw/ ← 원본 (IMMUTABLE, 개인에게 절대 동기화 안 함)
│ ├── contracts/ ← 계약서 원본 스캔본
│ ├── customers/ ← 고객 데이터 원본 (PII 포함)
│ ├── financials/ ← 재무 자료 원본
│ ├── legal/ ← 인허가·법무 문서
│ ├── ir/ ← IR 자료 원본
│ └── research/ ← 시장 리서치 원본
│
├── wiki/ ← Claude가 생성 — 이것만 개인 Vault로 동기화
│ ├── index.md ← 전체 인덱스
│ ├── concepts/ ← 사업 개념 정의 (온톨로지 Object Types)
│ │ ├── product-definition.md
│ │ ├── market-positioning.md
│ │ └── revenue-model.md
│ ├── entities/ ← 핵심 엔티티 (온톨로지 Objects)
│ │ ├── customers/ ← 고객사 프로필 (익명화 버전)
│ │ ├── partners/ ← 파트너사
│ │ └── competitors/ ← 경쟁사
│ ├── decisions/ ← 의사결정 기록 (온톨로지 Events)
│ │ ├── product-decisions.md
│ │ ├── hiring-decisions.md
│ │ └── strategy-pivots.md
│ ├── metrics/ ← KPI·지표 현황 (온톨로지 Properties)
│ │ ├── revenue.md
│ │ ├── user-metrics.md
│ │ └── unit-economics.md
│ └── playbooks/ ← 운영 플레이북 (재사용 가능 절차)
│ ├── sales-playbook.md
│ ├── onboarding-playbook.md
│ └── incident-response.md
│
├── org/
│ ├── people/ ← 팀원 프로필 (개인 Vault 동기화 제외)
│ └── structure.md ← 조직도
│
├── work/
│ ├── active/ ← 진행 중 법인 프로젝트
│ └── archive/ ← 완료 프로젝트
│
├── graphify-out/ ← 법인 지식 그래프 (corp-sync로 전달)
│
└── .claude/
├── commands/ ← 법인 전용 커맨드
├── scripts/
│ ├── session-start.py ← 법인 컨텍스트 로더
│ └── corp-to-personal-sync.py ← 단방향 동기화 스크립트
└── skills/
Corp CLAUDE.md 템플릿
법인 Vault의 CLAUDE.md는 개인 Vault와 독립적입니다. 개인 Vault 경로에 대한 참조가 전혀 없어야 합니다.
# CLAUDE.md — Corp Vault 운영 매뉴얼
## 법인 정체성
[법인명]. [사업 영역] 운영.
이 Vault는 법인 전용입니다. 개인 정보는 이 Vault에 절대 포함되지 않습니다.
## 3-Layer 불변 규칙
- **raw/** = 원본 기업 데이터. IMMUTABLE. LLM 읽기만. 외부 동기화 절대 금지.
- **wiki/** = LLM 생성 인사이트. 이것만 개인 Vault와 공유 가능.
- **CLAUDE.md** = 공동 관리 스키마.
## 데이터 분류 정책
- CONFIDENTIAL: raw/ 전체, org/people/, 재무 원본 → 외부 동기화 금지
- INTERNAL: wiki/ 전체, graphify-out/ → corp-to-personal-sync.py로만 동기화 허용
- 개인(YS) Vault 경로를 이 Vault에서 절대 참조하지 않음
## 온톨로지 구조 (Object Types)
- **Concepts** (wiki/concepts/) = 사업 개념 정의. 변하지 않는 지식.
- **Entities** (wiki/entities/) = 고객·파트너·경쟁사. 실세계 객체.
- **Decisions** (wiki/decisions/) = 언제, 왜, 무엇을 결정했는가.
- **Metrics** (wiki/metrics/) = 측정 가능한 사업 현황.
- **Playbooks** (wiki/playbooks/) = 재사용 가능한 운영 절차.
## 핵심 규칙
- 모든 .md에 YAML frontmatter 필수 (date, description, tags, classification)
- classification 필드: CONFIDENTIAL / INTERNAL / PUBLIC 중 하나
- 고객 PII는 wiki/ 노트에 포함 금지. 익명화 또는 식별자만 사용.
- 모든 결정 기록에 의사결정자, 날짜, 대안, 이유 포함.
## Context Navigation
1. graphify-out/GRAPH_REPORT.md 먼저 확인
2. wiki/index.md로 전체 구조 파악
3. QMD로 검색 후 파일 직접 읽기
4. raw/ 는 명시적 요청 시에만 읽기
법인 Claude 프로젝트는 개인 Vault의 존재를 모릅니다. 동기화는 항상 외부 스크립트(corp-to-personal-sync.py)가 단방향으로만 실행합니다. 이 경계가 무너지면 전체 분리 구조가 의미 없어집니다.
단방향 동기화 스크립트 (보안 검토용 예시)
회사 문서·고객정보를 개인 PC, 개인 Vault, 개인 GitHub 또는 AI 서비스로 옮기려면 회사 정책·보안·계약상 권한을 확인해야 합니다. 아래 코드는 개념 예시로만 남겼으며, 승인 없이 실행하거나 Stop 훅에 연결해서는 안 됩니다. INTERNAL 표시만으로 반출이 허용되지 않습니다.
이 스크립트는 Corp Vault의 wiki/를 Personal Vault의 raw/corp-sync/로 복사합니다. 역방향은 구조적으로 불가능합니다.
# -*- coding: utf-8 -*-
"""
corp-to-personal-sync.py
단방향 동기화: Corp Vault wiki/ → Personal Vault raw/corp-sync/
규칙:
- INTERNAL 등급(wiki/) 만 복사. raw/, org/people/ 는 절대 복사 금지.
- 복사된 파일은 Personal Vault에서 raw/ 취급 — 수정 금지.
- 역방향(Personal → Corp)은 이 스크립트에 없음. 코드로 불가능하게 설계.
"""
import os, shutil, json
from pathlib import Path
from datetime import datetime
# ─── 경로 설정 ── 본인 환경에 맞게 수정 ───────────
CORP_VAULT = Path("C:/Vault/Corp")
PERSONAL_VAULT = Path("C:/Vault/Personal")
SYNC_TARGET = PERSONAL_VAULT / "raw" / "corp-sync"
# Corp에서 동기화 허용할 폴더 (INTERNAL 등급만)
ALLOWED_SOURCES = [
CORP_VAULT / "wiki",
CORP_VAULT / "graphify-out" / "GRAPH_REPORT.md",
]
# 절대 복사하지 않을 패턴 (CONFIDENTIAL)
BLOCKED_PATTERNS = [
"raw/", "org/people", "org/hr",
".claude/", ".git/", ".obsidian/",
"financials", "contracts", "customers",
]
def is_blocked(path: Path) -> bool:
path_str = str(path).replace("\\", "/").lower()
return any(pat in path_str for pat in BLOCKED_PATTERNS)
def sync():
SYNC_TARGET.mkdir(parents=True, exist_ok=True)
synced, blocked = [], []
for source in ALLOWED_SOURCES:
if not source.exists():
continue
if source.is_file():
# 단일 파일 (e.g. GRAPH_REPORT.md)
if is_blocked(source):
blocked.append(str(source))
continue
dst = SYNC_TARGET / source.name
shutil.copy2(source, dst)
synced.append(str(dst))
else:
# 폴더 재귀 복사
for src_file in source.rglob("*.md"):
if is_blocked(src_file):
blocked.append(str(src_file))
continue
rel = src_file.relative_to(CORP_VAULT)
dst = SYNC_TARGET / rel
dst.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(src_file, dst)
synced.append(str(dst))
# 동기화 메타 기록
meta_path = SYNC_TARGET / "_sync-log.md"
ts = datetime.now().strftime("%Y-%m-%d %H:%M")
with open(meta_path, "w", encoding="utf-8") as f:
f.write(
f"---\ndate: {ts[:10]}\ndescription: Corp→Personal 동기화 로그\n"
f"tags: [corp-sync, auto]\n---\n"
f"# Corp Sync Log — {ts}\n\n"
f"동기화: {len(synced)}개\n차단: {len(blocked)}개\n\n"
f"## 동기화된 파일\n" + "\n".join(f"- {p}" for p in synced[:30])
)
print(f"[CORP-SYNC] {len(synced)}개 동기화 완료 → {SYNC_TARGET}")
print(f"[CORP-SYNC] {len(blocked)}개 차단 (CONFIDENTIAL)")
if __name__ == "__main__":
sync()
동기화 자동 실행 — Corp Vault Stop 훅에 등록
// Corp Vault 전용 settings.json 또는 .claude/settings.json
{
"hooks": {
"Stop": [{
"hooks": [{
"type": "command",
// 세션 종료 시 Corp → Personal 자동 동기화
"command": "C:/Python313/python.exe C:/Vault/Corp/.claude/scripts/corp-to-personal-sync.py"
}]
}]
}
}
Corp Vault에서 세션 종료(Stop 훅) → corp-to-personal-sync.py 실행 → Corp wiki/ 파일이 Personal raw/corp-sync/에 복사 → 개인 Claude 세션에서 /compile 또는 qmd query로 법인 맥락 참조 가능. 반대 방향 코드는 존재하지 않습니다.
온톨로지 구축과 기업가치 검토
지식과 업무 자료를 정리하면 인수실사·인수인계에 도움이 될 수 있지만 매각 배수 상승을 보장하지는 않습니다.
인수자는 사업을 사는 게 아닙니다. "인수 후 즉시 가동 가능한 제도적 기억과 데이터 자산"을 삽니다. 팔란티어가 S&P 500 고객들에게 수십억을 받는 이유는 소프트웨어 때문이 아니라, 그 위에 구축된 온톨로지(구조화된 지식 그래프) 때문입니다. 이 시스템은 1인 CEO가 그 구조를 직접 구축하는 방법입니다.
팔란티어 Foundry vs. 이 시스템 비교
| 팔란티어 Foundry 개념 | 이 시스템의 대응 요소 | M&A 관점 가치 |
|---|---|---|
| Object Types 실세계 개념 정의 |
wiki/concepts/사업 개념 노트 |
"이 회사가 자기 시장을 어떻게 정의하는가"가 문서화되어 있음. 인수 후 학습 비용 0. |
| Objects 구체적 인스턴스 |
wiki/entities/customers/wiki/entities/partners/ |
고객·파트너 프로필이 구조화됨. 인수자가 관계망을 즉시 파악 가능. |
| Properties 측정 가능한 속성 |
wiki/metrics/KPI 현황 노트 |
지표 정의와 측정 방법이 문서화됨. "이 숫자가 어떻게 계산됐는가" 즉시 추적 가능. |
| Events / Actions 발생한 사건·결정 |
wiki/decisions/의사결정 기록 |
왜 이 방향을 택했는가의 역사. 인수자에게 전략적 DNA를 전달. "창업자 의존도" 리스크 해소. |
| Transforms 데이터 처리 파이프라인 |
/compile + Karpathy Loopraw → wiki 변환 |
데이터 생성 → 정제 → 구조화 파이프라인이 자동화되어 있음. 확장 가능한 데이터 자산. |
| Ontology Graph 전체 관계 그래프 |
Graphify + wikilinks 지식 그래프 |
모든 개념·엔티티·결정이 연결된 그래프. "이 회사를 이해하는 데 3개월이 아닌 3일이면 된다"는 증거. |
| Data Lineage 데이터 출처 추적 |
Git history + source: frontmatterraw/ IMMUTABLE |
모든 인사이트가 어디서 왔는지 추적 가능. 감사(Audit) 즉시 대응. 데이터 신뢰성 증명. |
| Playbooks 재사용 가능 워크플로 |
wiki/playbooks/운영 절차 문서 |
인수 후 핵심 인력이 떠나도 운영이 지속됨. "Key-person risk" 감소 → 밸류에이션 할인 축소. |
매각 배수에 직접 영향을 미치는 3가지 메커니즘
M&A에서 가장 큰 밸류에이션 할인 요인은 "창업자가 떠나면 다 사라진다"는 인식입니다. Corp Vault의 wiki/decisions/, wiki/playbooks/는 창업자의 결정 패턴과 운영 노하우가 코드화되어 있다는 증거입니다. 이것이 인수자의 불안을 제거해 할인율을 낮춥니다.
구조화된 시장 인사이트, 경쟁사 분석, 고객 온톨로지는 사업 자체와 별개로 데이터 자산으로서의 가치를 갖습니다. Git history가 있는 지식 그래프는 "언제부터 이 인사이트를 갖고 있었는가"를 증명합니다. 동종업계 플레이어가 돈 주고 사고 싶어하는 지식입니다.
M&A에서 딜이 깨지는 주요 원인 중 하나는 실사 과정에서 데이터 정리가 안 돼 있어 시간이 너무 오래 걸리는 것입니다. Corp Vault는 모든 결정, 지표, 계약 요약, 리스크가 구조화되어 있어 실사 담당자가 qmd query 하나로 원하는 정보를 찾을 수 있습니다. 딜 클로징 시간 단축 = 성사율 향상.
Corp Vault 구축 우선순위 — "M&A 가치 기여 순"
| 순위 | 무엇을 먼저 | 이유 |
|---|---|---|
| 1순위 | wiki/decisions/ 지금까지 내린 주요 결정 소급 기록 | 창업자 의존도 리스크 즉시 해소. "왜 이렇게 됐나"의 역사가 가장 중요. |
| 2순위 | wiki/metrics/ KPI 정의와 현재 수치 구조화 | 인수자의 첫 질문은 항상 숫자. 숫자의 정의와 계산법이 문서화되어 있어야 함. |
| 3순위 | wiki/playbooks/ 핵심 운영 절차 문서화 | 창업자 없이도 돌아가는 증거. 인수 후 통합 비용 예측 가능. |
| 4순위 | wiki/entities/customers/ 고객 온톨로지 구축 | 고객 관계망의 구조화. 인수자가 고객 유지 가능성 평가에 쓸 수 있음. |
| 5순위 | Graphify 실행 → 전체 그래프 생성 | "이 회사의 지식이 얼마나 연결되어 있는가"의 시각적 증거. |
설치 순서 — 법인/개인 분리 구조 구축
- 1Corp Vault 폴더 생성
mkdir C:\Vault\Corp+ 위 폴더 구조 생성 - 2별도 Git repo 초기화
cd C:\Vault\Corp && git init→ GitHub private repo 연결. 개인 repo와 완전히 분리. - 3Corp CLAUDE.md 작성
위 템플릿 기반. 개인 Vault 경로 참조 없이 법인 규칙만 기술. - 4Claude Code에서 Corp 프로젝트로 열기
cd C:\Vault\Corp && claude— 개인 Vault와 별도의 Claude 세션/컨텍스트 유지. - 5corp-to-personal-sync.py 설치
C:\Vault\Corp\.claude\scripts\에 저장 → Corp Vault Stop 훅에 등록. - 6Personal Vault CLAUDE.md에 corp-sync 참조 추가
## Corp Data - raw/corp-sync/ 에 법인 wiki 요약이 자동 동기화됨 - 이 폴더는 읽기 전용 (raw/ 규칙 적용) - Corp 컨텍스트가 필요할 때: qmd query "검색어" 또는 raw/corp-sync/wiki/ 직접 참조 - 7우선순위 순서대로 소급 기록 시작
1순위(decisions) → 2순위(metrics) → 3순위(playbooks) 순으로 지금까지의 기록을 소급 입력. Graphify는 노트 30개 이상 쌓인 후 실행.
Corp Vault의 raw/(고객 데이터·계약서 원본·재무 원본)를 개인 Vault에 동기화하는 것은 개인정보보호법 및 영업비밀 관리 의무 위반 소지가 있습니다. 동기화 허용 대상은 반드시 wiki/(가공·익명화된 인사이트)로 한정해야 합니다.
12 트러블슈팅 & 알려진 이슈
| 증상 | 원인 | 해결책 |
|---|---|---|
| 훅 스크립트가 실행되지 않음 | settings.json 경로에 백슬래시 사용 | 모든 경로를 forward slash로 변경: C:/Python313/python.exe |
type 명령으로 .md 파일 내용이 깨짐 |
Windows CMD의 cp949 인코딩 문제 | 파일 자체는 정상. Obsidian에서 열면 정상 표시. Python 스크립트는 utf-8 fallback cp949로 처리. |
| Telegram 이미지 태그가 잘못 저장됨 | 캡션에 공백 포함 | #ai/github (공백 없이 붙여쓰기). #ai/git hub는 #ai/git까지만 인식. |
| QMD 검색이 새 파일을 못 찾음 | 인덱스가 오래됨 | qmd index . 또는 qmd update 실행 (세션 시작 시 자동 실행됨) |
| Claude가 매번 raw/ 파일을 다 읽으려 함 | CLAUDE.md에 Context Navigation 섹션 없음 | CLAUDE.md에 Context Navigation 4줄 추가 (섹션 3 참조) |
| auto-wrapup.py 커밋 실패 | git user.email/name 미설정 | git config --global user.email "you@example.com" 실행 |
| Telegram 봇이 PC 재시작 후 미실행 | vault-bot.bat 위치 오류 | 파일이 %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\에 있는지 확인 |
| validate-write.py: "no wikilink" 경고 | 새 노트에 [[링크]] 없음 | 모든 노트에 최소 1개 [[관련 노트]] wikilink 추가. 링크 없는 노트 = 버그. |
잘못 저장된 파일 삭제 방법
:: 이미지 파일 삭제
del raw\images\주제폴더\파일명.jpg
:: 폴더 전체 삭제
rmdir /s /q raw\images\주제폴더
:: 세션 로그 삭제
del thinking\session-logs\dump-2026-04-13-*.md
:: 삭제 후 반드시 git 커밋
git add -A
git commit -m "cleanup: 불필요한 파일 삭제"
git push
새 도구/기능 추가 절차
- 1스킬 파일 생성 (선택사항)
.claude/skills/도구명/SKILL.md— 도구 사용법 작성 - 2슬래시 커맨드 생성 (선택사항)
.claude/commands/커맨드명.md— 절차 작성 - 3훅 스크립트 추가 (선택사항)
.claude/scripts/스크립트.py생성 →settings.json에 훅 포인트 등록 - 4CLAUDE.md 업데이트
새 도구/규칙을 CLAUDE.md의 적절한 섹션에 추가 - 5Git 커밋
git add -A && git commit -m "feat: 새 도구 추가" && git push
13 시나리오별 단계 가이드
실제로 마주치는 상황별로 정확히 어떤 순서로 무엇을 해야 하는지 단계별로 설명합니다.
시나리오 A — 웹 아티클 읽고 인사이트 위키로 만들기
예: "GPT-5 발표 기사를 읽고 우리 SaaS 전략에 반영할 인사이트를 뽑고 싶다"
-
1
아티클을 raw/에 저장
raw/ 는 절대 수정하지 않는 원본 저장소. 이 파일은 읽기 전용이 됩니다.defuddle parse "https://openai.com/gpt-5-announcement" --md > raw/articles/2026-04-14-gpt5.md -
2
Claude와 내용 대화
Claude Code에서 자유롭게 질문:raw/articles/2026-04-14-gpt5.md 를 읽고 우리 example-service 아키텍처 결정에 영향을 줄 수 있는 포인트만 뽑아줘 -
3
/compile 실행 → wiki 생성
Claude가 raw/articles/의 새 파일을 감지하고 자동으로:/compile
→wiki/concepts/gpt5-implications.md생성 (source: raw/articles/2026-04-14-gpt5.md)
→wiki/index.md업데이트
→ 기존 관련 노트(예: example-service.md)에 wikilink 추가 제안 -
4
/cross-linker 실행 (선택)
새 wiki 노트와 기존 노트 간 누락된 wikilink를 자동으로 탐색해 연결 제안./cross-linker -
5
/wrap-up으로 커밋
frontmatter 검증 + 자동 git commit. 오늘 추가된 내용이 영구 보존됩니다./wrap-up
Claude와 대화 중 특히 가치 있는 답변이 나오면 output/answers/에 저장해두고, 나중에 /compile로 wiki로 승격시킬 수 있습니다. 지식이 스스로 강화되는 루프입니다.
시나리오 B — 중요한 의사결정 기록하기
예: "example-service 기술스택을 Next.js + Supabase로 결정했다"
-
1
Claude에게 결정 사항 말하기
classify-message.py 훅이 자동으로 감지: "결정" 키워드 → "decision → brain/Key Decisions.md + work/ note" 힌트를 Claude에게 전달example-service 기술스택을 Next.js + Supabase로 확정했어. 이유는 팀 학습 곡선과 BaaS 비용 최적화 때문이야. -
2
Claude가 자동으로 두 곳에 기록
→brain/Key Decisions.md에 결정 추가 (날짜, 결정 내용, 이유, 트레이드오프)
→work/active/example-service.md의 관련 섹션 업데이트 -
3
wikilink 연결 확인
Key Decisions.md ↔ example-service.md ↔ wiki/concepts/nextjs.md 가 연결되어 있는지 확인.
없으면 Claude에게 직접 요청: "방금 결정 내용에 관련 wikilink 추가해줘"
나중에 기술스택이 바뀌어도 기존 결정 기록은 삭제하지 않습니다. [outdated] 태그를 달고 변경 이유를 새 항목으로 추가. 결정의 역사가 그 자체로 가치 있는 지식입니다.
시나리오 C — 미팅 내용 기록하고 아카이빙
예: "투자자와 IR 미팅을 했고, 핵심 피드백을 기록해야 한다"
-
1
모바일에서 실시간 메모 (이동 중, 미팅 중)
Telegram으로 텍스트 전송:
→투자자 김OO 미팅. PMF 증거 더 필요하다고. 6개월 내 100 유료 유저 목표로 잡아보라 했음.thinking/session-logs/dump-날짜.md에 자동 저장 -
2
PC에서 미팅 노트 정식화
방금 덤프한 투자자 미팅 내용을 work/1-1/ 에 정식 미팅 노트로 만들어줘. frontmatter, wikilink([[example-website]], [[brain/North Star]]) 포함해서. -
3
/people-profiler 업데이트
"김OO 투자자" 프로필이/people-profilerorg/people/에 없으면 자동 생성. 있으면 미팅 이력 추가. -
4
핵심 피드백을 North Star에 반영
투자자 피드백이 방향에 영향을 준다면:brain/North Star.md업데이트 →work/active/example-website.md다음 스텝 갱신
시나리오 D — 경쟁사 분석 진행하기
예: "향수 브랜드의 주요 경쟁사 3곳 분석을 vault에 체계적으로 쌓고 싶다"
-
1
경쟁사 원본 자료 수집
Telegram으로 이미지도 전송:# 각 경쟁사 페이지를 raw/에 저장 defuddle parse "https://competitor-a.com/about" --md > raw/competitors/competitor-a.md defuddle parse "https://competitor-b.com/products" --md > raw/competitors/competitor-b.md#brand/competitors캡션으로 raw/images/brand/competitors/ 자동 저장 -
2
비교 분석 대화
raw/competitors/ 폴더의 파일들을 읽고 향수 브랜드 관점에서 포지셔닝, 가격대, 채널 전략을 비교 분석해줘 -
3
/compile → 경쟁사 wiki 생성
→/compilewiki/entities/competitor-a.md,wiki/entities/competitor-b.md생성
→wiki/concepts/perfume-competitive-landscape.md생성 (전체 지형도) -
4
향후 검색은 QMD로
새 경쟁사 정보가 추가될 때마다 같은 흐름 반복. 시간이 지날수록 비교 분석이 풍부해집니다.qmd query "향수 브랜드 경쟁사 가격 전략"
14 커맨드 맥락 가이드 — 언제 어떤 커맨드를?
19개 커맨드를 어떤 상황에서 사용하면 되는지 맥락 중심으로 정리합니다.
| 상황 | 쓸 커맨드 | 왜 이 커맨드? |
|---|---|---|
| 아침에 뭘 할지 모르겠다 | /standup |
North Star + 미완료 태스크 + 최근 변경사항을 종합해 오늘 우선순위 3개를 제안. 판단을 위임하는 커맨드. |
| 이동 중 떠오른 아이디어 or 읽은 내용 | Telegram 텍스트 전송 or /dump |
일단 저장. 나중에 /compile로 정제. 캡처의 마찰을 최소화하는 것이 핵심. |
| raw/에 파일이 쌓였다, 이걸 정리하고 싶다 | /compile |
raw/ → wiki/ 변환. 핵심 개념 추출 + wikilink 연결. 주 1-2회 또는 파일이 3개 이상 쌓였을 때. |
| 오늘 작업을 끝내고 마무리하려 한다 | /wrap-up |
frontmatter 검증 + 자동 커밋. 하루 최소 1번은 실행. Stop 훅이 자동으로도 실행. |
| "이 노트들이 서로 연결이 안 되어 있는 것 같다" | /cross-linker |
의미 유사한 노트 쌍을 탐색해 wikilink 자동 제안. /compile 직후 실행하면 효과적. |
| wiki 내용이 오래된 것 같다, 사실 확인 필요 | /lint-wiki → /verify |
먼저 /lint-wiki로 모순·진부화 탐지, 그 후 /verify로 웹 검색 통해 사실 보완. |
| "내가 이번 주/달에 뭘 했는지 모르겠다" | /brag-spotter |
git log + 대화 이력에서 성과를 자동 추출. 주 1회 금요일에 실행 권장. |
| 성과 리뷰, IR, 투자자 보고를 준비해야 한다 | /review-prep |
Brag Doc에 쌓인 성과들을 STAR 형식으로 재구성. 분기 1회 실행. |
| 같은 사람과 미팅이 반복된다, 프로필이 필요하다 | /people-profiler |
org/people/에 인물 노트 생성·업데이트. 다음 미팅 전 자동으로 컨텍스트 로딩됨. |
| 버그, 장애, 예상 못한 문제가 발생했다 | /incident-capture |
날짜·증상·원인·해결·교훈 템플릿으로 brain/Gotchas.md에 기록. 반복 실수 방지. |
| AI가 쓴 것 같은 텍스트를 자연스럽게 바꾸고 싶다 | /humanize |
뻣뻣한 LLM 문체를 사람이 쓴 것처럼 변환. 외부 발행 전 필수. |
| 프로젝트가 완료됐다, 정리하고 싶다 | /project-archive |
work/active/ → work/archive/YYYY/ 이동 + 완료 frontmatter 추가. 깔끔한 종료. |
| Vault 전체 상태가 궁금하다 (건강 점검) | /vault-librarian |
frontmatter 충족률, wikilink 밀도, 고아 노트 수, 최근 활동을 점수로 환산. 목표 90+. |
| Notion/Evernote에서 이 시스템으로 옮기고 싶다 | /vault-migrator |
다른 툴에서 내보낸 .md 파일을 이 Vault의 frontmatter/wikilink 컨벤션으로 일괄 변환. |
커맨드 조합 패턴 (자주 쓰이는 시퀀스)
리서치 루프
defuddle → /compile → /cross-linker → /wrap-up
주간 루틴
/weekly → /brag-spotter → /lint-wiki → /vault-librarian
품질 개선
/lint-wiki → /verify → /cross-linker
분기 마감
/brag-spotter → /review-prep → /vault-audit
15 지식 축적 흐름 — 시간이 지나면 어떻게 되는가
이 시스템은 사용할수록 지식이 복리로 쌓이도록 설계되어 있습니다. 아래는 동일한 Vault가 1주차, 1개월차, 3개월차에 어떤 모습이 되는지 보여줍니다.
지식 흐름 다이어그램
시간별 Vault 변화
| 시점 | 노트 수 (예시) | 주요 변화 | 활용 방식 |
|---|---|---|---|
| 1주차 | 20~50개 | raw/에 자료가 쌓이기 시작. 첫 wiki 노트 생성. 대부분 고립된 섬 형태. | /dump, /compile, /standup에 집중. 습관 형성이 목표. |
| 1개월차 | 100~200개 | wikilink 연결이 늘어나며 지식 클러스터 형성. QMD 검색이 의미 있는 결과를 돌려주기 시작. | /cross-linker, /lint-wiki 활용 시작. Graphify로 구조 파악. |
| 3개월차 | 300~600개 | 패턴이 보이기 시작. "이 사업 결정은 3개월 전 이 아티클에서 시작됐다"를 추적 가능. | /review-prep으로 성과 스토리 자동 생성. 새 정보가 기존 지식과 즉시 연결. |
| 6개월+ | 600~1500개 | Vault 자체가 개인 도메인 지식의 응축. Claude가 답변할 때 외부 검색보다 vault 검색을 먼저. | 신규 결정 시 "기존에 비슷한 결정한 게 있었나?" 자동 참조. 경험이 데이터가 됨. |
Karpathy 루프 — 지식이 스스로 강화되는 원리
Karpathy의 핵심 통찰: "LLM은 코드베이스처럼 wiki를 읽고, 프로그래머처럼 wiki를 업데이트한다."
-
①
Compile — raw/ 소스 → wiki/ 요약. 정보를 구조화하는 단계.
-
②
Lint — wiki/ 내부 모순·진부화 탐지 → 웹 검색으로 보완. 품질을 높이는 단계.
-
③
Filing-Back — Claude와의 Q&A 답변 중 가치 있는 것 → output/ → wiki/ 승격. 출력이 다시 입력이 되는 단계.
-
④
반복 — ① → ② → ③ → ①. 루프가 돌수록 wiki의 밀도와 정확도가 높아짐.
16 처음 2주 온보딩 플랜
시스템을 새로 설치했다면 이 순서대로 진행하세요. 한꺼번에 다 하려 하지 말고, 하루에 한 가지씩 익히는 것이 핵심입니다.
1주차 — 기초 습관 형성
| Day | 할 것 | 목표 |
|---|---|---|
| Day 1 | 폴더 구조 생성 + Git 초기화 + CLAUDE.md 작성 | 환경 구성 완료. claude 실행 시 CLAUDE.md가 로딩되는지 확인. |
| Day 2 | brain/North Star.md 작성. 현재 목표를 정직하게 3개만. | 세션 시작 시 North Star가 자동 로딩되는 것을 경험. |
| Day 3 | 훅 스크립트 6개 생성 + settings.json 등록 | /dump 입력 시 thinking/session-logs/에 파일이 생기는지 확인. |
| Day 4 | defuddle로 관심 아티클 1개 저장 → /compile 실행 |
첫 wiki/ 노트가 생성되는 것을 확인. raw/ → wiki/ 흐름 체험. |
| Day 5 | Telegram 봇 설치 + 자동 시작 설정 | 모바일에서 텍스트 전송 → dump 파일 생성 확인. |
| Day 6-7 | QMD 설치 + 인덱싱. /standup, /wrap-up 루틴 연습. |
아침 standup, 저녁 wrap-up이 자연스럽게 느껴질 때까지 반복. |
2주차 — 심화 활용
| Day | 할 것 | 목표 |
|---|---|---|
| Day 8-9 | 슬래시 커맨드 파일 작성 (standup, compile, wrap-up, dump, weekly) | 매일 쓰는 5개 커맨드를 본인 워크플로우에 맞게 커스터마이징. |
| Day 10 | Graphify 실행 (/graphify .). GRAPH_REPORT.md 확인. |
지식 그래프에서 본인 노트의 클러스터 구조를 처음으로 시각화. |
| Day 11-12 | 실제 사업 상황에서 시나리오 A~D 중 한 가지 직접 따라 해보기. | 이론이 아닌 실전 데이터로 첫 의미 있는 wiki 클러스터 완성. |
| Day 13 | /vault-librarian 실행 → 건강 점수 확인. /brag-spotter로 2주 성과 추출. |
시스템 상태 점검 + 첫 성과 기록. Brag Doc에 첫 항목 추가. |
| Day 14 | /weekly 실행. 잘 된 것, 개선할 것을 CLAUDE.md에 반영. |
2주차 회고. CLAUDE.md를 본인에게 맞게 처음으로 수정하는 경험. |
raw/ 20개 이상, wiki/ 10개 이상, 서로 연결된 wikilink, 첫 Brag Doc 항목, vault-librarian 점수 70+ 달성. 그리고 가장 중요한 것: Claude가 당신의 사업 컨텍스트를 기억하기 시작합니다.
✦ 전체 시스템 수치 요약
핵심 파일 경로 체크리스트
| 파일 | 경로 | 역할 |
|---|---|---|
| CLAUDE.md | C:\Vault\YourName\CLAUDE.md | 시스템 헌법. 세션마다 자동 로딩. |
| Home.md | C:\Vault\YourName\Home.md | Obsidian 대시보드 |
| North Star.md | brain\North Star.md | 최상위 목표. 세션 시작 시 자동 주입. |
| 전역 설정 | %USERPROFILE%\.claude\settings.json | 훅 8개 정의 |
| 프로젝트 설정 | C:\Vault\YourName\.claude\settings.json | Vault 전용 훅 |
| Telegram 봇 | .claude\scripts\telegram-bot.py | 모바일 인터페이스 |
| 자동 시작 | %APPDATA%\Microsoft\...\Startup\vault-bot.bat | PC 부팅 시 봇 자동 실행 |
① 초보자용 빠른 시작 완료 → ② 실제 노트 5개 관리 → ③ 필요하면 QMD 설치 → ④ 별도 Graphify 설치·등록 → ⑤ 훅·Telegram·법인 분리는 보안 검토 후 선택