Skip to content

Latest commit

Β 

History

History
431 lines (332 loc) Β· 11.1 KB

File metadata and controls

431 lines (332 loc) Β· 11.1 KB

AI Development Workflow

Tenbagger Hunter Γ— Claude Code

Version: 0.1
Last Updated: 2026-05-31


1. 핡심 μ² ν•™

Claude CodeλŠ” μ½”λ“œ 생성기가 μ•„λ‹ˆλΌ μ‹œλ‹ˆμ–΄ νŽ˜μ–΄ν”„λ‘œκ·Έλž˜λ¨Έλ‹€.

  • μ•„ν‚€ν…μ²˜ 결정을 같이 ν•œλ‹€
  • λ¦¬νŒ©ν† λ§ μ‹œμ μ„ 같이 νŒλ‹¨ν•œλ‹€
  • 버그 좔적을 같이 ν•œλ‹€
  • ν”„λ‘¬ν”„νŠΈ μ΄ν„°λ ˆμ΄μ…˜μ„ 같이 ν•œλ‹€

λ‹¨μˆœνžˆ "이 ν•¨μˆ˜ λ§Œλ“€μ–΄μ€˜" 둜 μ“°λ©΄ λ‚­λΉ„. μ»¨ν…μŠ€νŠΈλ₯Ό μΆ©λΆ„νžˆ μ£Όκ³ , νŒλ‹¨μ„ μš”μ²­ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν™œμš©ν•œλ‹€.


2. ν”„λ‘œμ νŠΈ ꡬ쑰

tenbagger-hunter/
β”œβ”€β”€ CLAUDE.md                        ← AI μ»¨ν…μŠ€νŠΈ ν—ˆλΈŒ (항상 μ΅œμ‹ ν™”)
β”œβ”€β”€ PRD.md                           ← μ œν’ˆ μš”κ΅¬μ‚¬ν•­
β”œβ”€β”€ AI-WORKFLOW.md                   ← 이 파일
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ architecture.md              ← μ•„ν‚€ν…μ²˜ κ²°μ • 기둝 (ADR)
β”‚   β”œβ”€β”€ prompts.md                   ← Claude API ν”„λ‘¬ν”„νŠΈ 버전 관리
β”‚   └── data-sources.md              ← μ™ΈλΆ€ API μŠ€νŽ™ 정리
β”‚
β”œβ”€β”€ .claude/
β”‚   β”œβ”€β”€ mcp.json                     ← MCP μ„œλ²„ μ„€μ •
β”‚   └── commands/                    ← μ»€μŠ€ν…€ μŠ¬λž˜μ‹œ μ»€λ§¨λ“œ
β”‚       β”œβ”€β”€ new-feature.md
β”‚       β”œβ”€β”€ debug.md
β”‚       β”œβ”€β”€ prompt-iteration.md
β”‚       └── phase-review.md
β”‚
β”œβ”€β”€ app/                             ← Next.js App Router
β”‚   β”œβ”€β”€ (main)/
β”‚   β”‚   β”œβ”€β”€ page.tsx
β”‚   β”‚   β”œβ”€β”€ explore/[theme]/
β”‚   β”‚   └── stock/[ticker]/
β”‚   └── api/
β”‚       β”œβ”€β”€ analyze/route.ts
β”‚       β”œβ”€β”€ stock/[ticker]/route.ts
β”‚       └── search/route.ts
β”‚
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ ai/
β”‚   β”‚   β”œβ”€β”€ analyzer.ts              ← Tenbagger Score 둜직
β”‚   β”‚   β”œβ”€β”€ bull-bear.ts             ← Bull/Bear/Verdict 생성
β”‚   β”‚   └── prompts/                 ← ν”„λ‘¬ν”„νŠΈ ν…œν”Œλ¦Ώ
β”‚   β”‚       β”œβ”€β”€ theme-search.ts
β”‚   β”‚       β”œβ”€β”€ score.ts
β”‚   β”‚       └── bull-bear.ts
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   β”œβ”€β”€ adapters/
β”‚   β”‚   β”‚   └── us-stock.ts          ← FMP API wrapper
β”‚   β”‚   └── cache.ts                 ← Supabase 캐싱 λ ˆμ΄μ–΄
β”‚   └── types/
β”‚       └── stock.ts                 ← 곡톡 νƒ€μž… μ •μ˜
β”‚
└── components/
    β”œβ”€β”€ score-card/
    β”œβ”€β”€ bull-bear/
    └── stock-chart/

