Updated Guide · 2026.10

Obsidian × Claude
제 2의 뇌 구축 가이드

사업자를 위한 AI 지식 관리와 실행 시스템 — 기본 구축은 그대로 따라 하고, 고급 설정은 선택하세요

Obsidian에 기록하고, Claude로 분석하고, wiki/에 지식으로 남기는 구조. · 검토 2026-10-22

Start here · Windows 6 steps

사업자도 그대로 따라 하는 6단계

기존 전체 가이드는 아래에 유지했습니다. 기본 설치와 첫 지식 노트 생성까지 먼저 완료하세요. Telegram·Hooks·Graphify는 나중에 선택할 수 있습니다.

01프로그램 설치

Windows PowerShell을 열고 설치 명령을 한 줄씩 실행합니다. 설치 후 PowerShell을 새로 열어 버전을 확인하세요. Obsidian 공식 홈페이지에서도 프로그램을 설치하세요.

winget install Git.Git
winget install Anthropic.ClaudeCode
claude --version
확인: 버전 표시

02폴더와 운영 규칙 만들기

이 PowerShell 블록을 전체 복사해 실행하세요. 사용자 문서 폴더에 MyBusinessVault가 생성됩니다.

$vault = Join-Path $HOME 'Documents\MyBusinessVault'
$dirs = @('raw\articles','wiki','brain','work\active')
New-Item -ItemType Directory -Path $vault -Force | Out-Null
$dirs | ForEach-Object {
 New-Item -ItemType Directory -Path (Join-Path $vault $_) -Force | Out-Null
}
@'
# Claude 프로젝트 규칙
- raw/ 원본 파일은 수정하거나 삭제하지 마세요.
- 분석과 정리는 wiki/에 새 Markdown 파일로 작성하세요.
- 원본에 없는 사실은 추정으로 구분하세요.
- 고객 개인정보와 기밀자료는 외부로 반출하지 마세요.
- 파일 수정 전에 사용자에게 확인을 요청하세요.
'@ | Set-Content (Join-Path $vault 'CLAUDE.md') -Encoding utf8
@'
# 사업 목표
- 사업명: [입력]
- 고객: [입력]
- 90일 목표: [입력]
'@ | Set-Content (Join-Path $vault 'brain\North Star.md') -Encoding utf8
@'
# 고객 질문 메모
- 고객이 많이 묻는 질문: [입력]
'@ | Set-Content (Join-Path $vault 'raw\articles\첫 메모.md') -Encoding utf8
Write-Host "완료: $vault"
확인: 완료 경로 출력

03Obsidian에서 Vault 열기

Obsidian 실행 → Open folder as vault → 문서/Documents/MyBusinessVault를 선택하세요. 왼쪽 탐색기에 raw, wiki, brain 폴더가 보이면 성공입니다.

04Claude Code 시작

PowerShell에서 실행 후 로그인합니다. 계정이나 요금제에 따라 비용이 발생할 수 있습니다.

$vault = Join-Path $HOME 'Documents\MyBusinessVault'
Set-Location $vault
claude
확인: 대화창 진입

05첫 인사이트 노트 생성

Claude Code 채팅창에 입력하고 저장할 내용을 검토한 후 승인하세요.

CLAUDE.md와 brain/North Star.md를 먼저 읽어주세요.
raw/articles/첫 메모.md 원본은 수정하지 말고,
wiki/첫 인사이트.md 파일에 핵심 인사이트를 정리하세요.
근거와 추론을 구분하고 원본 노트를 명시하세요.
변경할 파일과 내용을 먼저 설명해 주세요.
확인: wiki/첫 인사이트.md 생성

06선택: 검색 기능 확장

기본 구축이 끝난 뒤 QMD가 필요할 때 새 PowerShell 창에서 설치하세요. 아래는 QMD 공식 문서 기준입니다. Node.js 설치가 먼저 필요할 수 있습니다.

npm install -g @tobilu/qmd
$vault = Join-Path $HOME 'Documents\MyBusinessVault'
Set-Location $vault
qmd collection add . --name myvault
qmd embed
qmd query "고객이 궁금해하는 문제"
한국어 검색 품질은 모델별 차이 있음
배포 전 꼭 읽어주세요. 이 문서의 기본 6단계는 따라 하기용이고, 아래 긴 심화 섹션은 일부 스크립트가 생략된 설계 참고 자료입니다. 초보자가 고급 hooks·Telegram 봇·법인 자료 자동 동기화 코드를 그대로 붙여넣어 완성할 수 있다고 안내하지 않습니다. 사내·고객 비밀정보를 개인 GitHub나 AI 서비스로 이동하지 마세요.

