How this skill is triggered — by the user, by Claude, or both
Slash command
/invest-A:invest-A /invest-A 600176 | /invest-A 600176 --with-macro | /invest-A 600176 --deep | /invest-A 600176 --compare 000858/invest-A 600176 | /invest-A 600176 --with-macro | /invest-A 600176 --deep | /invest-A 600176 --compare 000858This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
每次 invoke 本 Skill 时,运行以下检查:
references/source-guide.mdscripts/check-version.shscripts/check_report.shscripts/invest.pyscripts/lib/__init__.pyscripts/lib/assets/chart.umd.min.jsscripts/lib/collector.pyscripts/lib/env.pyscripts/lib/financials.pyscripts/lib/nums.pyscripts/lib/proxy.pyscripts/lib/render.pyscripts/lib/risk_scanner.pyscripts/lib/schema.pyscripts/lib/store.pyscripts/lib/technical.pyscripts/lib/tushare_client.pyscripts/lib/valuation.pytests/conftest.pytests/fixtures/__init__.py每次 invoke 本 Skill 时,运行以下检查:
skills/invest-A/scripts/check-version.sh 是否存在bash skills/invest-A/scripts/check-version.sh⚠️ invest-A 版本不匹配,请运行 git pull 更新⛔ 检测到从缓存路径加载,请通过 /plugin 重新安装version: 字段当前版本:v 行对比以下法则约束所有输出。违反即为 Bug。
LAW 1 — 每条分析论述必须引用数据来源。
LAW 2 — 报告使用统一研究流程结构:公司画像 → 经营质量 → 估值位置 → 资金与筹码 → 技术结构 → 事件催化 → 核心矛盾;每节末尾附待验证项。
LAW 3 — 区分"事实陈述"与"分析判断"。
LAW 4 — 风险提示出现首部和尾部。
LAW 5 — 并行取证,汇总为证。 采集器对所有可用源并行查询(非串行降级),各渠道独立记录。如果所有渠道均无法获取某一维度的有效数据,报告必须在该维度明确标注 "未获取到任何有效数据,无法判断",而非默认跳过或让读者自行推断。多源均有数据时,标注各渠道内容摘要及以哪个为主。
LAW 6 — 禁止买卖建议、目标价、仓位建议。
LAW 7 — 每个数字标注可审查的追溯路径(函数调用、查询语句、公告链接)。最终数据来源清单表必须包含检索关键字/API 调用参数列——仅写来源名称不满足 LAW 7。
LAW 8 — 每个维度末尾要求"🔍 待独立验证项"。
LAW 9 — 无数据源支撑的分析不输出。
v0.1.4 引擎
render_report_v3()与 Claude 分析输出均须遵守以下法则。违反即为 Bug。
LAW 10 — 分析提示必须具体 每节「分析提示」须含:① 该维度在定价中的传导路径;② 引用本次报告具体数据的常见误区;③ 1–3 个可执行的交叉验证动作。禁止无数据支撑的通用知识。
LAW 11 — 研究问题卡来自结构化触发 四类触发源驱动问题树,不得凭空总结:
LAW 12 — 证据-结论映射强度一致
每个分析性结论附带证据块:✅ 强 / ⚠️ 中 / ❓ 弱。引擎函数 _evidence_conclusion_block() 与 _cross_validation_block() 为模板参考。
LAW 13 — 动态驱动须列候选解释并声明主导因子 模块 2 须输出最多 5 条候选解释(假说,非因果定论),并从多因子矩阵中声明主导因子(方向 + 可持续性待观察)。
LAW 14 — 静态基本面 12 道核心题 + 分层激活
引擎 _section_fundamentals_layered() 渲染核心判断摘要(盈利/现金流/负债)、业绩全景表(含 EPS)、12 题回答状态表;数据不足标注「数据不足」。
LAW 15 — 市场分歧 Bull vs Bear
引擎 _section_bull_bear() 渲染假设→传导→数字链条与关键分歧点。在 Bull/Bear 逻辑链中,至少一条应附带数值场景化(EPS × PE 或净利润 × PE 区间),格式参考:「若 PE 修复至历史中位数 Xx(来源: valuation 维度),对应市值区间为 …,较当前隐含 ±Y% 空间。」
LAW 16 — 左/右概率结构,禁止单一结论 永远不输出「当前是左侧」或「当前是右侧」。须并列呈现:左侧支撑依据、右侧支撑依据、走势转变触发条件、下一观察节点。阶段描述用并列对照,不得勾选单一趋势结论。
| # | 违规模式 | 违反规则 | 正确写法 |
|---|---|---|---|
| 1 | "当前处于左侧/右侧" | LAW 16 | "左侧特征更强:XXXX;右侧支撑:YYYY" |
| 2 | "建议买入/卖出/持有" | LAW 6 | 永远不给买卖建议 |
| 3 | "目标价 XX 元" | LAW 6 | 可以给估值区间,不允许单一目标价 |
| 4 | 无来源的"往往""通常" | LAW 3 | 口头经验必须标注"待补"或转为案例 |
| 5 | PE 分位数用于亏损标的 | P0-2 | 标注"仅作位置参考" |
| 6 | "极度高估/低估" | 措辞规则 | 用数值比较替换 |
v{major}.{minor}.{patch},功能变更递增末位。同版本内修订用日期区分。code/reports/{symbol}-{name}-{date}.md,Claude 内只输出简报。| 版本 | 策略 | 缺点 |
|---|---|---|
| v0.2(旧) | 串行降级:Tushare → 失败 → akshare → 失败 → 腾讯 | 单源数据无法交叉验证 |
| v0.3(当前) | 多源并行:全部可用源同时采集,选最优为主数据,全部结果附于 _meta.all_sources | 需辨别各源差异 |
当 Tushare 和 akshare 对同一指标给出不同数值时,采集器保留所有值,由 Claude 在分析阶段判断并标注差异。
本 Skill 是一个多因子交叉验证的结构化投研助手。
它做的: 采集多渠道数据并交叉验证 / 归因分析当前涨跌的驱动因子 / 多维度市场状态扫描 / 呈现左侧/右侧概率结构及走势转变触发条件 / 所有结论标注来源和证据强度。
它不做的: 不输出个股买卖建议 / 不给目标价 / 不给仓位建议 / 不承诺收益。所有输出限定于「信息整理、结构化分析、多因子交叉验证和归因讨论」。
这是一个研究工具,不是决策工具。 不提供买卖建议、目标价或仓位建议。
❌ 旧模式(v0.2):Tushare → 失败 → akshare → 失败 → 腾讯 → 标注不可得
↳ 串行降级,单源数据无法交叉验证
✅ 新模式(v0.3+):全部可用源并行查询 → 各渠道独立记录 → 汇总为证
↳ 每个维度对所有可用源同时发起请求,各渠道独立记录
↳ 所有渠道均失败 → 结论标注"未获取到任何有效数据,无法判断"
↳ 多源都有数据 → 标注各渠道内容、以哪个为主
↳ 类似论文的"多来源相互印证",不是"一个不行换另一个"
每次 invest-A 执行结束后,输出必须分两层展示,不可混为一谈:
Claude 对话中输出的内容须精简为可一目扫完的简报,核心内容包括:
禁止在 Claude 内展开全部九模块内容、完整表格、流程描述。
详细分析内容须写入 code/reports/{symbol}-{name}-{date}.md 文件。
code/reports/ 目录?违反即为 Bug。
| # | 模块 | 引擎渲染(v0.1.4) | 说明 |
|---|---|---|---|
| 0 | 研究问题卡 | ✅ | LAW 11 四类触发源 + 问题树 |
| 1 | 当前状态快照 | ✅ | 价格/估值/财务 + 多源一致性 |
| 2 | 动态驱动分析 | ✅ | 候选解释 + 8 因子矩阵 + 主导因子 |
| 3 | 市场结构分析 | ✅ | 行业情绪 + 资金态度 + ERP/换手 |
| 3b | 机构观点与盈利预测 | ✅(可选维度) | collect.research;LAW 6 合规表述引用第三方卖方一致预期 |
| 4 | 静态基本面 | ✅ | 核心判断摘要 + 业绩全景(EPS)+ 12 题状态表 |
| 5 | 市场分歧 | ✅ | Bull/Bear 假设→传导→数字 + 关键分歧点 |
| 6 | 左侧/右侧概率 | ✅ | LAW 16 概率结构 + 触发条件 + 趋势延续信号组合 |
| 7 | 风险与不确定性 | ✅ | 三层风险信号 + Known Unknowns 标准槽位 |
| 8 | 附录 | ✅ | 技术精简 + 引用来源 |
v0.1.4 使用
render_report_v3();v0.1.2 八段模板保留为render_report_v2()legacy。
| 章节 | 分析要点 | 数据来源 | 引擎渲染 |
|---|---|---|---|
| 公司画像 | 公司概况、行业分类、上市时长 | collect.basic_info | ✅ 事实罗列 |
| 经营质量 | ROE趋势、EPS、扣非净利润 | collect.financials | ✅ 表格 + 趋势句 |
| 估值位置 | PE/PB历史分位、股息率 | collect.valuation + lib/valuation.py | ✅ 完整渲染 |
| 资金与筹码 | 股东结构、北向资金、行情 | collect.shareholders + northbound + quote | ✅ 事实罗列 |
| 技术结构 | 趋势/动量/波动/成交量/结构 | collect.kline → lib/technical.py | ✅ 完整渲染 |
| 机构观点 | 卖方评级、一致预期价位、业绩预告 | collect.research(--dims 显式启用) | ✅ 有数据时渲染 |
| 事件催化 | 公告、新闻、行业动态 | Claude 分析(WebSearch 补充) | 占位 |
| 核心矛盾 | 当前最值得跟踪的问题 | Claude 根据数据卡片撰写 | 占位 + 数据卡片 |
⚠️ "事件催化"和"核心矛盾"两个章节无稳定 API 支撑,依赖 WebSearch 和 Claude 分析,须标注数据来源并提示不确定性。
⚠️ 项目根目录的
archive/是旧代码归档(v0.2 遗留),不被 Skill 引用。 不要从archive/中导入任何 Python 模块或引用配置。 该目录仅保留用于历史追溯。
当前已配置的数据源:
docs/roadmap.md)所有数据采集和分析通过 invest.py 完成。Claude 根据用户意图构建对应命令:
# 采集并展示
uv run python skills/invest-A/scripts/invest.py collect 600176
# 生成研究报告(默认 Markdown 九模块,stdout)
uv run python skills/invest-A/scripts/invest.py report 600176
# 指定输出目录(写 .md 文件)
uv run python skills/invest-A/scripts/invest.py report 600176 --outdir=./reports/
# HTML 报告(v0.1.2 冻结旧版,须显式指定)
uv run python skills/invest-A/scripts/invest.py report 600176 --emit=html
# 生成 JSON / compact 格式(stdout)
uv run python skills/invest-A/scripts/invest.py report 600176 --emit=json
uv run python skills/invest-A/scripts/invest.py report 600176 --emit=compact
# 深度模式(扩大K线范围至730日 + 行业/舆情分析)
uv run python skills/invest-A/scripts/invest.py collect 600176 --deep
uv run python skills/invest-A/scripts/invest.py report 600176 --deep
# 对比双标的财务数据
uv run python skills/invest-A/scripts/invest.py compare 600176 000858
# 检查各数据源可用性
uv run python skills/invest-A/scripts/invest.py diagnose
# 对比两次快照变化(需先 --store 至少两次)
uv run python skills/invest-A/scripts/invest.py diff 600176
uv run python skills/invest-A/scripts/invest.py diff 600176 --emit=json
# 查看历史采集记录
uv run python skills/invest-A/scripts/invest.py store list
# 保存本次采集到持久化存储
uv run python skills/invest-A/scripts/invest.py collect 600176 --store
注意:
invest.py在skills/invest-A/scripts/下。运行前确保终端在code/目录。 所有子命令支持--help查看参数详情。 ⚠️ 必须使用uv run python替代裸python3,确保依赖从.venv加载而非全局环境。
采集器在 akshare 东方财富 / baostock 调用时自动绕过 HTTP 代理(proxy_bypass / akshare_direct_session);检测到代理且东方财富不可达时才提示用户。
rules:
- DOMAIN-SUFFIX,eastmoney.com,DIRECT
- DOMAIN-SUFFIX,gtimg.cn,DIRECT
- DOMAIN-SUFFIX,baostock.com,DIRECT
- MATCH,PROXY
invest.py diagnose 输出 proxy_detected、proxy_bypass_effective 与 akshare_eastmoney_api 探针详情no_proxy_session);Tushare 与 akshare 并行互不干扰详见 references/source-guide.md §代理 / VPN 问题。
事实性陈述: "数值" [来源: {追溯路径} / {获取日期}]
✅ "营收 188.81 亿元 [来源: WebSearch / query: '中国巨石 600176 2025年报'
结果3(东方财富 finance.eastmoney.com/a/...) / 2026-06-10]"
✅ "当前 PE(TTM) 41.23x [来源: collector.collect_quote(symbol='600176') → tencent_finance / 2026-06-10]"
分析性判断: "判断" [依据: {数据来源}; 逻辑链: {推理}]
推测: "推测" [推测,待验证]
无数据(全部渠道失败): "未获取到任何有效数据,无法判断。[尝试了 {源1}、{源2},均失败]"
均线(MA)和 MACD 仅用于描述市场状态,不生成交易信号。
diagnose — 先检查数据源是否可用collect — 采集指定股票的多维度数据(基本信息、财务、行情、股东、北向、估值、K 线;可选 research 机构研报)report — 对采集结果进行分析并生成报告(Claude 手动分析 + 渲染)store — 将高质量采集结果持久化(可选)报告末尾必须包含一个"引用来源(References)"附录,类似论文的参考文献章节。表格列出每个渠道的独立结果,表头固定为:
| 维度 | 渠道 | 追溯路径 | 数据状态 |
✅ 有数据 — 该渠道成功获取数据❌ {错误原因} — 该渠道失败⏭️ 未尝试 — 该渠道因依赖缺失未执行| 维度 | 渠道 | 追溯路径 | 数据状态 |
|---|---|---|---|
| 日K线 | tushare.daily | pro.daily(ts_code='300328.SZ', start_date='20260501') | ✅ 有数据 |
| 日K线 | akshare.stock_zh_a_hist | ak.stock_zh_a_hist(symbol='300328', period='daily') | ❌ 连接被拒绝 |
| 日K线 | baostock.kline | bs.query_history_k_data_plus(...) | ✅ 有数据 |
| 行业动态 | WebSearch | query: "宜安科技 液态金属 2026" | ✅ 有数据 |
pro.{api_name}() + 调用参数(symbol、日期范围等)query: "..." 原字符串ak.{函数名}(参数...)qt.gtimg.cn + 请求 URLbs.query_history_k_data_plus(...)npx claudepluginhub veblin/invest-a-skill --plugin invest-AProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.