3. CLAUDE.md β€” μ»¨ν…μŠ€νŠΈ ν—ˆλΈŒ

ν”„λ‘œμ νŠΈ 루트의 CLAUDE.mdλŠ” Claude Codeκ°€ λ§€ μ„Έμ…˜λ§ˆλ‹€ μ½λŠ” μ‚΄μ•„μžˆλŠ” λ¬Έμ„œλ‹€.
κ°œλ°œν•  λ•Œλ§ˆλ‹€ λ°˜λ“œμ‹œ μ—…λ°μ΄νŠΈν•œλ‹€.

초기 CLAUDE.md ν…œν”Œλ¦Ώ

# Tenbagger Hunter β€” Project Context

## μ•± κ°œμš”
AI 기반 λ―Έκ΅­ 주식 Tenbagger 후보 탐색 도ꡬ.
미ꡭ주(FMP/SEC) 기반.
μžμ—°μ–΄ ν…Œλ§ˆ μž…λ ₯ β†’ κΈ°μ—… 후보 발꡴ β†’ Bull/Bear/Verdict 뢄석.

## 기술 μŠ€νƒ
- Frontend: Next.js 14 App Router, TypeScript, Tailwind, shadcn/ui
- AI: Claude API (claude-sonnet-4)
- DB: Supabase (PostgreSQL)
- 미ꡭ 재무: Financial Modeling Prep API

## 핡심 원칙
1. λͺ¨λ“  AI 뢄석 λ‘œμ§μ€ /lib/ai/ μ•„λž˜ λͺ¨λ“ˆλ‘œ 뢄리
2. μ™ΈλΆ€ API 응닡은 λ°˜λ“œμ‹œ Supabase에 캐싱 (TTL μ •μ±…: docs/data-sources.md μ°Έκ³ )
3. 데이터 μ†ŒμŠ€ 처리 λ‘œμ§μ€ 곡톡 도메인 νƒ€μž…(lib/types/stock.ts)으둜 좔상화
4. 개발 μ€‘μ—λŠ” /lib/data/mock/ 의 mock data μš°μ„  μ‚¬μš©
5. μ—λŸ¬λŠ” μ‚¬μš©μžμ—κ²Œ gracefulν•˜κ²Œ ν‘œμ‹œ

## ν™˜κ²½λ³€μˆ˜ (ν‚€ μ΄λ¦„λ§Œ 기둝, κ°’ μ ˆλŒ€ 기둝 κΈˆμ§€)
ANTHROPIC_API_KEY
FMP_API_KEY
NEXT_PUBLIC_SUPABASE_URL
SUPABASE_SERVICE_ROLE_KEY

## ν˜„μž¬ μ§„ν–‰ 상황
### Phase 1 (λ―Έκ΅­μ£Ό MVP)
- [ ] ν”„λ‘œμ νŠΈ scaffold
- [ ] FMP API wrapper + 캐싱
- [ ] ν…Œλ§ˆ 탐색 ν”„λ‘¬ν”„νŠΈ v1
- [ ] Tenbagger Score μ•Œκ³ λ¦¬μ¦˜ v1
- [ ] Bull/Bear/Verdict UI

### Phase 2 (데이터 싀연동)
- [ ] Supabase 캐싱 λ°±μ—”λ“œ 싀연동
- [ ] FMP/Claude 싀데이터 검증
- [ ] Watchlist DB μŠ€ν‚€λ§ˆ