공식 자료: Claude Code · Hooks · QMD · Graphify · Defuddle. 마지막 검토: 2026-10-22.

← AI Fieldnotes 자료실로 돌아가기

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가 사업 전체를 기억한다

일반 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 자료, 투자자 보고, 팀 리뷰를 준비할 때 이미 데이터가 쌓여 있습니다.

⚡
⑥ Claude가 불필요한 파일을 읽지 않아 토큰이 절약된다

Vault에 파일이 쌓일수록 Claude가 "전부 읽으려는" 경향이 생깁니다. Graphify는 157개 노드의 관계를 하나의 리포트로 압축하고, QMD는 의미 기반 검색으로 관련 파일만 찾아줍니다. 파일 100개를 읽는 대신 관련 5개만 읽어서 같은 품질의 답변을 냅니다. 비용과 속도가 모두 개선됩니다.

🔄
⑦ 시스템 자체가 학습한다 — Karpathy 루프

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\ — 전체 구조 tree
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 실행 → /standupClaude Code오늘 우선순위 3개
이동 중Telegram으로 텍스트 전송Telegram 봇thinking/session-logs/ 자동 저장
이미지 캡처이미지 + #주제/하위 캡션Telegram 봇raw/images/주제/하위/ 자동 저장
웹 리서치defuddle parse "URL" --md > raw/articles/제목.mddefuddleraw/articles/에 클린 마크다운
지식 정제/compileClaude Codewiki/ 인사이트 노트 생성
퇴근 전/wrap-upClaude Code자동 커밋 + 검증 리포트
주간/weekly, /brag-spotterClaude Code주간 요약, 성과 기록

2 사전 준비

🎯
각 도구가 왜 필요한가

Python은 훅 스크립트(자동 커밋, 분류, 검증) 실행에 필수. Node.js는 QMD·defuddle와 일부 훅 코드에 필요합니다. Claude Code 기본 설치에는 별도 Node.js가 필수는 아닙니다. Git은 Vault의 버전 관리 — 노트 하나 실수로 지워도 복구 가능. Claude Code는 터미널 AI로, 슬래시 커맨드와 훅의 실행 주체. QMD는 한국어 시맨틱 검색 — 키워드 검색 외에 의미 기반 검색을 제공합니다.

필수 도구 설치 목록

도구버전설치 명령어 / 링크필수 여부
Python3.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필수
Obsidian1.5+obsidian.md필수
QMD최신npm install -g @tobilu/qmd권장
defuddle최신npm install -g defuddle권장
python-telegram-bot21+pip install python-telegram-bot선택
⚠️
Windows 경로 주의사항

settings.json과 Python 스크립트에서는 반드시 forward slash를 사용하세요. JSON 문자열 속 백슬래시는 이스케이프가 필요합니다. 슬래시 경로를 사용하면 편리하지만, 올바르게 이스케이프한 백슬래시도 가능합니다. 예: C:/Vault/Personal/, C:/Python313/python.exe

Vault 초기화

  1. 1
    Vault 루트 폴더 생성
    mkdir C:\Vault\YourName — 경로는 자유롭게 설정하되, 이후 모든 스크립트에서 일관되게 사용
  2. 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. 3
    Obsidian에서 Vault 열기
    Obsidian → Open folder as vault → C:\Vault\YourName 선택
  4. 4
    Claude Code에서 프로젝트로 열기
    cd C:\Vault\YourName && claude 실행 — CLAUDE.md가 자동으로 컨텍스트에 로딩됨

Git 설정 및 GitHub 연동 (선택)

아래 명령은 GitHub에 비공개 저장소를 먼저 생성한 뒤 실행하는 참고 예시입니다. 원격으로 올리기 전에 API 키, 개인자료, 고객정보, 계약서가 포함되었는지 확인하세요. Git은 버전 관리 도구이지 민감자료 자동 보호 장치가 아닙니다.

Git 초기화 및 GitHub 연동bash
# 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에 추가

