analyst-common-stock

주식/ETF 분석 에이전트 공통 규칙. 웹검색 직접 호출, 원문 인용, 교차 검증 프로토콜을 정의합니다. 환각 방지의 핵심 방어선.

18 stars

Best use case

analyst-common-stock is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

주식/ETF 분석 에이전트 공통 규칙. 웹검색 직접 호출, 원문 인용, 교차 검증 프로토콜을 정의합니다. 환각 방지의 핵심 방어선.

Teams using analyst-common-stock should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/analyst-common-stock/SKILL.md --create-dirs "https://raw.githubusercontent.com/orientpine/honeypot/main/plugins/stock-consultation/skills/analyst-common-stock/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/analyst-common-stock/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How analyst-common-stock Compares

Feature / Agentanalyst-common-stockStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

주식/ETF 분석 에이전트 공통 규칙. 웹검색 직접 호출, 원문 인용, 교차 검증 프로토콜을 정의합니다. 환각 방지의 핵심 방어선.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 주식/ETF 분석 에이전트 공통 규칙

## Overview

이 스킬은 모든 주식/ETF 분석 에이전트(stock-screener, stock-valuation, bear-case-critic)가 공통으로 따라야 하는 규칙을 정의합니다.

**핵심 목표**: 환각(Hallucination) 방지

---

## 1. 웹검색 도구 직접 호출 필수

> **CRITICAL**: 스킬은 "지침 문서"이지 "함수"가 아닙니다.
> 에이전트가 웹검색 도구를 **직접 호출**해야 합니다.

### 올바른 사용법

```
1. stock-data-verifier 스킬에서 검색 쿼리 패턴 확인
2. exa_web_search_exa 또는 websearch_web_search_exa 직접 호출
   - 예: exa_web_search_exa(query="삼성전자 PER PBR site:finance.naver.com")
   - 예: websearch_web_search_exa(query="AAPL P/E ratio site:yahoo.com")
3. 검색 결과에서 숫자가 포함된 원문을 그대로 복사
4. 최소 2개 출처에서 값 확인 및 교차 검증
5. 출처 간 ±5% 이내 일치 시 사용, 불일치 시 FAIL
```

### 필수 사항 (MUST)

- `exa_web_search_exa` 또는 `websearch_web_search_exa` **직접 호출**
- **원문 인용 필수** - 숫자가 포함된 검색 결과 문장을 그대로 복사
- 최소 2개 이상 독립 출처에서 교차 검증
- 검색 결과의 URL과 날짜 명시
- 출처 간 값이 일치하는지 확인 (±5% 이내)

### 금지 사항 (NEVER)

| 금지 | 이유 |
|------|------|
| `search_stock()`, `search_metric()` 같은 함수 호출 | 존재하지 않는 가짜 함수 |
| 스킬 문서의 예시 데이터 그대로 사용 | 하드코딩된 오래된 값 |
| 웹검색 없이 데이터 사용 | 검증 불가능한 환각 |
| 기억이나 추정에 의한 값 작성 | LLM 학습 데이터는 outdated |
| **원문 없이 숫자만 보고** | 환각 위험 극대화 |

---

## 2. 원문 인용 규칙 (CRITICAL)

> **환각 방지의 핵심**: 검색 결과에서 숫자를 추출할 때 반드시 **원문을 그대로 인용**해야 합니다.

### 숫자 추출 방법

```
1. 웹검색 결과에서 숫자가 포함된 문장 찾기
2. 해당 문장을 **그대로 복사** (original_text 필드에)
3. 원문에서 숫자 추출하여 value 필드에 기록
4. value와 original_text 내 숫자가 일치하는지 확인
```

### 출력 형식 (필수)

모든 수치 데이터는 다음 형식으로 보고해야 합니다:

```json
{
  "value": 12.5,
  "original_text": "삼성전자 PER 12.5배 (2026.01.14 기준)",
  "source": "네이버 금융",
  "url": "https://finance.naver.com/item/main.naver?code=005930"
}
```

### 검증 규칙

| 규칙 | 설명 | 위반 시 |
|:-----|:-----|:--------|
| **원문 필수** | `original_text` 필드 없으면 무효 | FAIL |
| **숫자 일치** | `value`가 `original_text` 내 숫자와 일치해야 함 | FAIL |
| **복사 금지** | 이전 결과나 예시 값을 복사하면 안 됨 | FAIL |

### 예시

**올바른 예시**:
```json
{
  "metric": "PER",
  "value": 12.5,
  "original_text": "삼성전자의 PER은 12.5배로 업종 평균 대비 저평가 구간에 있습니다.",
  "source_url": "https://finance.naver.com/item/main.naver?code=005930"
}
```