## 졜근 κ²°μ • 사항
(μž‘μ—…ν•˜λ©΄μ„œ μ—…λ°μ΄νŠΈ)

## μ•Œλ €μ§„ 이슈
(μž‘μ—…ν•˜λ©΄μ„œ μ—…λ°μ΄νŠΈ)

4. MCP μ„œλ²„ μ„€μ •

.claude/mcp.json

{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase@latest",
        "--supabase-url", "${SUPABASE_URL}",
        "--supabase-service-role-key", "${SUPABASE_SERVICE_ROLE_KEY}"
      ]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

MCP둜 ν•  수 μžˆλŠ” 것듀

Supabase MCP

# Claude Codeμ—κ²Œ 직접 λ§ν•˜κΈ°
"μΊμ‹œ ν…Œμ΄λΈ”μ— stock_analyses μΆ”κ°€ν•΄μ€˜.
 ticker, market, theme, score, bull_bear, created_at 컬럼으둜"

"였늘 μΊμ‹œ 히트율 μ‘°νšŒν•΄μ€˜"

"watchlist ν…Œμ΄λΈ” μŠ€ν‚€λ§ˆ ν™•μΈν•΄μ€˜"

GitHub MCP

"μ§€κΈˆκΉŒμ§€ μž‘μ—…ν•œ λ‚΄μš© PR둜 λ§Œλ“€μ–΄μ€˜.
 feat/phase1-us-stocks 브랜치둜"

"졜근 컀밋 νžˆμŠ€ν† λ¦¬ λ³΄μ—¬μ€˜"

5. μ»€μŠ€ν…€ μŠ¬λž˜μ‹œ μ»€λ§¨λ“œ

/new-feature

# .claude/commands/new-feature.md
μƒˆ κΈ°λŠ₯을 μΆ”κ°€ν•  λ•Œ λ‹€μŒ μˆœμ„œλ‘œ μ§„ν–‰ν•΄:

1. CLAUDE.md 읽고 ν˜„μž¬ μƒνƒœ νŒŒμ•…
2. lib/types/stock.ts 에 ν•„μš”ν•œ νƒ€μž… λ¨Όμ € μ •μ˜
3. API route μž‘μ„± (app/api/ μ•„λž˜, μ—λŸ¬ 핸듀링 ν•„μˆ˜)
4. λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ lib/ai/ λ˜λŠ” lib/data/ 에 뢄리
5. μ»΄ν¬λ„ŒνŠΈ μž‘μ„± (components/ μ•„λž˜)
6. 개발 μ€‘μ—λŠ” lib/data/mock/ mock data μ‚¬μš©
7. CLAUDE.md μ§„ν–‰ 상황 μ—…λ°μ΄νŠΈ

/debug

# .claude/commands/debug.md
버그λ₯Ό 디버깅할 λ•Œ:

1. μ—λŸ¬ λ©”μ‹œμ§€μ™€ μŠ€νƒ 트레이슀 뢄석
2. κ΄€λ ¨ 파일 탐색 (grep / read)
3. κ°€μ„€ 3개 μ„Έμš°κ³  κ°€μž₯ κ°€λŠ₯μ„± 높은 것뢀터 검증
4. μˆ˜μ • ν›„ μ—£μ§€μΌ€μ΄μŠ€ 확인
5. 재발 λ°©μ§€λ₯Ό μœ„ν•œ μ½”λ©˜νŠΈ λ˜λŠ” νƒ€μž… κ°•ν™” μ œμ•ˆ

/prompt-iteration

# .claude/commands/prompt-iteration.md
Claude API ν”„λ‘¬ν”„νŠΈλ₯Ό κ°œμ„ ν•  λ•Œ:

