Enforces 3+ source cross-verification protocol for web searches on macroeconomic data like indices, rates, and FX rates, requiring original text citations to prevent AI hallucinations.
npx claudepluginhub orientpine/honeypot --plugin investments-portfolioThis skill uses the workspace's default tool permissions.
> **이 스킬은 "함수"가 아닙니다. 지침 문서입니다.**
Defines anti-hallucination rules for analysis agents: mandates direct web search tool calls, original text citations, and cross-verification from 3+ sources within ±1%.
Mandates cross-verification of stock/ETF data from 2+ sources via web search tools, requiring original text quotes and URLs to prevent AI hallucinations. Focuses on Korean stocks using Naver Finance and KRX.
Queries LSEG (Refinitiv) financial data via Python library for market prices, fundamentals, ESG scores, activism, loans, PE/VC, M&A, IPOs, news, and corporate governance.
Share bugs, ideas, or general feedback.
이 스킬은 "함수"가 아닙니다. 지침 문서입니다.
- ❌
search_rate("fed_funds")같은 함수 호출은 작동하지 않습니다- ✅ 에이전트가
mcp_websearch_web_search_exa도구를 직접 호출해야 합니다- ✅ 이 스킬은 검색 쿼리 패턴과 검증 절차를 안내하는 문서입니다
1. 이 스킬 문서를 읽고 검색 쿼리 패턴 파악
2. mcp_websearch_web_search_exa 도구를 직접 호출
3. 검색 결과에서 데이터 추출
4. 3개 출처 교차 검증 수행
5. 출력 스키마에 맞춰 결과 포장
❌ "search_rate() 호출" (존재하지 않는 함수)
❌ "스킬이 알아서 검색해줌" (스킬은 문서일 뿐)
❌ 예시 데이터의 숫자를 그대로 사용 (하드코딩된 오래된 값)
이 스킬은 거시경제 데이터(지수, 금리, 환율) 수집 시 환각을 방지하기 위한 표준 프로토콜입니다. 모든 수치 데이터는 에이전트가 직접 웹검색 도구를 호출하여 3개 이상의 독립 출처에서 교차 검증 후에만 사용 가능합니다.
환각 방지의 핵심: 검색 결과에서 숫자를 추출할 때 반드시 원문을 그대로 인용해야 합니다. 원문과 보고 값이 일치하지 않으면 FAIL입니다.
1. 웹검색 실행
2. 검색 결과에서 숫자가 포함된 문장을 **그대로 복사**
3. 원문에서 숫자 추출
4. 추출한 숫자와 원문을 함께 보고
모든 수치 데이터는 다음 형식으로 보고해야 합니다:
{
"value": 6936,
"original_text": "The US500 fell to 6936 points on January 12, 2026",
"source": "Trading Economics",
"url": "https://tradingeconomics.com/united-states/stock-market"
}
| 규칙 | 설명 | 위반 시 |
|---|---|---|
| 원문 필수 | original_text 필드 없으면 무효 | FAIL |
| 숫자 일치 | value가 original_text 내 숫자와 일치해야 함 | FAIL |
| 복사 금지 | 이전 결과나 예시 값을 복사하면 안 됨 | FAIL |
✅ 올바른 예시:
{
"index": "S&P 500",
"value": 6936,
"original_text": "The main stock market index of United States, the US500, fell to 6936 points on January 12, 2026",
"source_url": "https://tradingeconomics.com/united-states/stock-market"
}
❌ 잘못된 예시 (환각 위험):
{
"index": "S&P 500",
"value": 5906,
"original_text": null,
"source_url": "https://tradingeconomics.com/united-states/stock-market"
}
→ 원문 없이 숫자만 보고하면 검증 불가능
데이터 유형: 지수 (Index)
⚠️ 아래는 검색 패턴 가이드입니다.
search_index()라는 함수는 존재하지 않습니다. 반드시mcp_websearch_web_search_exa를 직접 호출하세요.
지원 지수:
검색 쿼리 패턴 (3개 병렬 실행):
| # | 패턴 | 대상 출처 |
|---|---|---|
| 1 | "[index] price today site:investing.com OR site:bloomberg.com" | 글로벌 금융 |
| 2 | "[지수] 종가 site:tradingeconomics.com" | 금융 데이터 |
| 3 | "[index] quote site:finance.yahoo.com OR site:marketwatch.com" | 시세 사이트 |
검증 절차:
출력 스키마 (v2.0 업데이트):
{
"index": "S&P 500",
"value": "[SEARCH_RESULT - 웹검색 결과로 대체]",
"unit": "pt",
"date": "[SEARCH_DATE - 검색 시점 날짜]",
"verified": true,
"variance": "[CALCULATED - 출처 간 편차 계산]",
"original_text": "[REQUIRED - 숫자를 포함한 검색 결과 원문]",
"sources": [
{
"name": "Trading Economics",
"url": "[ACTUAL_URL]",
"value": "[ACTUAL_VALUE]",
"original_text": "[EXACT_QUOTE - 이 출처에서 숫자가 포함된 문장]",
"tier": 2
},
{
"name": "Bloomberg",
"url": "[ACTUAL_URL]",
"value": "[ACTUAL_VALUE]",
"original_text": "[EXACT_QUOTE]",
"tier": 1
}
]
}
⚠️ CRITICAL (v2.0):
1. `original_text` 필드는 **필수**입니다. 없으면 FAIL.
2. `value`는 반드시 `original_text` 내의 숫자와 일치해야 합니다.
3. 예시 값을 그대로 사용하지 마세요.
데이터 유형: 금리 (Interest Rate)
⚠️ 아래는 검색 패턴 가이드입니다.
search_rate()라는 함수는 존재하지 않습니다. 반드시mcp_websearch_web_search_exa를 직접 호출하세요.
지원 금리:
검색 쿼리 패턴:
| 금리 | 1차 출처 쿼리 | 2차 출처 쿼리 |
|---|---|---|
| Fed | "federal funds rate site:federalreserve.gov" | "fed rate site:tradingeconomics.com" |
| BOK | "기준금리 site:bok.or.kr" | "korea rate site:tradingeconomics.com" |
검증 절차:
출력 스키마 (v2.0 업데이트):
{
"rate_type": "fed_funds",
"value": "[SEARCH_RESULT - 웹검색으로 확인한 실제 금리]",
"decision_date": "[SEARCH_RESULT - 최근 FOMC/금통위 결정일]",
"next_meeting": "[SEARCH_RESULT - 다음 회의 예정일]",
"verified": true,
"original_text": "[REQUIRED - 금리 수치가 포함된 검색 결과 원문]",
"sources": [
{
"name": "Federal Reserve",
"url": "[ACTUAL_URL]",
"value": "[ACTUAL_VALUE]",
"original_text": "[EXACT_QUOTE - 공식 출처의 금리 언급 원문]",
"official": true
},
{
"name": "Trading Economics",
"url": "[ACTUAL_URL]",
"value": "[ACTUAL_VALUE]",
"original_text": "[EXACT_QUOTE]",
"official": false
}
]
}
⚠️ CRITICAL (v2.0):
1. `original_text` 필드는 **필수**입니다. 없으면 FAIL.
2. `value`는 반드시 `original_text` 내의 숫자와 일치해야 합니다.
3. 금리의 경우 "3.50-3.75%" 형식으로 범위 표기 가능.
4. 예시 값을 그대로 사용하면 환각(hallucination)이 발생합니다.
| 데이터 | 출처 | URL |
|---|---|---|
| 미국 주식/경제 | FRED | fred.stlouisfed.org |
| 미국 금리 | Federal Reserve | federalreserve.gov |
| 한국 주식 | 한국거래소 | krx.co.kr |
| 한국 금리 | 한국은행 | bok.or.kr |
| 글로벌 | Bloomberg | bloomberg.com |
| 출처 | URL | 커버리지 |
|---|---|---|
| Trading Economics | tradingeconomics.com | 글로벌 |
| Investing.com | investing.com | 글로벌 |
| Yahoo Finance | finance.yahoo.com | 글로벌 |
| MarketWatch | marketwatch.com | 미국 중심 |
| 출처 | URL | 용도 |
|---|---|---|
| 한국경제 | hankyung.com | 한국 시장 |
| 연합뉴스 | yna.co.kr | 한국 경제 |
| Reuters | reuters.com | 글로벌 뉴스 |
| FT | ft.com | 글로벌 금융 |
| 실패 유형 | 코드 | 대응 |
|---|---|---|
| 출처 부족 | INSUFFICIENT_SOURCES | 추가 검색 시도 (최대 3회) |
| 값 불일치 | VALUE_MISMATCH | 범위로 표현 또는 1차 출처 우선 |
| 날짜 불일치 | DATE_MISMATCH | 가장 최신 날짜 출처 우선 |
| 1차 출처 없음 | NO_PRIMARY_SOURCE | 경고 + 2차 출처로 진행 |
| 전체 실패 | COMPLETE_FAILURE | FAIL 반환, 수동 확인 요청 |
{
"index": "KOSPI",
"value": null,
"verified": false,
"error": {
"code": "VALUE_MISMATCH",
"reason": "출처 간 5.2% 차이 (허용: ±1%)",
"details": {
"source1": {"name": "A", "value": 4500},
"source2": {"name": "B", "value": 4735}
}
},
"recommendation": "수동 확인 필요"
}
# index-fetcher 에이전트
## 데이터 수집
1. web-search-verifier 스킬 로드 확인 (검색 패턴 가이드로 참조)
2. S&P 500 수집:
- mcp_websearch_web_search_exa(query="S&P 500 price today") **직접 호출**
- 검색 결과에서 original_text 추출
- verified: true 확인
3. KOSPI 수집:
- mcp_websearch_web_search_exa(query="KOSPI 지수 현재") **직접 호출**
- 검색 결과에서 original_text 추출
- verified: true 확인
## 검증 실패 시
verified: false인 경우:
- 해당 지수는 "데이터 수집 실패" 명시
- 추정값 생성 금지
- 에러 코드 전달
version: "2.1"
created: "2026-01-12"
updated: "2026-01-12"
author: "Claude"
purpose: "환각 방지 웹검색 표준화"
dependencies:
- mcp_websearch_web_search_exa
- mcp_websearch_web_search_exa
- WebFetch
consumers:
- index-fetcher
- rate-analyst
- sector-analyst
- risk-analyst
- leadership-analyst
- macro-synthesizer
changes_v2.1:
- "범위 검증 (Sanity Check) 제거 - 대폭락 시 정상 데이터 reject 문제"
changes_v2.0:
- "원문 인용 필수화 (original_text 필드)"
- "S&P 500 첫자리 오류 환각 방지"