**잘못된 예시 (환각)**:
```json
{
  "metric": "PER",
  "value": 15.0,
  "original_text": null,
  "source_url": "https://finance.naver.com/item/main.naver?code=005930"
}
```
-> 원문 없이 숫자만 보고하면 검증 불가능 = 환각

---

## 3. 교차 검증 프로토콜

### 검증 요구사항

| 항목 | 기준 |
|------|------|
| 최소 출처 수 | 2개 이상 |
| 값 일치 허용 범위 | ±5% |
| 1차 출처 | 공식 출처(네이버 금융, Yahoo Finance, 운용사 등) 1개 이상 권장 |
| 날짜 일치 | 동일 거래일 데이터 |

### 검증 절차

```
Step 1: 첫 번째 출처에서 값 수집
        └─ exa_web_search_exa(query="...")
        
Step 2: 두 번째 출처에서 값 수집
        └─ exa_web_search_exa(query="... site:다른출처")
        
Step 3: 값 비교
        └─ 차이 = |값1 - 값2| / 평균값 * 100
        
Step 4: 판정
        └─ 차이 ≤ 5%: 검증 성공 (verified: true)
        └─ 차이 > 5%: 검증 실패, 추가 출처 검색 또는 FAIL
```

### 검증 실패 시 처리

검증 실패 시 **절대 임의 수치를 생성하지 않습니다**:

```json
{
  "status": "FAIL",
  "failed_items": ["PER"],
  "reason": "교차 검증 실패 - 출처 간 값 불일치",
  "detail": {
    "source1": {"name": "네이버 금융", "value": 12.5},
    "source2": {"name": "Yahoo Finance", "value": 14.8},
    "variance": "18.4%"
  }
}
```

---

## 4. 검증 체크리스트 (MANDATORY)

모든 분석 에이전트는 결과 제출 전 아래 체크리스트를 확인해야 합니다.

### 웹검색 직접 호출 확인
- [ ] `exa_web_search_exa` 또는 `websearch_web_search_exa`를 **직접 호출**했는가?
- [ ] `search_stock()`, `search_metric()` 같은 가짜 함수를 호출하지 않았는가?
- [ ] 스킬 예시 데이터를 그대로 사용하지 않았는가?

### 원문 인용 확인
- [ ] 모든 수치에 `original_text` 필드가 있는가?
- [ ] `value`가 `original_text` 내 숫자와 일치하는가?
- [ ] 이전 결과나 예시 값을 복사하지 않았는가?

### 교차 검증 확인
- [ ] 모든 수치에 최소 2개 출처가 있는가?
- [ ] 출처 간 값이 ±5% 이내로 일치하는가?
- [ ] 모든 값에 출처 URL이 포함되어 있는가?

### 실패 처리 확인
- [ ] 교차 검증 실패 시 FAIL 목록에 추가했는가?
- [ ] 추정값을 생성하지 않았는가?

---

## 5. 허용 출처 (Allowlist)

### Tier 1: 공식 출처 (1개 이상 권장)

#### 한국 주식/ETF

| 데이터 | 출처 | URL |
|:-------|:-----|:----|
| 주식 시세/지표 | 네이버 금융 | finance.naver.com |
| 주식 시세 | KRX | data.krx.co.kr, kind.krx.co.kr |
| 공시 정보 | DART | dart.fss.or.kr |
| ETF 정보 | 삼성자산운용 | samsungfund.com |
| ETF 정보 | 미래에셋자산운용 | miraeassetfund.co.kr |

#### 미국 주식/ETF

| 데이터 | 출처 | URL |
|:-------|:-----|:----|
| 주식 시세/지표 | Yahoo Finance | finance.yahoo.com |
| 주식 시세 | Bloomberg | bloomberg.com |
| 주식 분석 | MarketWatch | marketwatch.com |
| ETF 정보 | ETF.com | etf.com |
| ETF 정보 | BlackRock (iShares) | ishares.com |
| ETF 정보 | Vanguard | vanguard.com |

### Tier 2: 교차검증 출처

| 출처 | URL | 커버리지 |
|:-----|:----|:---------|
| Seeking Alpha | seekingalpha.com | 미국 주식 분석 |
| Morningstar | morningstar.com | 펀드/ETF 분석 |
| 삼성증권 | securities.samsung.com | 한국 주식 |
| 미래에셋증권 | securities.miraeasset.com | 한국 주식 |

### Tier 3: 보조 출처

