Install any skill in seconds. Free to start, no credit card required.
Get Started Free →中国A股/港股/美股统一数据抽象层。屏蔽 akshare/efinance/adata/pysnowball/ashare 五个数据源的 API 差异,提供统一代码格式(SH600519)、统一字段名(英文 snake_case)、智能路由和自动 Fallback。当用户需要获取股票行情、实时报价、资金流向、财务指标、北向资金等金融数据时使用此 skill。
.claude/skills/aifinlab-cn-stock-data/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | -24% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -37% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -7% | 0% |
SH600519 / SZ000001 / HK00700 / AAPL.O,也接受纯数字 600519(自动推断市场)| 类型 | 命令 | 路由链 | |------|------|--------| | K线 | kline | efinance → akshare → adata → ashare → snowball | | 实时行情 | quote | efinance → adata → snowball | | 资金流向 | fund_flow | efinance → adata → snowball | | 财务指标 | finance | adata(43字段) → akshare → snowball | | 北向资金 | north_flow | adata(独占) | | 跨市场 | 自动 | snowball(独占) |
bashSCRIPTS_DIR="$SKILLS_ROOT/cn-stock-data/scripts" # K线(日/周/月/分钟) python "$SCRIPTS_DIR/cn_stock_data.py" kline --code SH600519 --freq daily --start 2026-01-01 # 实时行情(支持多只,逗号分隔) python "$SCRIPTS_DIR/cn_stock_data.py" quote --code SH600519,SZ000001 # 跨市场行情(自动路由到 snowball) python "$SCRIPTS_DIR/cn_stock_data.py" quote --code HK00700,AAPL.O # 资金流向 python "$SCRIPTS_DIR/cn_stock_data.py" fund_flow --code SZ000001 # 财务指标 python "$SCRIPTS_DIR/cn_stock_data.py" finance --code SH600519 # 北向资金 python "$SCRIPTS_DIR/cn_stock_data.py" north_flow # 强制指定数据源 python "$SCRIPTS_DIR/cn_stock_data.py" kline --code SH600519 --source akshare # 检查各源可用状态 python "$SCRIPTS_DIR/cn_stock_data.py" status
json{ "ok": true, "source": "efinance", "fallback_used": false, "code": "SH600519", "data_type": "kline", "count": 30, "data": [ {"date": "2026-03-14", "open": 1880.0, "close": 1895.5, "high": 1900.0, "low": 1875.0, "volume": 25000, "amount": 47000000, "pct_change": 0.82} ] }
--freq: daily, weekly, monthly, 1min, 5min, 15min, 30min, 60min
| 输入 | 解析结果 | |------|---------| | SH600519 | 上交所贵州茅台 | | SZ000001 | 深交所平安银行 | | 600519 | 自动推断→SH600519 | | 000001 | 自动推断→SZ000001 | | HK00700 | 港股腾讯 | | AAPL.O | 美股苹果 |
pythonimport sys; sys.path.insert(0, "$SKILLS_ROOT/cn-stock-data/scripts") from routing import execute_with_fallback, get_available_sources # K线 result = execute_with_fallback("kline", "get_kline", code="SH600519", freq="daily", start="2026-01-01") if result["ok"]: for row in result["data"][:3]: print(row) # 行情 result = execute_with_fallback("quote", "get_quote", code="SH600519", codes=["SH600519", "SZ000001"]) # 状态检查 print(get_available_sources())
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-22 | fail→fail | 22,547 | 23,274 | +3% | 1 | 1 | 0% | 4,345 | 5,872 | +35% | 0 | 0 | — |
case-06 | fail→pass | 13,993 | 3,085 | -78% | 1 | 1 | 0% | 2,432 | 1,855 | -24% | 0 | 0 | — |
case-01 | fail→fail | 7,626 | 7,953 | +4% | 1 | 1 | 0% | 1,442 | 1,788 | +24% | 0 | 0 | — |
case-02 | fail→fail | 13,948 | 9,497 | -32% | 1 | 1 | 0% | 3,026 | 1,820 | -40% | 0 | 0 | — |
case-03 | fail→fail | 13,698 | 6,098 | -55% | 1 | 1 | 0% | 3,208 | 1,556 | -51% | 0 | 0 | — |
case-04 | fail→pass | 11,887 | 11,739 | -1% | 1 | 1 | 0% | 2,156 | 2,761 | +28% | 0 | 0 | — |
case-05 | fail→pass | 15,758 | 4,285 | -73% | 1 | 1 | 0% | 2,560 | 2,123 | -17% | 0 | 0 | — |
case-07 | fail→pass | 15,303 | 2,264 | -85% | 1 | 1 | 0% | 2,592 | 1,640 | -37% | 0 | 0 | — |
case-08 | fail→pass | 17,592 | 8,995 | -49% | 1 | 1 | 0% | 3,175 | 2,962 | -7% | 0 | 0 | — |
case-09 | pass→pass | 28,515 | 11,230 | -61% | 1 | 1 | 0% | 2,750 | 3,496 | +27% | 0 | 0 | — |
case-10 | fail→pass | 16,950 | 3,587 | -79% | 1 | 1 | 0% | 2,907 | 1,923 | -34% | 0 | 0 | — |
case-11 | fail→pass | 16,123 | 4,703 | -71% | 1 | 1 | 0% | 2,777 | 2,212 | -20% | 0 | 0 | — |
case-12 | pass→pass | 20,786 | 3,782 | -82% | 1 | 1 | 0% | 1,597 | 1,860 | +16% | 0 | 0 | — |
case-13 | fail→pass | 19,472 | 7,968 | -59% | 1 | 1 | 0% | 3,019 | 2,735 | -9% | 0 | 0 | — |
case-14 | fail→pass | 14,415 | 4,417 | -69% | 1 | 1 | 0% | 2,622 | 2,097 | -20% | 0 | 0 | — |
case-15 | fail→pass | 14,794 | 2,346 | -84% | 1 | 1 | 0% | 2,393 | 1,651 | -31% | 0 | 0 | — |
case-21 | pass→pass | 17,191 | 11,617 | -32% | 1 | 1 | 0% | 3,058 | 2,340 | -23% | 0 | 0 | — |
case-16 | fail→pass | 16,663 | 3,249 | -81% | 1 | 1 | 0% | 2,615 | 1,820 | -30% | 0 | 0 | — |
case-17 | fail→pass | 8,302 | 2,802 | -66% | 1 | 1 | 0% | 1,544 | 1,713 | +11% | 0 | 0 | — |
case-18 | fail→pass | 17,796 | 7,394 | -58% | 1 | 1 | 0% | 3,440 | 2,765 | -20% | 0 | 0 | — |
case-19 | fail→pass | 21,951 | 3,731 | -83% | 1 | 1 | 0% | 3,500 | 1,846 | -47% | 0 | 0 | — |
case-20 | fail→pass | 9,031 | 3,024 | -67% | 1 | 1 | 0% | 1,574 | 1,792 | +14% | 0 | 0 | — |
case-23 | fail→pass | 10,340 | 8,022 | -22% | 1 | 1 | 0% | 1,837 | 2,580 | +40% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +70 percentage points is the difference between those two pass rates over the 20 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.