telegram-bot.py에는 봇 토큰 환경변수 코드가 있습니다. 반드시 .gitignore에 추가하고, 토큰은 환경변수로만 관리하세요. setx VAULT_TG_TOKEN "your-token"


3 CLAUDE.md 작성

CLAUDE.md는 Claude Code가 세션을 시작할 때 자동으로 읽는 시스템 헌법입니다. 이 파일이 없으면 Claude가 Vault의 규칙을 모릅니다. 루트에 반드시 작성하세요.

💡
CLAUDE.md가 있는 것과 없는 것의 차이

없을 때: Claude가 매 세션마다 "이 폴더 구조가 뭔가요?", "어떤 규칙을 따르나요?"를 물어보거나 추측합니다. 있을 때: "raw/는 읽기 전용이고, wiki/에만 생성하고, 모든 노트에 frontmatter와 wikilink가 필수"라는 것을 처음부터 알고 있습니다. 이 파일 하나가 수백 번의 같은 설명을 대체합니다.

C:\Vault\YourName\CLAUDE.mdmarkdown
# 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

## 비즈니스 컨텍스트
[당신의 사업/프로젝트 목록을 작성]
ℹ️
Context Navigation 섹션이 중요한 이유

이 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 훅 구성 예시 (고급·바로 붙여넣기 금지)

%USERPROFILE%\.claude\settings.jsonjson
{
  "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에게 자동으로 주입합니다.

.claude/scripts/session-start.pypython
# -*- 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에게 제공합니다. 결정/성과/미팅/아이디어/문제/사람을 자동 감지합니다.

.claude/scripts/classify-message.pypython
# -*- 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 존재 여부를 검사합니다. 누락 시 경고를 출력합니다.

.claude/scripts/validate-write.pypython
# -*- 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 등 공식 훅 입력을 읽는 추가 구현과 개인정보 보호 조치가 필요합니다.

.claude/scripts/pre-compact.pypython
# -*- 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합니다.

📋
auto-wrapup.py 예상 로직(실행 가능한 전체 코드 미제공)

1) 전체 .md 파일 스캔 → 2) frontmatter 누락 파일 목록 → 3) wikilink 없는 고아 노트 목록 → 4) git diff로 변경 파일 → 5) 변경사항 있으면 자동 커밋 → 6) 요약 출력 (총 노트 수, 누락, 고아, 변경, 커밋 해시)

⑥ block-sensitive-files.js — 민감 파일 쓰기 차단

역할: Claude가 .env, .key, *.pem 등 민감한 파일을 실수로 수정하는 것을 막습니다. PreToolUse Write|Edit 훅에 연결합니다.

.claude/scripts/block-sensitive-files.jsjavascript
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 예시

.claude/skills/karpathy-loop/SKILL.mdmarkdown
---
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-librarianVault 건강도 점수 측정 (목표 90+). frontmatter 충족률, wikilink 밀도, 고아 노트 비율, 최근 활동.주 1회
/lint-wikiwiki/ 전체 스캔 → 모순 탐지 → 진부화 체크 → 웹 검색으로 보완 → 갱신.주 1회
/vault-audit전체 구조 감사. 중복 파일, 빈 폴더, 미처리 raw/, 깨진 링크 점검.월 1회
/verifywiki/ 노트의 사실 검증. [unverified] 태그 항목 웹 검색으로 확인.필요 시

성과 관리 — 2개

커맨드역할주기
/brag-spotter대화·git log 분석 → 성과 자동 감지 → perf/Brag Doc.md에 STAR 포맷으로 추가주 1회
/review-prepBrag Doc → 분기별 성과 리뷰 자료 STAR 포맷으로 생성분기 1회

자동화 — 5개

커맨드역할
/cross-linker노트 간 wikilink 누락 탐색 → 의미 유사한 노트 쌍 발견 → 자동 추가 제안
/context-loader프로젝트명 언급 시 관련 work/active/, wiki/, brain/ 노트 자동 로딩
/people-profiler사람 정보 언급 시 org/people/ 에 프로필 생성·업데이트
/incident-capture인시던트·버그 구조화 기록. 날짜·증상·원인·해결·교훈 템플릿으로 brain/Gotchas.md 추가
/humanizeAI 투의 텍스트를 자연스러운 한국어 문체로 변환

기타 — 3개