| 출처 | URL | 용도 |
|:-----|:----|:-----|
| 한국경제 | hankyung.com | 한국 주식 뉴스 |
| 매일경제 | mk.co.kr | 한국 주식 뉴스 |
| Reuters | reuters.com | 글로벌 주식 뉴스 |
| Financial Times | ft.com | 글로벌 금융 분석 |

### Blocklist (금지)

- 개인 블로그
- 위키피디아 (실시간 데이터용)
- 커뮤니티 사이트 (네이버 카페, 디시인사이드, Reddit 등)
- YouTube
- 신뢰도 미검증 사이트

---

## 메타 정보

```yaml
version: "1.0"
created: "2026-01-20"
purpose: "주식/ETF 분석 에이전트 공통 규칙 통합 - 코드 중복 제거"
based_on: "investments-portfolio/skills/analyst-common (±1% → ±5% 조정)"
consumers:
  - stock-screener
  - stock-valuation
  - bear-case-critic
extracted_from:
  - "웹검색 도구 직접 호출 필수 섹션"
  - "원문 인용 규칙 섹션"
  - "교차 검증 프로토콜"
  - "Verification Checklist"
dependencies:
  - exa_web_search_exa
  - websearch_web_search_exa
  - WebFetch
key_difference:
  - "investments-portfolio: ±1% 교차검증 (거시경제 지표용)"
  - "stock-consultation: ±5% 교차검증 (주식 데이터는 변동성 높음)"
```

Related Skills

stock-data-verifier

18
from orientpine/honeypot

주식/ETF 데이터 3개 출처 교차검증 프로토콜. 환각 방지 첫 번째 방어선.

file-save-protocol-stock

18
from orientpine/honeypot

주식/ETF 분석 결과 파일 저장 프로토콜. Write 도구 사용 규칙, 저장 경로 컨벤션, 실패 시 응답 형식을 정의합니다.

wiki-gen

18
from orientpine/honeypot

>

theme-whatif

18
from orientpine/honeypot

visual-generator whatif 목적 테마(미래 비전 스냅샷). theme=whatif 또는 purpose=whatif일 때 사용. 단일 팔레트 + Future Snapshot/Hero Statement 레이아웃 가이드 + 장면 구성 5요소 + 몰입 기법 포함.

theme-seminar

18
from orientpine/honeypot

visual-generator seminar 테마(세미나/발표 자료) 무드 팔레트. theme=seminar일 때 사용. 9종 무드(technical-report, clarity, tech-focus, growth, connection, innovation, knowledge, presentation, workshop) 각각 4색 팔레트 제공.

theme-pitch

18
from orientpine/honeypot

visual-generator pitch 목적 테마(피치덱). theme=pitch 또는 purpose=pitch일 때 사용. Apple 다크 그래디언트 팔레트 + Z-Pattern/Single-Hero 레이아웃 가이드 + 피치덱 슬라이드 시퀀스 포함.

theme-gov

18
from orientpine/honeypot

visual-generator gov 테마(정부/공공기관 PPT 슬라이드) 무드 팔레트. theme=gov일 때 사용. 9종 무드(technical-report, growth, clarity, connection, innovation, tech-focus, knowledge, presentation, workshop) 각각 4색 팔레트 제공.

theme-concept

18
from orientpine/honeypot

visual-generator concept 테마(Kurzgesagt 풍 시각 스토리텔링) 무드 팔레트. theme=concept일 때 사용. 텍스트 없이 장면으로 개념을 설명하는 교육용 일러스트레이션. 9종 무드 각각 4색 팔레트 제공.

theme-comparison

18
from orientpine/honeypot

visual-generator comparison 목적 테마(Before/After 비교). theme=comparison 또는 purpose=comparison일 때 사용. 단일 팔레트 + 대비 메타포(Contrast) 레이아웃 가이드 + 비교 항목 작성법 포함.

slide-renderer

18
from orientpine/honeypot

Gemini와 OpenAI gpt-image-2를 사용한 슬라이드 이미지 렌더링 스킬. renderer-agent / renderer-agent-openai가 프롬프트 파일을 이미지로 변환할 때 사용. generate_slide_images.py / generate_slide_images_openai.py 실행 가이드, 환경 요구사항, 출력 해석, 에러 처리 방법을 포함합니다.

layout-types

18
from orientpine/honeypot

visual-generator 스킬이 공유하는 24종 레이아웃 정의. 각 레이아웃의 핵심 아이디어, ASCII 시각 구성, 시각화 원칙, 권장 사양, 적합/부적합 케이스를 포함합니다.

four-step-pattern

18
from orientpine/honeypot

Four-step sentence pattern for national research reports. Defines mandatory writing structure: task declaration, problem definition, solution approach, and technical details.