1주차 - 동작하는 OS 뼈대#32
Open
dev-yeojin wants to merge 16 commits into
Open
Conversation
stock-os 프로젝트로 전환하며 더 이상 사용하지 않는 스킬 호출 카운터 실습 코드를 정리한다.
- market-scanner: 시장 데이터 수집 전담 - portfolio-analyst: 내 성향·보유 기준 판단/조언 작성 - monthly-reviewer: 월간 매매 복기 - daily-report 스킬: 위 에이전트들을 조합해 데일리 리포트 생성 트리거
투자 원칙, 프로필, 포트폴리오(보유/관심종목), 매매 일지, 데일리 리포트 템플릿/샘플, 참고자료(데이터 소스·세금), 전체 구조 설명(os.md), 데일리 조언 프롬프트를 포함한 stock-os 기본 골격을 구성한다.
버킷 분리(적립식/단타) 개념을 걷어내고 매일 시장·성향·보유를 비교해 조언받는 적립식·장기 개인 투자 OS로 좁힘. - 원칙: 단타 규칙 섹션·손실한도·손절 -5% 삭제, 자산배분 단일화, 체크리스트 재작성 - holdings/watchlist: 단타 표 삭제, 단일 보유/관심 종목으로 통일 - profile/journal/daily template: 단타 필드 → 정기매수·리밸런싱·thesis 관점 전환 - subagent(analyst/monthly-reviewer/scanner): 판단축을 시장↔성향↔보유 비중 비교로 - 과거 리포트는 단타 언급 줄만 정리, 나머지 역사 보존 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
개인 자산 정보가 git에 커밋되지 않도록 .env/.env.example 패턴 적용. - holdings.md: gitignore 처리하여 로컬 전용 실데이터 파일로 전환 - holdings.example.md: 구조·규칙만 담은 커밋용 템플릿 신규 추가 - 에이전트·스킬은 기존처럼 holdings.md 경로를 읽으므로 참조 변경 없음 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
매일 아침 07:40 KST(평일) daily-report 스킬을 헤드리스 실행해 04_daily 리포트를 자동 생성한다. holdings.md가 로컬 전용(gitignore)이라 클라우드가 아닌 macOS launchd로 스케줄링(개인화 입력 접근 위해). - automation/run-daily-report.sh: 최소권한(--allowedTools, Bash 불허) 러너 - automation/com.stock-os.daily-report.plist: launchd 스케줄 정본 - automation/README.md: 설치/테스트/제거 가이드 - os.md §9, SKILL.md 자동화 항목을 실제 구성에 맞게 갱신 - .gitignore: automation/logs/ 제외 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
①단계 성향 인터뷰 결과로 OS 활성화. - investor-profile: 10년+ 장기·월 100만+·여유자금·무레버리지, 목표 9~12%(노후), 성향 중립(성장 지향), 약점 FOMO·물타기 - investment-principles: 한·미 7:3, 적립일 매달 첫 영업일, 리밸런싱 밴드 ±5%p, 개별 종목 상한 20%(ETF 예외) 확정 - 약점(FOMO·물타기) 연동: 하락 시 추가매수는 계획된 분할매수만 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
원칙에 수치로 확정돼 있으나 실행 주체가 없던 규칙들을 스킬로 구현. - rebalance-check(②): holdings 비중을 principles 목표(미7:한3·단일20%·±5%p)와 대조해 드리프트를 시나리오형으로 제시. 지수 ETF는 상한 예외. - realized-return: 매도 실현손익을 세후·수수료·환율 차감 실질 기준으로 계산. - log-trade(④): 대화형 매매 기록 → holdings+trade-journal 동시 갱신, 매도 시 realized-return 연결. 커널 "기록 없는 매매 없음" 구현. 셋 다 웹조회 없이 로컬 파일 읽기·계산뿐이라 subagent 격리 없이 메인 컨텍스트 스킬로 둠(daily-report의 웹 fan-out subagent와 대비). holdings 로컬 전용이라 로컬 실행 전용. os.md: §4 journal-keeper를 '의도적 미분리(대화형→subagent 부적합)'로 명확화, §10에 세 스킬 등록 + 온디맨드 스킬 설계 노트. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
04_daily/*.md는 매일 재생성 가능 + 보유 기반 개인 조언을 담으므로 holdings.md와 같은 논리로 gitignore(로컬 전용). 양식 _template.md는 OS 구성요소이므로 커밋 유지. 기존 추적 파일 2026-06-25.md 추적 해제. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
realized-return과 log-trade(매도 경로)가 세율·환율 공식을 각자 구현하면 숫자가 어긋날 수 있어, 계산을 return-calculator 서브에이전트 하나로 모았다. 두 스킬은 입력 수집→호출→present의 얇은 오케스트레이션만 담당한다. - .claude/agents/return-calculator.md: 세후·수수료·환율 차감 실질 실현손익 계산 전담 - realized-return/log-trade: 계산 위임하도록 재배선 - os.md §4 subagent 표·§11 확장지점에 공유 계산 SSOT 반영 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
holdings.md가 Write/Edit되면 trade-journal 동시 갱신 여부를 리마인드하는 PostToolUse hook. 차단이 아니라 exit 2 nudge로 log-trade 후속 조치를 유도한다. 하니스가 편집 직후 자동 실행하는 동작이라 hook으로만 구현 가능하다. - automation/hooks/holdings-journal-guard.sh: jq 없으면 grep 폴백 - .claude/settings.json: PostToolUse(Write|Edit) 등록 - automation/README.md·os.md §9: hook 문서화 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
주식 전문가 관점 평가에서 찾은 두 공백을 메운다. - pre-trade-check(③′): 루프 ③(실행)은 유일하게 AI 터치포인트가 없는데 사용자 최대 리스크(FOMO 추격매수·물타기)가 터지는 지점. 저지르기 전에 원칙 트리거·분산 한도·약점 패턴에 대조해 시나리오로 되돌려준다(막지 않음). - thesis-review: 원칙의 매도 트리거 1순위 "thesis 훼손"을 앞으로 보고 점검. holdings의 매수 논리를 market-scanner 재사용으로 최신 사실과 대조(분기 1회). - tax-and-fees.md: 금융소득종합과세 2,000만원 초과 기준 보완(실수익 판단용). - os.md §3 ③′ 터치포인트·§10 온디맨드 스킬 설계근거 반영. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- README: PR 초안 머리말 제거, 구성요소를 표로 정리, 실행 흐름 코드블록화 - README·os.md(§11): 매매 자동 수집·시세 자동 조회(증권사 API) 로드맵 명시 가드레일(조회·기록까지만, 주문은 사람)·로컬 전용 원칙은 유지 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
개요
한국·미국 주식을 적립식(장기) 으로 관리하는 개인 투자 OS stock-os를 만들었습니다.
매일 아침 시장·내 투자 성향·보유 종목을 비교해 개인화된 데일리 조언을 받고, 매매가 일어나면
기록으로 남겨 학습합니다.
돈을 움직이는 행위는 100% 사람이 하고, AI는 정보·기록·조언까지만 합니다.
무엇을 만들었나
메인 루프
① 성향 인터뷰 → ② 데일리 조언 → ③ 사람의 실행 → ④ 학습·기록(②↔④ 매일 반복)무엇을 만들었나
메인 루프
① 성향 인터뷰 → ② 데일리 조언 → ③ 사람의 실행 → ④ 학습·기록(②↔④ 매일 반복)Subagents (
.claude/agents/— 역할 = 독립 컨텍스트 프로세스)market-scannerportfolio-analystreturn-calculatormonthly-reviewerSkills (
.claude/skills/)daily-report04_daily/YYYY-MM-DD.md저장log-tradepre-trade-checkrebalance-checkrealized-returnreturn-calculator위임thesis-reviewmarket-scanner재사용Hook · 자동화 (
automation/,.claude/settings.json)holdings-journal-guard.shholdings.mdWrite/Editexit 2)com.stock-os.daily-report--allowedTools최소권한, Bash 불허)상태·데이터 파일
00_principles(규칙 SSOT) ·01_profile(성향) ·02_portfolio(holdings·watchlist) ·03_journal(매매 일지) ·04_daily(리포트) ·05_reference(세금·데이터 출처)접근 방식
agents/)로 분리하고, 메인 에이전트는직접 일하지 않는 오케스트레이터로 두었습니다. 컨텍스트 격리로 토큰 효율·역할 응집을 얻습니다.
market-scanner를병렬 fan-out, 수집 결과에 의존하는 판단(
portfolio-analyst)은 순차로 실행합니다.(subagent는 사용자와 대화 불가) 메인 컨텍스트 스킬
log-trade로, 세율·환율 계산은 재사용을 위해return-calculator서브에이전트로 나눴습니다.자동 동작이라 메모리·선호로는 보강 불가 → PostToolUse hook으로 nudge합니다.
설계 의도 (핵심 결정과 근거)
실제 주문·송금·환전 실행을 금지하고 AI를 조언·기록에 묶었습니다.
return-calculator를 공유 SSOT로 뽑았나:realized-return과log-trade(매도 경로)가세율·환율 공식을 각자 구현하면 숫자가 어긋납니다. DRY·계산 일관성을 위해 하나의 계산 출처로 모았습니다.
log-trade는 서브에이전트로 안 뽑았나: 매매 기록은 체결 상세·그때 감정·thesis를 되묻는대화형 작업인데, 서브에이전트는 프롬프트 1개만 받고 결과만 반환하므로 대화가 불가능합니다.
holdings.md가 로컬 전용(gitignore)이라클라우드 에이전트는 접근 불가 → launchd 로컬 스케줄. 무인 실행은
--dangerously-skip-permissions대신
--allowedTools(Bash 불허)로 최소권한만 부여합니다.막지 않고
exit 2로 리마인드만 Claude 루프에 피드백해 후속 조치(log-trade)를 유도합니다.말하도록 커널(§1)에 못 박았습니다.
실행 흐름 (데일리 조언 ②)
[병렬] market-scanner(macro) ┐
[병렬] market-scanner(tickers) ┘─→ [메인 취합] ─→ [순차] portfolio-analyst ─→ 04_daily/YYYY-MM-DD.md 저장
향후 계획 (로드맵)
지금은 매매 기록이 대화형 수기 입력(
log-trade)이고 데일리 시세는 웹 조회(market-scanner)에 의존합니다.다음 단계에서는 증권사 API를 연결해 이 두 축을 자동화할 계획입니다.
holdings.md+trade-journal.md에자동 기록합니다. 수기 입력 오류를 없애고, 커널 §1 "기록 없는 매매 없음"을 API 동기화로 강제합니다.
그 데이터로 데일리 보고서를 생성합니다. 웹 조회 신뢰도 의존을 줄입니다.
실제 주문·송금·환전은 100% 사람이 합니다. 데이터는 로컬 파일에 저장해 개인 자산 정보의 로컬 전용 원칙을 지킵니다.