커맨드역할
/project-archive완료 프로젝트를 work/active/ → work/archive/YYYY/로 이동, frontmatter에 완료일 추가
/slack-scan외부 메시지(Telegram/KakaoTalk 텍스트) 분류하여 적절한 폴더에 저장
/vault-migratorNotion/Evernote 등 다른 툴에서 내보낸 파일을 이 Vault 컨벤션으로 일괄 변환

커맨드 파일 작성 예시

.claude/commands/standup.mdmarkdown
# /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의 차이 — 왜 의미 검색이 중요한가

grep으로 "투자"를 검색하면 "투자"라는 단어가 있는 파일만 나옵니다. QMD로 "자금 조달 전략"을 검색하면 "IR 미팅", "시드 라운드", "캐시플로우 관리"처럼 단어는 다르지만 의미가 연결된 노트들이 전부 나옵니다. Vault가 클수록 QMD의 가치는 기하급수적으로 커집니다. 특히 몇 달 전에 쓴 노트의 정확한 제목이 기억나지 않을 때 진가를 발휘합니다.

설치

Terminalbash
# 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인덱스 갱신새 파일 추가 후 실행 (세션 시작 시 자동)
⚠️
MCP 서버 경로 주의

QMD 실행 위치는 설치 방식과 버전에 따라 달라집니다. where.exe qmd로 명령 경로를 확인하고, MCP 등록은 최신 공식 README의 안내를 따르세요. 특정 사용자 이름이나 내부 파일 경로를 그대로 복사하지 마세요.

8 Graphify — 지식 그래프

Graphify는 Vault의 모든 노트를 분석해 노드(개념)와 엣지(관계)로 구성된 지식 그래프를 생성합니다. Claude가 파일을 직접 읽지 않고 그래프를 통해 구조를 파악하게 합니다.

🕸️
Graphify가 없으면 Claude는 "장님 코끼리 만지기"를 한다

Claude가 질문에 답하려면 관련 파일을 읽어야 합니다. 파일이 100개면 100개를 전부 열어보려 합니다. Graphify는 전체 구조를 GRAPH_REPORT.md 한 파일로 압축합니다. Claude는 이 리포트 하나를 읽는 것으로 "이 Vault에서 어떤 노트가 중심적이고, 어떤 클러스터가 있고, 어디서 시작해야 하는지"를 파악합니다. 답변 품질은 같고 토큰 비용은 대폭 줄어듭니다.

설치 및 초기화

Terminalbash
# 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 섹션 추가

CLAUDE.md에 추가할 내용markdown
## 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 도구입니다. 광고, 네비게이션 등 불필요한 요소를 제거하고 본문만 추출합니다.

Terminalbash
# 설치
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에 저장됩니다.

📲
왜 Telegram인가 — "캡처 마찰 0의 법칙"

정보 캡처 시스템에서 가장 중요한 것은 마찰 없음입니다. 앱을 열고, 폴더를 찾고, 파일명을 정하는 과정이 3초만 걸려도 캡처를 포기하게 됩니다. Telegram은 이미 열려있는 앱입니다. 텍스트를 입력하고 전송하면 끝. 이미지는 캡션 하나면 자동 분류됩니다. 하루 평균 5개의 생각을 캡처하면 한 달에 150개, 1년에 1800개의 원본 데이터가 쌓입니다. 이 데이터가 wiki로 정제되면서 지식이 됩니다.

1단계: Telegram 봇 생성

  1. 1
    Telegram에서 @BotFather를 검색 → /newbot 명령 실행
  2. 2
    봇 이름 입력 (예: "My Vault Bot") → 사용자명 입력 (예: "ys_vault_bot")
  3. 3
    발급된 API 토큰을 복사 (절대 코드에 직접 입력 금지)
  4. 4
    환경변수로 저장:
    PowerShell (관리자)ps1
    setx VAULT_TG_TOKEN "여기에-토큰-붙여넣기" /M
    # PC 재시작 후 적용됨
  5. 5
    본인 chat_id 확인: 봇과 대화 후 https://api.telegram.org/bot[토큰]/getUpdates 에서 확인

2단계: telegram-bot.py 핵심 설정

.claude/scripts/telegram-bot.py (핵심 설정 부분)python
# ─── 수정 필요 항목 ────────────────────────────
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단계: 자동 시작 설정

%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\vault-bot.batbat
@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
#airaw/images/ai/파일명.jpg
#ai/toolsraw/images/ai/tools/파일명.jpg
#brand/perfumeraw/images/brand/perfume/파일명.jpg
⚠️
이미지 태그 주의