1. docs/prompts.md μ—μ„œ ν˜„μž¬ 버전 확인
2. 문제점 진단 (λ„ˆλ¬΄ generic / ꡬ쑰 뢈λͺ…ν™• / μ˜ˆμ‹œ μ—†μŒ λ“±)
3. κ°œμ„  버전 μž‘μ„± + λ³€κ²½ 이유 μ„€λͺ…
4. 이전 버전과 λ‚˜λž€νžˆ docs/prompts.md 에 기둝
5. A/B ν…ŒμŠ€νŠΈ 방법 μ œμ•ˆ

/phase-review

# .claude/commands/phase-review.md
Phase μ™„λ£Œ μ‹œ 리뷰:

1. CLAUDE.md 체크리슀트 μ™„λ£Œ ν•­λͺ© 확인
2. μ‹€μ œ λ™μž‘ 확인이 ν•„μš”ν•œ ν•­λͺ© λͺ©λ‘ν™”
3. λ‹€μŒ Phase μ§„μž… μ „ 정리해야 ν•  기술 뢀채
4. docs/architecture.md 에 이번 Phase κ²°μ • 사항 기둝
5. CLAUDE.md λ‹€μŒ Phase 체크리슀트 ν™œμ„±ν™”

6. μ„Έμ…˜λ³„ μž‘μ—… νŒ¨ν„΄

6.1 Phase ν‚₯μ˜€ν”„ μ„Έμ…˜

"Phase 1 μ‹œμž‘ν•˜μž.
 CLAUDE.md 읽고 ν˜„μž¬ μƒνƒœ νŒŒμ•…ν•΄μ€˜.
 였늘 λͺ©ν‘œ: FMP API wrapper + 캐싱 λ ˆμ΄μ–΄κΉŒμ§€.
 νƒ€μž… μ •μ˜λΆ€ν„° μ‹œμž‘ν•΄μ„œ μˆœμ„œλŒ€λ‘œ κ°€μž."

6.2 병렬 μž‘μ—… μš”μ²­ (Sub-agents)

"λ‹€μŒ μ„Έ κ°€μ§€λ₯Ό λ³‘λ ¬λ‘œ μ§„ν–‰ν•΄μ€˜:
 1. lib/data/adapters/us-stock.ts β€” FMP API wrapper
 2. lib/score/index.ts β€” Tenbagger Score μ•Œκ³ λ¦¬μ¦˜
 3. lib/types/stock.ts β€” FMP 응닡을 λ§€ν•‘ν•˜λŠ” 곡톡 νƒ€μž…

 각각 μ™„λ£Œλ˜λ©΄ λ¦¬ν¬νŠΈν•΄μ€˜."

6.3 ν”„λ‘¬ν”„νŠΈ μ΄ν„°λ ˆμ΄μ…˜ μ„Έμ…˜

"/prompt-iteration

 Bull/Bear 뢄석 κ²°κ³Όκ°€ λ„ˆλ¬΄ genericν•΄.
 예λ₯Ό λ“€μ–΄ NVDA λΆ„μ„ν–ˆμ„ λ•Œ κ²°κ³Ό λΆ™μ—¬μ€„κ²Œ:
 [κ²°κ³Ό λΆ™μ—¬λ„£κΈ°]

 뭐가 λ¬Έμ œμΈμ§€ μ§„λ‹¨ν•˜κ³  v2 λ§Œλ“€μ–΄μ€˜."

6.4 λ¦¬νŒ©ν† λ§ μ„Έμ…˜

"lib/ai/analyzer.ts 읽어봐.
 Tenbagger Score 계산 둜직이 λ„ˆλ¬΄ κΈΈμ–΄μ§„ 것 κ°™μ•„.
 μ–΄λ–»κ²Œ λΆ„λ¦¬ν•˜λ©΄ 쒋을지 μ œμ•ˆν•΄μ€˜.
 μ„±λŠ₯ 영ν–₯은 μ—†μ–΄μ•Ό ν•΄."

6.5 μ„Έμ…˜ 마무리

