# Exchange Rate Tracker

> 달러-원화(KRW) 및 달러-베트남동화(VND) 환율을 추적하고 그래프로 시각화하는 스킬. Use when (1) 환율 조회 요청, (2) 환율 그래프 생성, (3) 환율 변동 알림, (4) cron job으로 정기 환율 수집. 항상 한국어로 응답.

- Skill: `deuxksy/exchange-rate-tracker` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add deuxksy/exchange-rate-tracker`
- Raw SKILL.md: https://api.skillmd.com/api/skills/deuxksy/exchange-rate-tracker/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: deuxksy (https://skillmd.com/u/deuxksy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/deuxksy/exchange-rate-tracker

---


# Exchange Rate Tracker

USD/KRW, USD/VND 환율을 추적하고 그래프로 시각화하는 스킬.

## 기능

### 1. 환율 수집
- **ExchangeRate API**를 통해 실시간 환율 조회
- **USD/KRW** (달러/원화)
- **USD/VND** (달러/베트남 동화)
- 하루 4번 자동 수집 (09:00, 12:00, 15:00, 18:00 GMT+7)
- 데이터를 JSON 파일로 저장

### 2. 그래프 생성
- Mermaid xychart 환율 변동 그래프
- 주간/월간 추이 그래프
- 스파크라인 (유니코드 블록)
- matplotlib PNG 일별/추세 그래프 (KRW/VND, 추세선 포함)

### 3. 알림
- 큰 변동 시 알림 (예: ±50원 이상)
- Slack/Telegram으로 전송

## 데이터 저장

`references/exchange-rates.json`에 저장:
```json
{
  "krw_rates": [
    {
      "date": "2026-03-06",
      "time": "09:00",
      "rate": 1485.50,
      "timestamp": 1772806800
    }
  ],
  "vnd_rates": [
    {
      "date": "2026-03-06",
      "time": "09:00",
      "rate": 25430,
      "timestamp": 1772806800
    }
  ]
}
```

## 스케줄

- **09:00 GMT+7** (UTC 02:00)
- **12:00 GMT+7** (UTC 05:00)
- **15:00 GMT+7** (UTC 08:00)
- **18:00 GMT+7** (UTC 11:00)

## Pitfalls

- **`requests` 모듈 미설치 — `uv run` 필수**: 시스템 python3에는 `requests`가 없음. `fetch_rate.py`와 `plot_graph.py` 실행 시 **반드시 `uv run python scripts/fetch_rate.py`** 형태로 실행할 것. 그냥 `python3`로 실행하면 `ModuleNotFoundError: No module named 'requests'` 발생함. 크론 프롬프트에서도 이 점을 명시할 것.
- **크론에서 데이터 미저장 문제**: LLM 기반 크론 잡이 `fetch_rate.py`를 실행하지 않고 API에서 직접 읽어서 보고만 하는 경우가 있음. 반드시 스크립트를 실행해서 JSON 파일에 데이터를 누적 저장해야 함. 크론 프롬프트에 `uv run python scripts/fetch_rate.py` 실행을 명시적으로 포함할 것.
- **Tirith curl_pipe_shell 차단**: `curl ... | python3 -c "..."` 패턴은 Tirith 보안 규칙에 의해 차단됨. 해결법: `curl ... -o /tmp/rates.json && python3 -c "..."`처럼 파일로 먼저 저장 후 처리.
- **cron에서 execute_code 차단**: 크론 잡(cron_mode)에서는 `execute_code` 사용 불가. `terminal`만 사용할 것.
- **첫 실행 시 데이터 없음**: `exchange-rates.json` 파일이 없으면 `fetch_rate.py`의 `load_data()`가 빈 구조를 반환함. 전일 대비 비교가 불가하므로, 첫 보고에는 "첫 수집"임을 명시.

## Resources

### scripts/
- `fetch_rate.py` - 환율 수집 스크립트
- `plot_graph.py` - 그래프 생성 스크립트 (Mermaid xychart + matplotlib PNG)

### references/
- `api-info.md` - 하나은행 API 정보
- `exchange-rates.json` - 환율 데이터 저장 (자동 생성됨)