#ai/git hub처럼 공백을 넣으면 #ai/git까지만 인식됩니다. 반드시 #ai/github처럼 붙여 쓰세요.


11 일상 운영 가이드

아침 루틴

Terminalbash
# 1. Vault 폴더에서 Claude Code 실행
cd C:\Vault\YourName
claude

# → SessionStart 훅이 자동으로 실행되며:
#   - North Star 로딩
#   - Active projects 스캔
#   - 최근 git 변경사항
#   - 미완료 태스크
#   - Graphify + QMD 상태

# 2. 오늘 우선순위 확인
/standup

리서치 워크플로우

  1. 1
    웹 아티클 저장
    defuddle parse "https://example.com/article" --md > raw/articles/아티클제목.md
  2. 2
    Claude와 내용 대화
    Claude Code에서 저장된 파일에 대해 자유롭게 질문 및 토론
  3. 3
    위키로 정제
    /compile 실행 → wiki/에 인사이트 노트 자동 생성 (source 링크 포함)
  4. 4
    교차 연결
    /cross-linker로 관련 노트와 wikilink 자동 연결

노트 작성 컨벤션

모든 .md 파일은 아래 형식을 따라야 합니다. validate-write.py 훅이 자동으로 검사합니다.

wiki/concepts/예시-노트.mdmarkdown
---
date: 2026-04-13
description: 이 노트가 다루는 내용 한 줄 요약
tags: [concept, business, strategy]
source: raw/articles/원본파일명.md   # wiki/ 노트에만 필수
---

# 노트 제목

본문 내용. [[관련 노트]]와 [[다른 노트]]를 반드시 연결.

> [!note] Callout 예시
> Obsidian callout 사용 가능

[unverified] 태그는 확인이 필요한 정보에 사용.
📋
필수 frontmatter 필드

date, description, tags — 3개는 모든 .md에 필수. wiki/ 노트는 source도 추가. 누락 시 validate-write.py가 경고를 출력합니다.

퇴근 전 루틴

Terminalbash
# 세션 마무리 — 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는 법인의 모든 맥락을 알아야 합니다. 이 구조는 두 조건을 동시에 충족합니다.

C:\Vault\Corp\
법인 Vault
사업 KPI · 계약서 요약
고객 데이터 · IP 문서
팀 결정 · 재무 인사이트
별도 Git repo · 별도 Claude 프로젝트
→
단방향
wiki 요약만 전달
← 역방향 불가
C:\Vault\YourName\
개인 Vault
개인 목표 · 학습 노트
개인 결정 · 성과 기록
+ raw/corp-sync/ ← Corp 요약
개인 Git repo · 개인 Claude 프로젝트
Corp Vault의 wiki/ 요약만 개인 Vault의 raw/corp-sync/로 단방향 복사 — 개인 정보는 절대 법인으로 역류하지 않음

왜 분리해야 하는가

법적 리스크 차단

법인 계약서, 고객 데이터, 재무 정보가 개인 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 경유
고객 원본 데이터·PIICorp: 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\ — 법인 전용 구조tree
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 경로에 대한 참조가 전혀 없어야 합니다.

C:\Vault\Corp\CLAUDE.mdmarkdown
# 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/ 는 명시적 요청 시에만 읽기
🔒
Corp CLAUDE.md에 개인 Vault 경로를 절대 쓰지 않는다

법인 Claude 프로젝트는 개인 Vault의 존재를 모릅니다. 동기화는 항상 외부 스크립트(corp-to-personal-sync.py)가 단방향으로만 실행합니다. 이 경계가 무너지면 전체 분리 구조가 의미 없어집니다.

단방향 동기화 스크립트 (보안 검토용 예시)

🔐
법인 → 개인 자료 자동 복사를 기본적으로 사용하지 마세요.

회사 문서·고객정보를 개인 PC, 개인 Vault, 개인 GitHub 또는 AI 서비스로 옮기려면 회사 정책·보안·계약상 권한을 확인해야 합니다. 아래 코드는 개념 예시로만 남겼으며, 승인 없이 실행하거나 Stop 훅에 연결해서는 안 됩니다. INTERNAL 표시만으로 반출이 허용되지 않습니다.

이 스크립트는 Corp Vault의 wiki/를 Personal Vault의 raw/corp-sync/로 복사합니다. 역방향은 구조적으로 불가능합니다.