"였늘 μž‘μ—… λ§ˆλ¬΄λ¦¬ν•˜μž.
 1. λ³€κ²½λœ λ‚΄μš© conventional commits ν˜•μ‹μœΌλ‘œ μ»€λ°‹ν•΄μ€˜
 2. CLAUDE.md μ§„ν–‰ 상황 μ—…λ°μ΄νŠΈν•΄μ€˜
 3. λ‹€μŒ μ„Έμ…˜μ— μ΄μ–΄μ„œ ν•  것 CLAUDE.md 에 κΈ°λ‘ν•΄μ€˜"

7. ν”„λ‘¬ν”„νŠΈ 버전 관리

docs/prompts.md 에 λͺ¨λ“  Claude API ν”„λ‘¬ν”„νŠΈλ₯Ό 버전 κ΄€λ¦¬ν•œλ‹€.

ν˜•μ‹

# Prompts

## theme-search

### v1 (2026-05-31)
**λͺ©μ :** ν…Œλ§ˆ ν‚€μ›Œλ“œ β†’ κΈ°μ—… 후보 5~8개 λ„μΆœ
**μƒνƒœ:** ν˜„μž¬ μ‚¬μš© 쀑

[ν”„λ‘¬ν”„νŠΈ λ‚΄μš©]

---

### v0 (2026-05-28)
**λͺ©μ :** 동일
**μƒνƒœ:** deprecated β€” κ²°κ³Όκ°€ λ„ˆλ¬΄ generic함
**문제점:** κΈ°μ—… μ„ μ • μ΄μœ κ°€ μ—†μ—ˆμŒ

[ν”„λ‘¬ν”„νŠΈ λ‚΄μš©]

8. μ•„ν‚€ν…μ²˜ κ²°μ • 기둝 (ADR)

docs/architecture.md 에 μ€‘μš”ν•œ 기술 결정을 κΈ°λ‘ν•œλ‹€.
λ‚˜μ€‘μ— "μ™œ μ΄λ ‡κ²Œ ν–ˆμ§€?" λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•¨.

ν˜•μ‹

# Architecture Decision Records

## ADR-001: 데이터 μ†ŒμŠ€ 좔상화λ₯Ό μœ„ν•œ 곡톡 도메인 νƒ€μž…
**λ‚ μ§œ:** 2026-05-31
**μƒνƒœ:** 결정됨

**λ°°κ²½:** μ™ΈλΆ€ 데이터 μ†ŒμŠ€(FMP λ“±)의 응닡 ꡬ쑰가 μƒμœ„ λ ˆμ΄μ–΄μ— 직접 λ…ΈμΆœλ˜λ©΄ 결합도가 높아짐.
**κ²°μ •:** 곡톡 μΈν„°νŽ˜μ΄μŠ€(StockData νƒ€μž…)λ₯Ό μ •μ˜ν•˜κ³ ,
         μ†ŒμŠ€λ³„ Adapterκ°€ λ³€ν™˜ λ‹΄λ‹Ή.
**κ²°κ³Ό:** μƒμœ„ λ ˆμ΄μ–΄(AI 뢄석, UI)λŠ” μ†ŒμŠ€ ꡬ뢄 없이 동일 μΈν„°νŽ˜μ΄μŠ€ μ‚¬μš©.
**νŠΈλ ˆμ΄λ“œμ˜€ν”„:** Adapter κ΅¬ν˜„ 초기 λΉ„μš© μžˆμœΌλ‚˜ μž₯κΈ° μœ μ§€λ³΄μˆ˜ 유리.

9. λΉ„μš© 관리 원칙

