Install any skill in seconds. Free to start, no credit card required.
Get Started Free →A股股权结构/股东分析。当用户说"股权结构"、"股东"、"十大股东"、"十大流通股东"、"股东人数"、"筹码集中度"、"shareholder"、"XX的股东是谁"、"股东人数变化"、"解禁"、"限售"、"质押"时触发。分析企业股权结构(控股股东/实控人/机构持仓)、股东人数变化趋势(筹码集中度)、解禁压力、股权质押风险。支持研报风格(formal)和快速查看风格(brief)。
.claude/skills/aifinlab-a-share-shareholder-structure/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-02 | ✓→✗ | ▼ Worse | -60% | 0% |
bashSCRIPTS="$SKILLS_ROOT/cn-stock-data/scripts" # 十大股东(通过 efinance) python -c "import efinance as ef; df=ef.stock.get_top10_stock_holder_info(stock_code='600519'); print(df.to_json(orient='records', force_ascii=False))" # 十大流通股东(通过 efinance) python -c "import efinance as ef; df=ef.stock.get_top10_stock_holder_info(stock_code='600519'); print(df[df['股东类型']=='流通'].to_json(orient='records', force_ascii=False))" 2>/dev/null || echo "从十大股东中筛选流通股东" # 股东人数(通过 akshare) python -c "import akshare as ak; df=ak.stock_zh_a_gdhs(symbol='600519'); print(df.to_json(orient='records', force_ascii=False))" # 股权质押比例(通过 akshare,全市场数据) python -c "import akshare as ak; df=ak.stock_gpzy_pledge_ratio_em(); print(df[df['股票代码']=='600519'].to_json(orient='records', force_ascii=False))" # 个股行情 python "$SCRIPTS/cn_stock_data.py" quote --code [CODE] # K线(看股东变化前后走势) python "$SCRIPTS/cn_stock_data.py" kline --code [CODE] --freq daily --start [日期]
补充:通过 web 搜索获取解禁日历、实控人信息、一致行动人关系、限售股解禁明细等。
获取十大股东 + 十大流通股东 + 股东人数历史 + 质押比例 + 个股行情。多只股票时并行获取。
> 详见 references/shareholder-guide.md 中的股东类型解读和分析框架。
| 维度 | formal | brief | |------|--------|-------| | 输出格式 | 完整股权结构分析报告 | 快速要点 | | 股权结构 | 详细股东穿透图+持股比例表 | 仅列控股股东/实控人和关键机构 | | 筹码分析 | 股东人数趋势图+户均持股表 | 仅标注集中or分散趋势 | | 风险排查 | 质押/解禁/减持逐项详析 | 仅标注高风险项 | | 结论 | 客观陈述("控股股东持股X%,质押率X%") | 可加简要判断 |
默认风格:brief。用户要求"详细分析"/"出报告"时用 formal。
python# 调用 skill result = run_skill({ "param1": "value1", "param2": "value2" })
bashpython scripts/run_skill.py --input data.json
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | pass→pass | 10,449 | 13,518 | +29% | 1 | 1 | 0% | 1,648 | 2,928 | +78% | 0 | 0 | — |
case-01 | fail→fail | 22,571 | 13,287 | -41% | 1 | 1 | 0% | 3,193 | 2,025 | -37% | 0 | 0 | — |
case-02 | pass→fail | 35,977 | 10,212 | -72% | 1 | 1 | 0% | 4,902 | 1,947 | -60% | 0 | 0 | — |
case-03 | fail→fail | 10,400 | 11,776 | +13% | 1 | 1 | 0% | 1,637 | 1,729 | +6% | 0 | 0 | — |
case-04 | pass→pass | 17,825 | 21,876 | +23% | 1 | 1 | 0% | 2,781 | 4,152 | +49% | 0 | 0 | — |
case-05 | pass→pass | 15,907 | 14,110 | -11% | 1 | 1 | 0% | 1,987 | 3,206 | +61% | 0 | 0 | — |
case-06 | pass→pass | 15,407 | 15,116 | -2% | 1 | 1 | 0% | 2,225 | 3,386 | +52% | 0 | 0 | — |
case-20 | pass→fail | 21,300 | 9,706 | -54% | 1 | 1 | 0% | 3,790 | 1,877 | -50% | 0 | 0 | — |
case-21 | pass→fail | 18,663 | 12,507 | -33% | 1 | 1 | 0% | 2,584 | 1,650 | -36% | 0 | 0 | — |
case-08 | pass→pass | 9,773 | 10,255 | +5% | 1 | 1 | 0% | 1,537 | 2,611 | +70% | 0 | 0 | — |
case-09 | pass→pass | 45,134 | 20,105 | -55% | 1 | 1 | 0% | 3,445 | 3,715 | +8% | 0 | 0 | — |
case-10 | pass→pass | 17,407 | 9,052 | -48% | 1 | 1 | 0% | 2,068 | 2,253 | +9% | 0 | 0 | — |
case-11 | fail→pass | 13,975 | 16,869 | +21% | 1 | 1 | 0% | 2,081 | 3,026 | +45% | 0 | 0 | — |
case-12 | fail→pass | 18,130 | 5,153 | -72% | 1 | 1 | 0% | 2,515 | 1,968 | -22% | 0 | 0 | — |
case-13 | fail→pass | 13,826 | 5,703 | -59% | 1 | 1 | 0% | 1,891 | 2,235 | +18% | 0 | 0 | — |
case-14 | pass→pass | 9,096 | 3,498 | -62% | 1 | 1 | 0% | 1,530 | 1,874 | +22% | 0 | 0 | — |
case-15 | pass→pass | 17,106 | 16,816 | -2% | 1 | 1 | 0% | 2,715 | 3,982 | +47% | 0 | 0 | — |
case-16 | pass→pass | 19,644 | 15,172 | -23% | 1 | 1 | 0% | 2,549 | 3,401 | +33% | 0 | 0 | — |
case-17 | fail→pass | 16,490 | 10,132 | -39% | 1 | 1 | 0% | 2,103 | 2,641 | +26% | 0 | 0 | — |
case-18 | pass→pass | 35,672 | 20,383 | -43% | 1 | 1 | 0% | 2,294 | 3,582 | +56% | 0 | 0 | — |
case-19 | pass→pass | 16,024 | 21,967 | +37% | 1 | 1 | 0% | 2,480 | 4,051 | +63% | 0 | 0 | — |
case-22 | pass→fail | 17,765 | 12,613 | -29% | 1 | 1 | 0% | 3,339 | 2,032 | -39% | 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. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 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 0 percentage points is the difference between those two pass rates over the 16 comparable cases. 4 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.