C:\Vault\Corp\.claude\scripts\corp-to-personal-sync.pypython
# -*- 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 훅에 등록

%USERPROFILE%\.claude\settings.json (Corp 프로젝트 훅 추가)json
// 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 Loop
raw → wiki 변환
데이터 생성 → 정제 → 구조화 파이프라인이 자동화되어 있음. 확장 가능한 데이터 자산.
Ontology Graph
전체 관계 그래프
Graphify + wikilinks
지식 그래프
모든 개념·엔티티·결정이 연결된 그래프. "이 회사를 이해하는 데 3개월이 아닌 3일이면 된다"는 증거.
Data Lineage
데이터 출처 추적
Git history + source: frontmatter
raw/ IMMUTABLE
모든 인사이트가 어디서 왔는지 추적 가능. 감사(Audit) 즉시 대응. 데이터 신뢰성 증명.
Playbooks
재사용 가능 워크플로
wiki/playbooks/
운영 절차 문서
인수 후 핵심 인력이 떠나도 운영이 지속됨. "Key-person risk" 감소 → 밸류에이션 할인 축소.

매각 배수에 직접 영향을 미치는 3가지 메커니즘

📈
① 창업자 의존도 리스크 제거 → 할인 축소

M&A에서 가장 큰 밸류에이션 할인 요인은 "창업자가 떠나면 다 사라진다"는 인식입니다. Corp Vault의 wiki/decisions/, wiki/playbooks/는 창업자의 결정 패턴과 운영 노하우가 코드화되어 있다는 증거입니다. 이것이 인수자의 불안을 제거해 할인율을 낮춥니다.

🏗️
② 데이터 자산의 독립적 가치 생성

구조화된 시장 인사이트, 경쟁사 분석, 고객 온톨로지는 사업 자체와 별개로 데이터 자산으로서의 가치를 갖습니다. Git history가 있는 지식 그래프는 "언제부터 이 인사이트를 갖고 있었는가"를 증명합니다. 동종업계 플레이어가 돈 주고 사고 싶어하는 지식입니다.

⚡
③ Due Diligence 비용·시간 단축 → 성사율 향상

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 실행 → 전체 그래프 생성"이 회사의 지식이 얼마나 연결되어 있는가"의 시각적 증거.

설치 순서 — 법인/개인 분리 구조 구축

  1. 1
    Corp Vault 폴더 생성
    mkdir C:\Vault\Corp + 위 폴더 구조 생성
  2. 2
    별도 Git repo 초기화
    cd C:\Vault\Corp && git init → GitHub private repo 연결. 개인 repo와 완전히 분리.
  3. 3
    Corp CLAUDE.md 작성
    위 템플릿 기반. 개인 Vault 경로 참조 없이 법인 규칙만 기술.
  4. 4
    Claude Code에서 Corp 프로젝트로 열기
    cd C:\Vault\Corp && claude — 개인 Vault와 별도의 Claude 세션/컨텍스트 유지.
  5. 5
    corp-to-personal-sync.py 설치
    C:\Vault\Corp\.claude\scripts\에 저장 → Corp Vault Stop 훅에 등록.
  6. 6
    Personal Vault CLAUDE.md에 corp-sync 참조 추가
    ## Corp Data
    - raw/corp-sync/ 에 법인 wiki 요약이 자동 동기화됨
    - 이 폴더는 읽기 전용 (raw/ 규칙 적용)
    - Corp 컨텍스트가 필요할 때: qmd query "검색어"
      또는 raw/corp-sync/wiki/ 직접 참조
  7. 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 추가. 링크 없는 노트 = 버그.

잘못 저장된 파일 삭제 방법

CMD (PC에서만 가능. Telegram에서는 삭제 불가)cmd
:: 이미지 파일 삭제
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. 1
    스킬 파일 생성 (선택사항)
    .claude/skills/도구명/SKILL.md — 도구 사용법 작성
  2. 2
    슬래시 커맨드 생성 (선택사항)
    .claude/commands/커맨드명.md — 절차 작성
  3. 3
    훅 스크립트 추가 (선택사항)
    .claude/scripts/스크립트.py 생성 → settings.json에 훅 포인트 등록
  4. 4
    CLAUDE.md 업데이트
    새 도구/규칙을 CLAUDE.md의 적절한 섹션에 추가
  5. 5
    Git 커밋
    git add -A && git commit -m "feat: 새 도구 추가" && git push