Claude API

  • 개발 μ€‘μ—λŠ” lib/data/mock/ mock data μ‚¬μš©, μ‹€ API 호좜 μ΅œμ†Œν™”
  • 뢄석 κ²°κ³Ό Supabase에 캐싱 (TTL 6μ‹œκ°„)
  • 슀트리밍 응닡 μ‚¬μš© (UX + μ§€κ°λœ 속도 κ°œμ„ )
  • 배포 ν›„ μ›” λΉ„μš© λͺ¨λ‹ˆν„°λ§ (Anthropic Consoleμ—μ„œ 확인)

FMP API (무료 ν‹°μ–΄: 250 req/day)

  • μž¬λ¬΄μ œν‘œ 24μ‹œκ°„ 캐싱
  • μ£Όκ°€/μ‹œμ΄ 1μ‹œκ°„ 캐싱
  • 개발 쀑 λΆˆν•„μš”ν•œ 호좜 κΈˆμ§€

Supabase (무료 ν‹°μ–΄)

  • 500MB DB, 2GB bandwidth
  • 초과 μ‹œ 캐싱 TTL λŠ˜λ¦¬κ±°λ‚˜ 데이터 정리

10. Git μ „λž΅

브랜치 ꡬ쑰

main
└── dev
    β”œβ”€β”€ feat/phase1-us-stocks
    β”œβ”€β”€ feat/phase2-kr-stocks
    β”œβ”€β”€ feat/score-algorithm
    └── fix/dart-parser

컀밋 μ»¨λ²€μ…˜ (Claude Codeμ—κ²Œ λ§‘κΈ°κΈ°)

feat: μƒˆ κΈ°λŠ₯
fix: 버그 μˆ˜μ •
refactor: λ¦¬νŒ©ν† λ§
docs: λ¬Έμ„œ μ—…λ°μ΄νŠΈ (CLAUDE.md, ADR λ“±)
chore: μ„€μ •, νŒ¨ν‚€μ§€ λ“±
prompt: Claude API ν”„λ‘¬ν”„νŠΈ λ³€κ²½
# μ„Έμ…˜ 마무리 λ•Œ Claude Codeμ—κ²Œ
"μ§€κΈˆκΉŒμ§€ 변경사항 conventional commits ν˜•μ‹μœΌλ‘œ μ»€λ°‹ν•΄μ€˜.
 feat/phase1-us-stocks λΈŒλžœμΉ˜μ—."

11. 개발 μ‹œμž‘ 체크리슀트

ν™˜κ²½ μ„ΈνŒ… (졜초 1회)

# 1. Claude Code μ„€μΉ˜
npm install -g @anthropic-ai/claude-code

# 2. ν”„λ‘œμ νŠΈ 생성
npx create-next-app@latest tenbagger-hunter --typescript --tailwind --app

# 3. μ˜μ‘΄μ„± μ„€μΉ˜
npm install @anthropic-ai/sdk @supabase/supabase-js recharts
npx shadcn@latest init

# 4. ν™˜κ²½λ³€μˆ˜ μ„€μ •
cp .env.example .env.local
# ANTHROPIC_API_KEY, FMP_API_KEY, SUPABASE_* μž…λ ₯

# 5. Claude Code μ‹€ν–‰
cd tenbagger-hunter
claude

λ§€ μ„Έμ…˜ μ‹œμž‘ μ‹œ

1. claude μ‹€ν–‰
2. "CLAUDE.md 읽고 ν˜„μž¬ μƒνƒœ νŒŒμ•…ν•΄μ€˜. 였늘 [λͺ©ν‘œ] μ§„ν–‰ν•˜μž."
3. μž‘μ—… μ‹œμž‘

λ§€ μ„Έμ…˜ μ’…λ£Œ μ‹œ

1. "였늘 μž‘μ—… μ»€λ°‹ν•΄μ€˜ (conventional commits)"
2. "CLAUDE.md μ—…λ°μ΄νŠΈν•΄μ€˜"
3. "λ‹€μŒ μ„Έμ…˜ μ‹œμž‘ν•  λ•Œ μ΄μ–΄μ„œ ν•  것 κΈ°λ‘ν•΄μ€˜"