# 투자 자료·전략 파이프라인 구현 계획 (Implementation Plan) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > **⚠️ 커밋 정책 (사용자 요청):** 자동 커밋 비활성화. 각 Task의 "Stage" 스텝은 `git add`(스테이징)까지만 수행하고, 실제 `git commit`은 사용자가 일괄 수행한다. 계획서의 어떤 스텝도 `git commit`을 자동 실행하지 않는다. **Goal:** 개발과 무관한 개인 투자(현 자본 60만원) 운용을 위해, 기존 `raw → wiki canonical` 파이프라인을 별도 `invest-*` 폴더·6개 Claude 전용 명령으로 복제하고, 출처 검증을 마친 전략 규칙을 seed한다. **Architecture:** raw(증거: invest-daily/research/ledger) → wiki canonical(invest-concepts/strategy/plan). 명령은 `/invest-daily · research · ingest · plan · decide · review` 6종(Claude Code 전용, 3-플랫폼 sync 안 함). 구조 린터는 templates/ 를 자동 인덱싱하므로 새 템플릿 생성만으로 적합성 검사가 활성화됨(Python 훅 수정 불필요). **Tech Stack:** Markdown + YAML frontmatter (Obsidian), Python 구조 린터(`wiki_structure_lint.py`, 기존), `deep-research` 스킬 호출. **근거 SSOT:** 설계 문서 `docs/superpowers/specs/2026-06-05-investment-wiki-pipeline-design.md` (특히 §4 전략 확정본, §7 검증 근거표). --- ## 검증 방법 (이 plan의 "테스트") 코드가 아니라 문서 시스템이므로 각 Task의 검증은 다음 중 해당하는 것을 사용한다: - **구조 린트**: `python3 .claude/hooks/wiki_structure_lint.py --file <경로>` → `PASS` 기대 (또는 FAIL 메시지 확인). - **frontmatter 확인**: 파일 상단 `source_type` 등 필수 키 존재. - **링크 검증**: `python3 .claude/hooks/wiki_structure_lint.py --file <경로>`의 C2(broken wikilink) 항목 0건. - **self-grep**: verbatim 인용이 원문과 일치하는지 raw 문서에서 grep. > 린터 사용법은 파일 상단 docstring 참조(`--file` 단일, 인자 없으면 vault 전체). 새 `source_type`을 가진 템플릿을 만들면 `build_template_index`가 자동 인덱싱한다. --- ## File Structure (생성/수정 맵) **생성 (디렉터리):** `raw/invest-daily/`, `raw/invest-research/`, `raw/invest-ledger/`, `wiki/invest-concepts/`, `wiki/invest-strategy/`, `wiki/invest-plan/`, `wiki/invest/` **생성 (템플릿 6):** `templates/invest-{daily,research,ledger,concept,strategy,plan}-template.md` **생성 (명령 6):** `.claude/commands/invest-{daily,research,ingest,plan,decide,review}.md` **생성 (허브+seed):** `wiki/invest/invest-hub.md`, `raw/invest-research/2026-06-05-passive-vs-active-diversification.md` 외 검증 근거 아카이브, `wiki/invest-strategy/strategy.md` **수정:** `CLAUDE.md`(§4 source_type, §5 신뢰도, 3-플랫폼 예외 표기), `rules/tag-taxonomy.md`(invest 어휘), `wiki/llm-wiki.md`(MOC 등록), `.claude/commands/lint.md`(invest 의미 검사 항목) --- ## Phase A — Foundation (폴더 + 메타 등록) ### Task 1: 디렉터리 구조 생성 **Files:** - Create: 7개 디렉터리 + 각 `.gitkeep` (빈 디렉터리는 git이 추적 안 함) - [ ] **Step 1: 디렉터리와 .gitkeep 생성** Run: ```bash cd /home/donghyeon/dev/llm-wiki-private for d in raw/invest-daily raw/invest-research raw/invest-ledger wiki/invest-concepts wiki/invest-strategy wiki/invest-plan wiki/invest; do mkdir -p "$d" && touch "$d/.gitkeep" done ``` - [ ] **Step 2: 생성 확인** Run: `ls -d raw/invest-* wiki/invest*` Expected: 7개 경로 모두 출력. - [ ] **Step 3: Stage** Run: `git add raw/invest-*/.gitkeep wiki/invest*/.gitkeep` --- ### Task 2: CLAUDE.md 메타 등록 (source_type 어휘 + 신뢰도 + 3-플랫폼 예외) **Files:** - Modify: `CLAUDE.md` (§4 source_type 목록, §5 신뢰도 표, 자동화 서술의 3-플랫폼 예외) - [ ] **Step 1: §4 source_type 허용 어휘에 6종 추가** `CLAUDE.md` §4의 `source_type` 허용 어휘 문단 끝에 다음 문장을 추가: ```markdown **투자 도메인 source_type (Claude 전용 파이프라인):** `invest-daily`(raw/invest-daily/), `invest-research`(raw/invest-research/), `invest-ledger`(raw/invest-ledger/), `invest-concept`(wiki/invest-concepts/), `invest-strategy`(wiki/invest-strategy/), `invest-plan`(wiki/invest-plan/). 각 카테고리명을 그대로 source_type 으로 사용. 개인 투자 관리용이며 개발 프로젝트와 분리된 트리. ``` 또한 frontmatter 표준 코드블록의 `source_type:` 줄 enum에 `| invest-daily | invest-research | invest-ledger | invest-concept | invest-strategy | invest-plan`을 끝에 추가. - [ ] **Step 2: §5 신뢰도 표에 행 추가** `CLAUDE.md` §5 출처 신뢰도 표(`| source_type | 취급 방식 |`)의 `llm-generated` 행 위에 추가: ```markdown | `invest-daily` | 그날의 거시 자금흐름 조사. **수치마다 출처+조사시점 필수**. 영구 보관, `/invest-ingest`로 검증분만 추출 | | `invest-research` | 특정 분야/자산 심층 조사. verbatim 인용 보존. canonical 정제 전 증거 | | `invest-ledger` | 실제 매매 기록(사실). 영구 보관. wiki로 옮기지 않음 | | `invest-concept` | wiki/invest-concepts canonical 투자 개념 | | `invest-strategy` | wiki/invest-strategy canonical 전략 규칙. **면허 자문 아님 고지 필수** | | `invest-plan` | wiki/invest-plan canonical 활성 투자 계획 | ``` - [ ] **Step 3: 3-플랫폼 서술에 Claude 전용 예외 표기** `CLAUDE.md`에서 "3-플랫폼 패리티 예외"를 언급하는 부분(project-readiness-auditor / `/project`·`/project-spec` 서술 근처)에 한 문장 추가: ```markdown **투자 파이프라인(`/invest-*` 6개 명령 + invest 템플릿)도 Claude Code 전용 — Codex/Antigravity 포팅 대상 아님** (개인 투자 관리용, `/project` 파이프라인과 동일한 3-플랫폼 예외). ``` - [ ] **Step 4: 검증** Run: `grep -n "invest-daily\|invest-strategy\|invest-ledger" CLAUDE.md` Expected: §4·§5·예외 표기에서 다수 매칭. - [ ] **Step 5: Stage** Run: `git add CLAUDE.md` --- ### Task 3: tag-taxonomy.md 에 invest 어휘 추가 **Files:** - Modify: `rules/tag-taxonomy.md` (L1 Type, L2 Project, L3 Domain, L5 Concept + 권장 조합 표) - [ ] **Step 1: 계층별 어휘 추가** `rules/tag-taxonomy.md` §1 표에서: - **L1 Type** 예시 끝에 추가: `invest-daily`, `invest-research`, `invest-ledger`, `invest-concept`, `invest-strategy`, `invest-plan` - **L2 Project** 예시 끝에 추가: `personal-invest` - **L3 Domain** 예시 끝에 추가: `finance`, `macro`, `tax-account` - **L5 Concept** 예시 끝에 추가: `etf`, `index-fund`, `diversification`, `asset-allocation`, `position-sizing`, `behavior-gap`, `dollar-cost-averaging`, `stop-loss`, `isa-account`, `pension-account` - [ ] **Step 2: §2 권장 조합 표에 행 추가** `| concept (wiki) |` 행 아래에 추가: ```markdown | invest-daily | `invest-daily` | `personal-invest` | `finance`/`macro` | 0~2 | 0~2 | | invest-research | `invest-research` | `personal-invest` | `finance` 1~2 | 0~1 | 1~2 | | invest-strategy | `invest-strategy` | `personal-invest` | `finance` 1 | 0~1 | 1~2 | ``` - [ ] **Step 3: 검증** Run: `grep -n "personal-invest\|asset-allocation\|tax-account" rules/tag-taxonomy.md` Expected: §1·§2에서 매칭. - [ ] **Step 4: Stage** Run: `git add rules/tag-taxonomy.md` --- ## Phase B — 템플릿 6종 > 각 템플릿은 **concrete `source_type`**(파이프 없음)을 선언해야 린터가 인덱싱한다. 필수 섹션 = 템플릿의 `(선택)`이 없는 `##` 헤더. `(선택)`이 붙은 헤더는 `is_optional()`이 면제. ### Task 4: invest-daily-template.md **Files:** - Create: `templates/invest-daily-template.md` - [ ] **Step 1: 파일 작성** ```markdown --- title: YYYY-MM-DD 투자 일일 조사 source_type: invest-daily status: raw confidence: unknown tags: [invest-daily, personal-invest, macro] date: YYYY-MM-DD last_reviewed: YYYY-MM-DD --- # YYYY-MM-DD 투자 일일 조사 > Layer: `raw/invest-daily/` — 그날의 거시 자금흐름 조사. **수치마다 출처 링크 + 조사 시점 필수**(실시간 아님). `/invest-ingest`가 검증 가능한 항목만 `wiki/invest-concepts/`로 추출. 원본은 raw에 영구 보관. ## Parent > 이 노트가 속한 cluster 루트로 upward link (linking-rules). - `[[wiki/invest/invest-hub]]` ## 고정 체크리스트 (매일 동일) > 각 항목은 **수치 + 방향(↑/↓) + 출처 + 조사시점**. 모르면 비우되 추측 금지. | 자산군 | 핵심 지표 | 값 / 방향 | 출처 | 조사시점 | |---|---|---|---|---| | 금리 | 미 10Y / 한 기준금리 | | | | | 환율 | USD/KRW | | | | | 원자재 | WTI / 금 | | | | | 주요지수 | S&P500 / KOSPI / 나스닥 | | | | | 코인 | BTC / ETH | | | | ## 오늘의 이슈 (가변) > 그날 가장 큰 움직임·뉴스. 각 항목 출처 링크 필수. - 이슈 1 — <한 줄> ([출처](url), 조사 YYYY-MM-DD) ## 관찰·가설 (미검증) > 내 해석. **검증 전이므로 사실 아님.** canonical로 옮기기 전 `/invest-research`로 확인 대상. - 가설 1: ## Promotable 후보 > `/invest-ingest`로 `wiki/invest-concepts/` 또는 `invest-strategy/`에 올릴 만한 것만 표기. - 후보 1 (→ 어떤 canonical 문서로?) ## Related - 어제 노트: `[[raw/invest-daily/{{어제}}]]` ``` - [ ] **Step 2: 린트 인덱싱 확인** Run: `python3 .claude/hooks/wiki_structure_lint.py --file templates/invest-daily-template.md` Expected: 템플릿 자체는 PASS 또는 템플릿 면제. (목적은 파싱 에러 없음 확인.) - [ ] **Step 3: Stage** Run: `git add templates/invest-daily-template.md` --- ### Task 5: invest-research-template.md **Files:** - Create: `templates/invest-research-template.md` - [ ] **Step 1: 파일 작성** (raw-source-template의 증거규율 차용 — verbatim 인용 + Claim 분리) ```markdown --- title: source_type: invest-research status: raw confidence: unknown url: archive_url: tags: [invest-research, personal-invest, finance] created: YYYY-MM-DD last_reviewed: YYYY-MM-DD --- # {{title}} > Layer: `raw/invest-research/` — 특정 분야/자산/주장에 대한 심층 조사. **외부 출처의 verbatim 인용 보존**(evidence-first-research). 검증된 결론만 `/invest-ingest`로 `wiki/invest-concepts/` 또는 `invest-strategy/`로 추출. ## Parent - `[[wiki/invest/invest-hub]]` ## 조사 질문 / Research Question > 무엇을 확인하려고 조사했는가 1~2줄. ## 출처 / Sources | # | 제목 | 출처 등급 | URL | 발행/조사일 | |---|---|---|---|---| | S1 | | official / vendor-research / academic / media / blog(약함) | | | ## 핵심 인용 / Key quotes (verbatim) > 원문 그대로. 출처 # 표기. 의역 금지. > [S1] "원문 발췌 1." ## Claims Extracted / 추출된 주장 > 출처가 **직접 말하는 것만**. 내 적용 결론은 여기 쓰지 않음. Claim ID는 문서 내 안정 유지. | Claim ID | Claim | Evidence quote | Strength | 적용 조건 | 증명 못 하는 것 | |---|---|---|---|---|---| | C1 | | [S1] "<인용>" | academic / official / vendor-research / media / needs-confirmation | | | ## 판정 / Verdict > 각 Claim에 대한 KEEP / CORRECT / REJECT + 한 줄 사유. - C1: KEEP — <사유> ## Usage Boundaries / 적용 경계 - 직접 증명하는 것: - 증명하지 않는 것: - 내 상황(소액·국내 거주)에 적용하려면 추가 확인할 것: ## Related - 같은 주제 다른 조사: `[[raw/invest-research/<...>]]` - 이 조사를 인용한 canonical: `[[wiki/invest-strategy/strategy]]` (생성 시) ``` - [ ] **Step 2: 검증** Run: `python3 .claude/hooks/wiki_structure_lint.py --file templates/invest-research-template.md` Expected: 파싱 에러 없음. - [ ] **Step 3: Stage** Run: `git add templates/invest-research-template.md` --- ### Task 6: invest-ledger-template.md (단일 원장) **Files:** - Create: `templates/invest-ledger-template.md` - [ ] **Step 1: 파일 작성** ```markdown --- title: 매매 원장 / Trade Ledger source_type: invest-ledger status: raw confidence: unknown tags: [invest-ledger, personal-invest, finance] created: YYYY-MM-DD last_reviewed: YYYY-MM-DD --- # 매매 원장 / Trade Ledger > Layer: `raw/invest-ledger/` — 실제 매수/매도의 **사실 기록**. 단일 원장 파일에 모든 거래를 누적(설계 §8-3). `/invest-decide`가 행을 추가하며 `wiki/invest-strategy/`의 규칙 위반을 체크. wiki로 옮기지 않음. ## Parent - `[[wiki/invest/invest-hub]]` ## 현재 포지션 / Open Positions | 종목/티커 | 분류(코어/베팅) | 보유수량 | 평균단가 | 현재 비중% | 메모 | |---|---|---|---|---|---| ## 거래 내역 / Trade Log > 시간 역순(최신 위). 모든 행은 근거 문서 링크 필수. | 날짜 | 매수/매도 | 종목 | 수량 | 단가 | 금액 | 계좌 | 근거(링크) | 규칙체크 | |---|---|---|---|---|---|---|---|---| ## 규칙 위반 이력 / Rule-check Findings > `/invest-decide`가 빨간 플래그를 낸 건 기록. 무시하고 진행했다면 그 사유도. | 날짜 | 위반 규칙 | 내용 | 사용자 처리 | |---|---|---|---| ## 손익 요약 / P&L Summary > `/invest-review` 실행 시 갱신. - 총 투입원금: - 평가금액: - 실현손익: - 목표 대비: ``` - [ ] **Step 2: 검증** Run: `python3 .claude/hooks/wiki_structure_lint.py --file templates/invest-ledger-template.md` Expected: 파싱 에러 없음. - [ ] **Step 3: Stage** Run: `git add templates/invest-ledger-template.md` --- ### Task 7: invest-concept-template.md **Files:** - Create: `templates/invest-concept-template.md` - [ ] **Step 1: 파일 작성** (concept-template 차용) ```markdown --- title: source_type: invest-concept status: draft confidence: unknown tags: [invest-concept, personal-invest, finance] last_reviewed: YYYY-MM-DD --- # {{title}} > Layer: `wiki/invest-concepts/` — 검증된 투자 개념(ETF·금리·환율·분산 등). 내 전략 규칙은 `wiki/invest-strategy/`, 활성 계획은 `wiki/invest-plan/`. ## Parent - `[[wiki/invest/invest-hub]]` ## Summary 한두 문장 핵심 정의. ## Standard (기준) 공식/학술 기준의 정의. 출처는 Sources 섹션. ## 한계 / 주의점 적용 한계·흔한 오해·트레이드오프. 검증된 것만 사실로, 그 외 `needs-confirmation`. ## Claim-backed Knowledge > 핵심 설명은 raw 증거 claim으로 뒷받침. | Knowledge Point | Supporting Claims | Confidence | Notes | |---|---|---|---| | <설명> | `raw/invest-research/.md#C1` | `high`/`medium`/`low` | | ## Strategy 연결 > 이 개념이 어떤 전략 규칙으로 연결되는지 링크. - `[[wiki/invest-strategy/strategy]]` — <어느 규칙> ## Do Not Overclaim 이 개념을 말할 때 과장 금지 지점. ## Sources - [출처 제목](url) — 핵심 - `[[raw/invest-research/<...>]]` — 보존 원본 ``` - [ ] **Step 2: 검증** Run: `python3 .claude/hooks/wiki_structure_lint.py --file templates/invest-concept-template.md` Expected: 파싱 에러 없음. - [ ] **Step 3: Stage** Run: `git add templates/invest-concept-template.md` --- ### Task 8: invest-strategy-template.md (5규칙군 + 고지) **Files:** - Create: `templates/invest-strategy-template.md` - [ ] **Step 1: 파일 작성** ```markdown --- title: source_type: invest-strategy status: draft confidence: unknown tags: [invest-strategy, personal-invest, finance] last_reviewed: YYYY-MM-DD --- # {{title}} > Layer: `wiki/invest-strategy/` — 내 투자 전략 규칙. `/invest-decide`가 이 문서의 고정 규칙과 매매를 대조한다. ## ⚠️ 고지 (Disclaimer) > **면허 있는 투자자문이 아님.** Claude는 환각으로 틀릴 수 있고 손실에 책임지지 않는다. 모든 수치는 조사 시점 기준이며 본인이 출처로 교차검증한다. 이 시스템은 "규율 강제 + 리서치 보조"이지 자산관리사가 아니다. ## Parent - `[[wiki/invest/invest-hub]]` ## 내 프로필 (규칙 기준점) - 시작 자본: - 목표 금액 / 기간: - 월 추가납입: - 최대 감내손실(MDD): - **현재 과세소득(결정세액) 유무:** <있음/없음/미확인 — 절세계좌 규칙이 의존. 미확인 시 연금계좌 권고 보류> ## ① 포지션 크기 규칙 (자본 구간별) | 자본 구간 | 기본 전략 | 근거 | |---|---|---| ## ② 손절 / 익절 규칙 - 코어(광범위 ETF): - 개별 베팅: <두면 `UNSUPPORTED_DECISION` 라벨 + "근거 아닌 재량" 명시> ## ③ 행동 가드레일 - 패닉셀 쿨다운: - FOMO 가드: - 거래 빈도 상한: - 선근거 원칙: ## ④ 절세계좌 우선순위 (조건부) - 사전 체크: - 계좌별 한도(연도 명시): ## ⑤ 목표·금액 - (위 프로필과 연결) ## 규칙 근거 / Rule Provenance > 각 규칙이 어느 증거에서 도출됐는지. 근거 없는 규칙은 `UNSUPPORTED_DECISION` 라벨. | 규칙 | Supporting Claim | 판정 | |---|---|---| ## Sources - `[[raw/invest-research/<...>]]` ``` - [ ] **Step 2: 검증** Run: `python3 .claude/hooks/wiki_structure_lint.py --file templates/invest-strategy-template.md` Expected: 파싱 에러 없음. - [ ] **Step 3: Stage** Run: `git add templates/invest-strategy-template.md` --- ### Task 9: invest-plan-template.md **Files:** - Create: `templates/invest-plan-template.md` - [ ] **Step 1: 파일 작성** ```markdown --- title: source_type: invest-plan status: draft confidence: unknown tags: [invest-plan, personal-invest, finance] last_reviewed: YYYY-MM-DD --- # {{title}} > Layer: `wiki/invest-plan/` — 현재 활성 투자 계획. `wiki/invest-strategy/` 규칙 + 최근 `raw/invest-daily/` 조사에서 도출. 모든 항목은 canonical/증거 근거 링크 필수. ## Parent - `[[wiki/invest/invest-hub]]` ## 현재 자본·목표 - 가용 자본: - 이번 분기 목표: ## 목표 자산 배분 / Target Allocation | 자산 | 분류(코어/베팅) | 목표 비중% | 근거(링크) | |---|---|---|---| ## 워치리스트 / Watchlist | 종목/티커 | 왜 후보인가 | 근거(invest-research 링크) | 진입 조건 | |---|---|---|---| ## 실행 계획 > 무엇을, 언제, 어느 계좌에서. 전략 규칙 위반 없는지 사전 점검. - [ ] 항목 1 — (전략 규칙 ID 충족 확인) ## 리스크·한계 - 이 계획이 틀릴 수 있는 지점: - 말하면 안 되는 범위(검증 안 된 것): ## Sources - `[[wiki/invest-strategy/strategy]]` - `[[raw/invest-daily/<...>]]` ``` - [ ] **Step 2: 검증** Run: `python3 .claude/hooks/wiki_structure_lint.py --file templates/invest-plan-template.md` Expected: 파싱 에러 없음. - [ ] **Step 3: Stage** Run: `git add templates/invest-plan-template.md` --- ## Phase C — 허브 & MOC ### Task 10: invest-hub named hub + llm-wiki MOC 등록 **Files:** - Create: `wiki/invest/invest-hub.md` - Modify: `wiki/llm-wiki.md` - [ ] **Step 1: invest-hub.md 작성** (named hub — 형제 폴더 `wiki/invest/`는 비어도 무방, linking-rules §12) ```markdown --- title: 개인 투자 허브 (Personal Invest Hub) source_type: invest-concept status: draft confidence: unknown tags: [invest-concept, personal-invest, finance] last_reviewed: 2026-06-05 --- # 개인 투자 허브 (Personal Invest Hub) > Layer: `wiki/invest/` — 개인 투자 cluster의 named hub(루트). 개발 프로젝트와 분리된 트리. 모든 invest 문서가 이리로 upward link. ## ⚠️ 고지 면허 자문 아님. 상세는 `[[wiki/invest-strategy/strategy]]` §고지 참조. ## 파이프라인 조사(`/invest-daily`·`/invest-research`) → 변환(`/invest-ingest`) → 계획(`/invest-plan`) → 결정(`/invest-decide`) → 리뷰(`/invest-review`). ## Cluster ### 증거 (raw) - 일일 조사: `raw/invest-daily/` - 심층 조사: `raw/invest-research/` - 매매 원장: `[[raw/invest-ledger/ledger]]` ### canonical (wiki) - 개념: `wiki/invest-concepts/` - 전략: `[[wiki/invest-strategy/strategy]]` - 활성 계획: `wiki/invest-plan/` ## 현재 상태 - 시작 자본: 60만원 - 다음 액션: `/invest-daily`로 첫 거시 스냅샷 수집 → `/invest-plan` 초안 ``` - [ ] **Step 2: wiki/llm-wiki.md MOC에 등록** `wiki/llm-wiki.md`에서 카테고리/허브를 나열하는 섹션에 한 줄 추가: ```markdown - **개인 투자 (개발과 분리)**: `[[wiki/invest/invest-hub]]` — 60만원 운용 파이프라인 (Claude 전용) ``` - [ ] **Step 3: 검증 (named hub 분류 + 링크)** Run: `python3 .claude/hooks/wiki_structure_lint.py --file wiki/invest/invest-hub.md` Expected: PASS (named-hub는 C1/C3 면제, C2 링크만). broken wikilink 0건 — 단, `strategy`·`ledger`는 아직 미생성이므로 이 Task는 broken이 날 수 있음 → Task 17·18·Phase D 이후 재검증(Task 21)에서 0건 확인. - [ ] **Step 4: Stage** Run: `git add wiki/invest/invest-hub.md wiki/llm-wiki.md` --- ## Phase D — 명령 6종 (Claude 전용) > 모두 `.claude/commands/`에만 생성. `scripts/sync_automation.py` 실행하지 않음(3-플랫폼 예외). frontmatter는 `description` + `argument-hint`. ### Task 11: /invest-daily **Files:** - Create: `.claude/commands/invest-daily.md` - [ ] **Step 1: 파일 작성** ```markdown --- description: 오늘의 거시 자금흐름을 deep-research로 조사해 raw/invest-daily/에 기록 argument-hint: <선택: 날짜 YYYY-MM-DD, 비우면 오늘> --- 오늘(또는 지정 날짜)의 투자 일일 조사 노트를 생성합니다. **대상 날짜:** $ARGUMENTS (비면 오늘) ## 작업 절차 1. **날짜 결정** — 인자 있으면 `YYYY-MM-DD` 검증, 없으면 오늘. 2. **파일 존재 확인** — `raw/invest-daily/YYYY-MM-DD.md` 있으면 덮어쓰지 말고 경로 안내 후 종료. 3. **스캐폴딩** — `templates/invest-daily-template.md` 복사, frontmatter `title`/`date`/`last_reviewed`와 본문 헤더의 날짜 치환. 4. **deep-research 호출** — `deep-research` 스킬로 고정 체크리스트(미 10Y·한 기준금리·USD/KRW·WTI·금·S&P500·KOSPI·나스닥·BTC·ETH)의 현재 값/방향과 그날 주요 이슈를 조사. **각 수치에 출처 링크 + 조사시점**을 붙여 표/이슈 섹션을 채움. 5. **사용자 안내** — 경로 출력 + "관찰·가설은 미검증이니 `/invest-research`로 확인하세요." ## 규칙 - **수치마다 출처 + 조사시점 필수.** 출처 없는 단정 금지(환각 위험). 모르면 비움. - "관찰·가설" 섹션은 미검증 표시 유지. canonical로 직접 가지 않음. - `wiki/log.md` 기록 안 함(매일 생성, 노이즈). ``` - [ ] **Step 2: Stage** — `git add .claude/commands/invest-daily.md` --- ### Task 12: /invest-research **Files:** - Create: `.claude/commands/invest-research.md` - [ ] **Step 1: 파일 작성** ```markdown --- description: 특정 분야/자산/주장을 deep-research로 심층 조사해 raw/invest-research/에 verbatim 인용과 함께 보존 argument-hint: <조사 주제 (예: "미국 배당 ETF SCHD 위험")> --- **조사 주제:** $ARGUMENTS ## 작업 절차 1. **인자 검증** — 비면 주제 요청. 파일 슬러그는 `YYYY-MM-DD-.md` (naming-conventions). 2. **파일 존재 확인** — 있으면 덮어쓰지 말고 안내 후 종료. 3. **스캐폴딩** — `templates/invest-research-template.md` 복사, frontmatter 치환. 4. **deep-research 호출** — 권위 출처(학술·공식·vendor-research) 우선, 블로그는 약함 표기. 각 출처에서 **verbatim 인용(byte-for-byte)** 추출 후 self-grep으로 원문 일치 확인(evidence-first-research). Claim 분리 + KEEP/CORRECT/REJECT 판정 채움. 5. **사용자 안내** — 경로 + "검증된 결론은 `/invest-ingest`로 canonical 추출." ## 규칙 - verbatim 인용은 의역 금지. self-grep 미통과 인용은 삭제. - 출처 등급 명시(공식 vs 블로그). 회사/블로그 사례를 일반 법칙으로 격상 금지. - 내 적용 결론은 raw에 쓰지 않음(canonical에서). ``` - [ ] **Step 2: Stage** — `git add .claude/commands/invest-research.md` --- ### Task 13: /invest-ingest **Files:** - Create: `.claude/commands/invest-ingest.md` - [ ] **Step 1: 파일 작성** ```markdown --- description: raw/invest-* 의 검증된 항목을 wiki/invest-concepts/ 또는 invest-strategy/로 추출 argument-hint: <원본 경로 (예: raw/invest-research/2026-06-05-xxx.md)> --- **원본:** $ARGUMENTS ## 작업 절차 1. **입력 검증** — 경로가 `raw/invest-daily/` 또는 `raw/invest-research/` 인지 확인. 아니면 거부. 2. **추출 대상 판정** — 일반 개념이면 `wiki/invest-concepts/`(`invest-concept-template`), 전략 규칙이면 `wiki/invest-strategy/strategy.md`에 규칙 추가. 3. **Claim 연결** — canonical의 모든 Knowledge Point/규칙은 raw의 `#C` claim을 Supporting Claim으로 링크. 근거 없으면 `UNSUPPORTED_DECISION` 라벨. 4. **양방향 링크** — concept↔strategy, invest-hub upward link 추가. 5. **로그** — `wiki/log.md`에 한 줄: `YYYY-MM-DD HH:mm /invest-ingest — <입력> → <출력>`. ## 규칙 - **출력은 wiki/invest-concepts/ 또는 invest-strategy/ 로만.** invest-plan은 `/invest-plan`이 생성. - 검증 안 된(판정 REJECT/needs-confirmation) claim은 canonical로 올리지 않음. - 환각 금지 — raw에 없는 사실 생성 금지. ``` - [ ] **Step 2: Stage** — `git add .claude/commands/invest-ingest.md` --- ### Task 14: /invest-plan **Files:** - Create: `.claude/commands/invest-plan.md` - [ ] **Step 1: 파일 작성** ```markdown --- description: 전략 규칙 + 최근 조사로 wiki/invest-plan/active-plan.md 를 생성/갱신 argument-hint: <선택: 메모 (예: "이번 달 추가납입 10만 반영")> --- **메모:** $ARGUMENTS ## 작업 절차 1. **전제 확인** — `wiki/invest-strategy/strategy.md` 존재 + `status ≥ draft`. 없으면 "먼저 전략을 seed 하세요" 안내. 2. **입력 수집** — strategy의 프로필·규칙 + 최근 `raw/invest-daily/` 스냅샷 + `raw/invest-ledger/ledger.md` 현재 포지션. 3. **계획 산출** — 없으면 `templates/invest-plan-template.md`로 `wiki/invest-plan/active-plan.md` 생성, 있으면 갱신. 목표 배분·워치리스트·실행계획을 채움. **모든 항목에 근거 링크**. 4. **규칙 사전 점검** — 계획이 전략 규칙(포지션 크기·절세계좌 조건)을 위반하지 않는지 확인. 위반 시 플래그. 5. **로그** — `wiki/log.md` 한 줄. ## 규칙 - 모든 배분·종목은 canonical/증거 링크 필수. 근거 없는 종목 금지. - 60만원 구간 기본값: 광범위 ETF 1~2개(전략 ① 규칙). 임의 집중 베팅은 `UNSUPPORTED_DECISION` 라벨. ``` - [ ] **Step 2: Stage** — `git add .claude/commands/invest-plan.md` --- ### Task 15: /invest-decide (규칙 강제의 심장) **Files:** - Create: `.claude/commands/invest-decide.md` - [ ] **Step 1: 파일 작성** ```markdown --- description: 매매 결정을 raw/invest-ledger/ledger.md 에 기록하고 전략 규칙 위반을 강제 체크 argument-hint: <매수|매도 종목 수량 단가 (예: "매수 SCHD 2주 27.5달러")> --- **결정:** $ARGUMENTS ## 작업 절차 1. **인자 파싱** — 매수/매도, 종목, 수량, 단가, (선택)계좌. 불명확하면 되물음. 2. **선근거 확인** — 이 매매의 근거 문서(`raw/invest-research/` 또는 `wiki/invest-plan/`) 링크를 요구. **근거 없으면 기록 거부**(전략 ③ 선근거 원칙). 3. **규칙 강제 체크** — `wiki/invest-strategy/strategy.md`의 고정 규칙과 대조: - **포지션 크기**: 이 매매 후 한 종목 비중이 구간 규칙 초과? (60만 구간: 광범위 ETF 외 집중 베팅 경고) - **손절/익절**: 매도가 코어 ETF 손절이면 경고("코어는 손절 안 함" 규칙). 개별 베팅 익절이 기계적 +X%면 `UNSUPPORTED_DECISION` 환기. - **패닉셀 쿨다운**: 최근 24h 내 급락 보고 후 매도면 빨간 플래그 + "이유 먼저 쓰라". - **거래 빈도**: 이번 주 매매 횟수 > 상한이면 플래그. - **절세계좌**: 일반계좌 매수인데 더 유리한 계좌(ISA 등) 조건 충족 시 권고(소득·락업 조건 먼저 확인). 4. **기록** — `raw/invest-ledger/ledger.md`의 "거래 내역" 행 추가, "현재 포지션" 갱신. 플래그가 있었으면 "규칙 위반 이력"에도 기록(사용자 처리 포함). 5. **결과 리포트** — 위반 0건이면 ✅, 있으면 ⚠️ 목록 + 그래도 진행할지 사용자 확인. ## 규칙 - **규칙 위반을 사용자가 무시할 수 있으나, 무시 사실을 원장에 기록**(나중 회고용). - 근거 링크 없는 매매는 기록하지 않음. - 면허 자문 아님 — 체크는 사용자가 정한 규칙의 기계적 대조일 뿐. ``` - [ ] **Step 2: Stage** — `git add .claude/commands/invest-decide.md` --- ### Task 16: /invest-review **Files:** - Create: `.claude/commands/invest-review.md` - [ ] **Step 1: 파일 작성** ```markdown --- description: 포지션 vs 목표 vs 규칙을 점검하고 리밸런싱·stale·이탈을 플래그 argument-hint: <선택: 기간 (예: "주간")> --- **범위:** $ARGUMENTS (비면 전체) ## 작업 절차 1. **입력** — `raw/invest-ledger/ledger.md`(포지션·손익) + `wiki/invest-plan/active-plan.md`(목표) + `wiki/invest-strategy/strategy.md`(규칙). 2. **점검 항목**: - 목표 배분 대비 현재 비중 이탈(리밸런싱 필요?) - 손익 vs 목표 진척 - 패닉셀/과다거래 이력(원장 규칙 위반 누적) - stale: 워치리스트 종목 근거(`raw/invest-research/`)가 오래됨(>90일)? - 절세계좌 활용도 3. **원장 손익 요약 갱신** — ledger "손익 요약" 섹션 업데이트. 4. **리포트** — 발견 + 권고(리밸런싱/추가조사). 권고도 근거 링크. 5. **로그** — `wiki/log.md` 한 줄. ## 규칙 - 권고는 강제가 아님. 사용자 결정 보조. - 새 사실 생성 금지 — 기존 ledger/plan/strategy/raw 기반 재구성만. ``` - [ ] **Step 2: Stage** — `git add .claude/commands/invest-review.md` --- ## Phase E — Seed 콘텐츠 (검증 근거 아카이브 + 전략 초기본) ### Task 17: 검증 근거를 raw/invest-research/에 아카이브 > 2026-06-05 병렬 리서치 결과(설계 §7)를 증거 문서로 보존. 4개 클러스터를 1파일로 묶거나 주제별 분리. 여기선 **2파일**로: (a) 패시브·분산·행동, (b) 손절익절·절세계좌. **Files:** - Create: `raw/invest-research/2026-06-05-passive-diversification-behavior.md` - Create: `raw/invest-research/2026-06-05-stoploss-takeprofit-tax-accounts.md` - [ ] **Step 1: 파일 (a) 작성** — `templates/invest-research-template.md` 구조로, 설계 §7의 KEEP/CORRECT 항목(SPIVA·Statman·Barber-Odean·Morningstar Mind the Gap·Vanguard DCA·Ibbotson-Kaplan)을 출처표·verbatim 인용·Claim·판정으로 채움. 인용은 설계 문서 §7 및 brainstorming 리서치 결과의 verbatim 문장을 사용(예: SPIVA "65% of all active large-cap U.S. equity funds underperformed the S&P 500"; Barber-Odean "those that trade most earn an annual return of 11.4 percent, while the market returns 17.9 percent"; Morningstar "Investors lost out on about 15% of the return their funds generated"; Vanguard "Lump-sum investment strategies beat common cost averaging investment strategies two-thirds of the time"). - [ ] **Step 2: 파일 (b) 작성** — 동일 구조로 손절/익절(Kaminski-Lo "Under the Random Walk Hypothesis, simple 0/1 stop-loss rules always decrease a strategy's expected return, but in the presence of momentum, stop-loss rules can add value"; 익절 REJECT 근거 Haghani/Dybvig)과 한국 절세계좌(ISA 연 2,000만/총 1억/비과세 200만·서민 400만, 연금저축 600만 세액공제 16.5%/13.2%, IRP 합산 900만 — **전부 2025년 기준**, 국세청·KB 출처, 2026 확대안 미확정 표기)를 채움. - [ ] **Step 3: self-grep 검증** — 각 verbatim 인용이 출처 표기와 일관되는지 확인. (원문 URL은 설계 §7 표 참조.) Run: `python3 .claude/hooks/wiki_structure_lint.py --file raw/invest-research/2026-06-05-passive-diversification-behavior.md` Expected: PASS (또는 broken link만 — strategy 미생성 시). - [ ] **Step 4: Stage** — `git add raw/invest-research/2026-06-05-*.md` --- ### Task 18: wiki/invest-strategy/strategy.md 초기본 작성 **Files:** - Create: `wiki/invest-strategy/strategy.md` - [ ] **Step 1: 파일 작성** — `templates/invest-strategy-template.md` 구조로, 설계 §4 확정본을 채움: - ⚠️ 고지(설계 §0) - 프로필: 시작자본 60만, 목표/MDD는 비워 사용자 입력 대기, **과세소득 유무 = 미확인**(연금계좌 권고 보류) - ① 포지션: 자본 구간표(~200만=광범위 ETF 1~2개 / 200만~1,000만 / 1,000만~), 근거 `[[raw/invest-research/2026-06-05-passive-diversification-behavior.md#C?]]` - ② 손절/익절: 코어=무손절·무익절(KEEP), 개별 베팅=재량+`UNSUPPORTED_DECISION`, 기계적 익절 비권장(REJECT 근거 링크) - ③ 행동 가드레일: 패닉셀 24h 쿨다운·FOMO·주간 거래상한·선근거(Barber-Odean·Mind the Gap 링크), "최고의 날" 논리 사용 금지 메모 - ④ 절세계좌: 조건부(결정세액·락업 먼저), 2025 한도 숫자 + 2026 미확정 표기, 근거 링크 - ⑤ 목표·금액: 프로필 연결 - 규칙 근거표: 각 규칙 → Supporting Claim → 판정 - [ ] **Step 2: 검증** Run: `python3 .claude/hooks/wiki_structure_lint.py --file wiki/invest-strategy/strategy.md` Expected: PASS (필수 섹션 + frontmatter + broken link 0). - [ ] **Step 3: Stage** — `git add wiki/invest-strategy/strategy.md` --- ## Phase F — Lint 연동 & 최종 검증 ### Task 19: /lint 명령에 invest 의미 검사 항목 추가 **Files:** - Modify: `.claude/commands/lint.md` - [ ] **Step 1: invest 검사 항목 추가** — `lint.md`의 검사 항목 목록에 다음 추가: ```markdown ### 투자 트리(invest-*) 추가 검사 - `raw/invest-daily/`·`raw/invest-research/` 의 수치/주장에 **출처 링크 누락** → 플래그. - `wiki/invest-strategy/` 규칙 중 Supporting Claim 도 `UNSUPPORTED_DECISION` 라벨도 없는 행 → 플래그. - `wiki/invest-strategy/` 에 ⚠️ 고지 섹션 누락 → 플래그. - `wiki/invest-plan/` 항목 중 근거 링크 없는 종목/배분 → 플래그. - 2026 ISA 확대안 등 **미확정 수치를 확정처럼 단정** → 플래그. ``` - [ ] **Step 2: Stage** — `git add .claude/commands/lint.md` --- ### Task 20: 전체 구조·링크 최종 검증 **Files:** (없음 — 검증 전용) - [ ] **Step 1: invest 트리 전체 린트** Run: ```bash for f in $(git diff --cached --name-only -- 'raw/invest-*' 'wiki/invest*' 'templates/invest-*'); do echo "=== $f ==="; python3 .claude/hooks/wiki_structure_lint.py --file "$f" done ``` Expected: 모든 콘텐츠 문서 PASS. broken wikilink 0건(strategy·ledger·hub 상호 링크 해소 확인). ledger는 아직 인스턴스 미생성일 수 있음 → hub의 `[[raw/invest-ledger/ledger]]` 링크는 사용자가 첫 매매 시 `templates/invest-ledger-template.md`로 생성(또는 이 Task에서 빈 인스턴스 생성). - [ ] **Step 2: ledger 인스턴스 생성(선택)** — hub 링크 해소를 위해 `templates/invest-ledger-template.md`를 `raw/invest-ledger/ledger.md`로 복사, frontmatter `title`/`created`/`last_reviewed` 치환. (첫 매매 전이라 거래내역은 빈 표.) Run: `python3 .claude/hooks/wiki_structure_lint.py --file raw/invest-ledger/ledger.md` Expected: PASS. - [ ] **Step 3: vault 전체 링크 회귀 확인** Run: `python3 .claude/hooks/wiki_structure_lint.py 2>&1 | grep -i "invest" || echo "invest 관련 신규 위반 없음"` Expected: 신규 위반 없음(기존 무관 경고는 무시). - [ ] **Step 4: Stage** — `git add raw/invest-ledger/ledger.md` --- ### Task 21: 첫 실사용 스모크 (사용자와 함께) **Files:** (실행 검증) - [ ] **Step 1:** `/invest-daily` 1회 실행 → `raw/invest-daily/2026-06-XX.md`에 출처 링크 달린 스냅샷 생성 확인. - [ ] **Step 2:** `/invest-plan` 실행 → `wiki/invest-plan/active-plan.md` 초안 생성, 60만원=광범위 ETF 1~2개 규칙이 반영됐는지 확인. - [ ] **Step 3:** (모의) `/invest-decide 매수 1주 ...` → 규칙 체크 리포트가 동작하고 ledger에 기록되는지 확인. - [ ] **Step 4:** 사용자에게 최종 검토 요청 후, 모든 staged 변경을 **사용자가 직접 커밋**. --- ## Self-Review (작성자 점검) **Spec coverage:** 설계 §2 폴더(Task 1)·§3 명령 6종(Task 11~16)·§4 전략 확정본(Task 18)·§5 템플릿 6 + 메타등록(Task 2·3·4~9)·§5 hub/MOC/태그(Task 3·10)·§6 lint(Task 19)·§7 근거 아카이브(Task 17)·§8 결정(전반 반영: Claude전용=Phase D 주석, 단일원장=Task 6, 고정체크리스트=Task 4·11, 소득필드=Task 18) — 전부 매핑됨. ✅ **Placeholder scan:** 각 템플릿·명령은 완전한 본문 포함. Task 17·18은 "설계 §7/§4를 채운다"는 데이터 채움 작업이라 정확한 출처 문장을 예시로 명시(SPIVA·Barber-Odean·Vanguard·Kaminski-Lo verbatim). TODO/TBD 없음. ✅ **Type consistency:** source_type 값(`invest-daily/research/ledger/concept/strategy/plan`)이 Task 2(CLAUDE.md)·Task 3(tags)·Task 4~9(템플릿 frontmatter)·Task 19(lint)에서 동일 철자. 파일 경로(`wiki/invest-strategy/strategy.md`, `raw/invest-ledger/ledger.md`, `wiki/invest/invest-hub.md`)가 명령·hub·검증에서 일관. ✅