13 시나리오별 단계 가이드

실제로 마주치는 상황별로 정확히 어떤 순서로 무엇을 해야 하는지 단계별로 설명합니다.

시나리오 A — 웹 아티클 읽고 인사이트 위키로 만들기

예: "GPT-5 발표 기사를 읽고 우리 SaaS 전략에 반영할 인사이트를 뽑고 싶다"

  1. 1
    아티클을 raw/에 저장
    defuddle parse "https://openai.com/gpt-5-announcement" --md > raw/articles/2026-04-14-gpt5.md
    raw/ 는 절대 수정하지 않는 원본 저장소. 이 파일은 읽기 전용이 됩니다.
  2. 2
    Claude와 내용 대화
    Claude Code에서 자유롭게 질문:
    raw/articles/2026-04-14-gpt5.md 를 읽고 우리 example-service 아키텍처 결정에
    영향을 줄 수 있는 포인트만 뽑아줘
  3. 3
    /compile 실행 → wiki 생성
    /compile
    Claude가 raw/articles/의 새 파일을 감지하고 자동으로:
    → wiki/concepts/gpt5-implications.md 생성 (source: raw/articles/2026-04-14-gpt5.md)
    → wiki/index.md 업데이트
    → 기존 관련 노트(예: example-service.md)에 wikilink 추가 제안
  4. 4
    /cross-linker 실행 (선택)
    /cross-linker
    새 wiki 노트와 기존 노트 간 누락된 wikilink를 자동으로 탐색해 연결 제안.
  5. 5
    /wrap-up으로 커밋
    /wrap-up
    frontmatter 검증 + 자동 git commit. 오늘 추가된 내용이 영구 보존됩니다.
💡
Filing-Back 패턴

Claude와 대화 중 특히 가치 있는 답변이 나오면 output/answers/에 저장해두고, 나중에 /compile로 wiki로 승격시킬 수 있습니다. 지식이 스스로 강화되는 루프입니다.

시나리오 B — 중요한 의사결정 기록하기

예: "example-service 기술스택을 Next.js + Supabase로 결정했다"

  1. 1
    Claude에게 결정 사항 말하기
    example-service 기술스택을 Next.js + Supabase로 확정했어.
    이유는 팀 학습 곡선과 BaaS 비용 최적화 때문이야.
    classify-message.py 훅이 자동으로 감지: "결정" 키워드 → "decision → brain/Key Decisions.md + work/ note" 힌트를 Claude에게 전달
  2. 2
    Claude가 자동으로 두 곳에 기록
    → brain/Key Decisions.md에 결정 추가 (날짜, 결정 내용, 이유, 트레이드오프)
    → work/active/example-service.md의 관련 섹션 업데이트
  3. 3
    wikilink 연결 확인
    Key Decisions.md ↔ example-service.md ↔ wiki/concepts/nextjs.md 가 연결되어 있는지 확인.
    없으면 Claude에게 직접 요청: "방금 결정 내용에 관련 wikilink 추가해줘"
ℹ️
결정이 바뀌면?

나중에 기술스택이 바뀌어도 기존 결정 기록은 삭제하지 않습니다. [outdated] 태그를 달고 변경 이유를 새 항목으로 추가. 결정의 역사가 그 자체로 가치 있는 지식입니다.

시나리오 C — 미팅 내용 기록하고 아카이빙

예: "투자자와 IR 미팅을 했고, 핵심 피드백을 기록해야 한다"

  1. 1
    모바일에서 실시간 메모 (이동 중, 미팅 중)
    Telegram으로 텍스트 전송:
    투자자 김OO 미팅. PMF 증거 더 필요하다고. 6개월 내 100 유료 유저 목표로 잡아보라 했음.
    → thinking/session-logs/dump-날짜.md에 자동 저장
  2. 2
    PC에서 미팅 노트 정식화
    방금 덤프한 투자자 미팅 내용을 work/1-1/ 에 정식 미팅 노트로 만들어줘.
    frontmatter, wikilink([[example-website]], [[brain/North Star]]) 포함해서.
  3. 3
    /people-profiler 업데이트
    /people-profiler
    "김OO 투자자" 프로필이 org/people/에 없으면 자동 생성. 있으면 미팅 이력 추가.
  4. 4
    핵심 피드백을 North Star에 반영
    투자자 피드백이 방향에 영향을 준다면: brain/North Star.md 업데이트 → work/active/example-website.md 다음 스텝 갱신

시나리오 D — 경쟁사 분석 진행하기

예: "향수 브랜드의 주요 경쟁사 3곳 분석을 vault에 체계적으로 쌓고 싶다"

  1. 1
    경쟁사 원본 자료 수집
    # 각 경쟁사 페이지를 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
    Telegram으로 이미지도 전송: #brand/competitors 캡션으로 raw/images/brand/competitors/ 자동 저장
  2. 2
    비교 분석 대화
    raw/competitors/ 폴더의 파일들을 읽고 향수 브랜드 관점에서
    포지셔닝, 가격대, 채널 전략을 비교 분석해줘
  3. 3
    /compile → 경쟁사 wiki 생성
    /compile
    → wiki/entities/competitor-a.md, wiki/entities/competitor-b.md 생성
    → wiki/concepts/perfume-competitive-landscape.md 생성 (전체 지형도)
  4. 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개월차에 어떤 모습이 되는지 보여줍니다.

지식 흐름 다이어그램

[ 입력층 — 다양한 채널 ]
Telegram 텍스트/이미지  ·  defuddle 웹아티클  ·  /dump 생각  ·  미팅 메모
↓ 모두 raw/ 에 저장 (IMMUTABLE)
[ 정제층 — /compile + Claude ]
핵심 개념 추출 → wiki/concepts/  ·  인물/회사 → wiki/entities/  ·  결정 → wiki/decisions/
↓ wikilink로 서로 연결
[ 연결층 — QMD + Graphify ]
시맨틱 검색으로 관련 노트 탐색  ·  그래프로 지식 클러스터 파악  ·  /cross-linker 자동 연결
↓ 축적된 지식이 새 질문에 답변
[ 출력층 — 실제 사업 실행 ]
전략 문서  ·  IR 자료  ·  상세페이지 카피  ·  기술 아키텍처 문서
↓ /brag-spotter + Filing-Back → wiki 재등록
🔄 자기 강화 루프 — 출력이 다시 입력이 됨

시간별 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를 업데이트한다."

  1. ①
    Compile — raw/ 소스 → wiki/ 요약. 정보를 구조화하는 단계.
  2. ②
    Lint — wiki/ 내부 모순·진부화 탐지 → 웹 검색으로 보완. 품질을 높이는 단계.
  3. ③
    Filing-Back — Claude와의 Q&A 답변 중 가치 있는 것 → output/ → wiki/ 승격. 출력이 다시 입력이 되는 단계.
  4. ④
    반복 — ① → ② → ③ → ①. 루프가 돌수록 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를 본인에게 맞게 처음으로 수정하는 경험.
🎯
2주 후 기대할 수 있는 것

raw/ 20개 이상, wiki/ 10개 이상, 서로 연결된 wikilink, 첫 Brag Doc 항목, vault-librarian 점수 70+ 달성. 그리고 가장 중요한 것: Claude가 당신의 사업 컨텍스트를 기억하기 시작합니다.


✦ 전체 시스템 수치 요약

6
Skills
19
Slash Commands
8
Hook Points
6
Hook Scripts
7
Telegram 봇 명령
3
Layer Architecture

핵심 파일 경로 체크리스트

파일경로역할
CLAUDE.mdC:\Vault\YourName\CLAUDE.md시스템 헌법. 세션마다 자동 로딩.
Home.mdC:\Vault\YourName\Home.mdObsidian 대시보드
North Star.mdbrain\North Star.md최상위 목표. 세션 시작 시 자동 주입.
전역 설정%USERPROFILE%\.claude\settings.json훅 8개 정의
프로젝트 설정C:\Vault\YourName\.claude\settings.jsonVault 전용 훅
Telegram 봇.claude\scripts\telegram-bot.py모바일 인터페이스
자동 시작%APPDATA%\Microsoft\...\Startup\vault-bot.batPC 부팅 시 봇 자동 실행
🚀
구축 순서 권장

① 초보자용 빠른 시작 완료 → ② 실제 노트 5개 관리 → ③ 필요하면 QMD 설치 → ④ 별도 Graphify 설치·등록 → ⑤ 훅·Telegram·법인 분리는 보안 검토 후 선택