Vibe Research is a local financial research workspace in which an AI agent gathers market data, performs multi-step analysis, and preserves reports, evidence, calculations, and research history. It is for investment research across Chinese, US, and Hong Kong stocks, including market reviews, company studies, portfolios, debates, and backtesting. The catalogue contains skills and an instruction for working with this research agent.
Borrowing it
Nothing to install: this file belongs to simonlin1212/Vibe-Research. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/simonlin1212/Vibe-Research/main/.agents/skills/company-research/SKILL.mdgit clone --depth 1 https://github.com/simonlin1212/Vibe-ResearchWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/simonlin1212/vibe-research/company-research)<a href="https://agentmods.dev/skills/simonlin1212/vibe-research/company-research"><img src="https://agentmods.dev/badge/skills/simonlin1212/vibe-research/company-research/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/simonlin1212/vibe-research/company-research"><img src="https://agentmods.dev/badge/skills/simonlin1212/vibe-research/company-research.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00115 | $0.05700 |
| Opus 5 | $0.00057 | $0.02850 |
| Sonnet 5 | $0.00023 | $0.01140 |
| Haiku 4.5 | $0.00012 | $0.00570 |
Grade A, and why
company-research scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 123 lines — stays where its author put it; the contents beside it link to each section on GitHub.
个股研究 SOP(company-research)
前置:AGENTS.md 是最高纪律(三条不可越线 / 五问 Gate / 估值口径 / 落盘契约),本 SOP 只规定流程。
取数一律用 data-access skill 的脚本(.agents/skills/data-access/scripts/);由编排器在每个阶段开始前执行(手工运行时由研究者执行),脚本输出落在 RUN/fetch/<script>.json,执行账本在 RUN/fetch/_ledger.json——agent 只读取这些结果,不得自行运行取数脚本(取数与解释分阶段,AGENTS.md §5)。计算一律用 calc/cli.py(函数契约见 calc/SPEC.md),自己不做任何算术、不做单位换算。
Phase 0 范围声明:本 SOP 当前交付的是"财务估值闭环"——行情 / 财务 / 一致预期 / 估值 / 公告线索。不可替代性与产业链位置的证据(产能 / 客户认证 / 良率 / 专利)需要 industry-chain 等 Phase 1 skill;Phase 0 下该项只能标 待补,报告必须明示"不可替代性未验证"。
0. 开工三件事
- 解析标的:代码 → 6 位 + 市场(SH/SZ/BJ),由任一 data-access 脚本完成校验。只给名称不给代码时,要求用户提供代码(Phase 0 没有登记的名称解析脚本,不得自造反查)。解析失败就停,不猜。
- 确定运行目录
.local/runs/<run-id>/(编排器给定;手工运行用YYYYMMDD-HHMMSS-<symbol>);取数脚本由编排器 / 研究者传--out-dir执行(原始响应进raw/,结构化输出进fetch/),calc 一律传--run-dir,每次计算一个文件写入calcs/。 - 若
knowledge/companies/有该标的档案:只作线索读取(status 为 stale / refuted 的不得引用为事实);其中历史结论与本次实时数据冲突时,必须用实时数据反证并在报告"风险与反证"中写明,不顺从旧结论。
1. 六阶段(顺序固定,每阶段结束过 Gate 才进下一阶段)
| 阶段 | 目标 | 取数脚本(必需 ★ / 可选 ○) | calc 函数(输入口径) | 阶段 Gate(不过 = 补跑或标缺口) |
|---|---|---|---|---|
| profile | 公司是谁、上市状态、市值、报价是否可用 | ★ fetch_profile ★ fetch_quote ★ fetch_trade_calendar(读其结果) | — | 名称 / 市场 / 上市状态齐;报价通过 §2 依赖矩阵的 stale 判定(非盘前的 is_stale=true 不通过;盘前且日期吻合可按昨收继续);不可替代性标签 tech_moat / capacity_moat / both / 待补(Phase 0 通常为 待补,须明示) |
| financials | 近 8–12 报告期的营收 / 归母 / 扣非(累计值)→ 单季、TTM | ★ fetch_financials | quarterize(对 revenue_cum / net_profit_parent_cum / net_profit_deducted_cum 各跑一次,unit=元, money=true)→ latest_quarter(扣非,unit=元, money=true)→ ttm_sum(归母与扣非各一次,money=true,作 ttm_yoy 与 TTM PE 交叉验证的中间量)→ ttm_yoy(主用归母净利润,money=true,与一致预期 EPS 同口径;扣非口径并列作交叉)→ qoq(最新单季扣非,money=true,仅作拐点信号);EPS 序列(元/股)用 money=false |
最新报告期有扣非净利润;单季序列 ≥ 8 期;每个数带报告期与单位;每次拆分 / 求和都有 calculation_id |
| estimates | 一致预期 EPS(FY T / T+1 / T+2)+ 机构数 + 区间 | ★ fetch_estimates | forward_cagr(eps_t = FY T 均值, eps_t_plus_n = FY T+2 均值, years=2);consensus_dispersion(min, mean, max) 对 FY T+2 |
机构数 ≥ 3(否则标"一致预期不可靠"并继续);min / max 必须一起报;走东财逐篇备源时只能叫"逐篇预测",不得冒充一致预期,且不得进 forward_cagr |
| valuation | 标准产出列 | ★ fetch_quote(总市值、现价)○ fetch_pe_history(分位) | pe_deducted_annualized(总市值 evidence 的 value+unit, 最新单季扣非 value+unit;单位原样传入,由 calc 归一);forward_pe(现价, FY T 均值 EPS);pe_ttm_from_parts(与数据源 pe_ttm 交叉);percentile_rank(history={"history_csv": {"raw_ref": <PE 历史 raw>, "column": "peTTM", "where": {"tradestatus": "1"}}}, current = pe_ttm);peg(扣非×4 PE, 前瞻 CAGR);pe_digestion_scenarios(扣非×4 PE, 前瞻 CAGR)(四个锚 30 / 25 / 22 / 18 各算);forward_vs_ttm_judgement(前瞻 CAGR, 归母 TTM 同比) |
标准产出列每一格要么有 calculation_id,要么写"未获取:原因";无意义域如实 not_meaningful;季节性提示(淡季单季×4 会高估 PE)写入推断段;PE 消化年数只基于当前 PE 与前瞻 CAGR,必须标注"CAGR 为预测";本产品不输出价格锚(红线) |
| risk | 反证与裁决点 | ○ fetch_announcements ○ fetch_kline | — | 每个强结论至少一条反证;前瞻 vs TTM 判读已给出并解释;一致预期分歧已报;数据源冲突逐条列出;数据缺口列出;至少三个裁决点(什么数据出来会推翻 + 下一个公开数据时点) |
| report | 按契约写 report.md | — | — | 结构 = 结论摘要 / 事实 / 推断 / 估值 / 风险与反证 / 裁决点 / 数据缺口;原始事实标 evidence id、派生数字标 calculation id;无任何投资动作建议;状态如实 |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 123 lines · 115 tokens per session scan A 58c1af4cd8df
company-research is a skill published in the GitHub repository simonlin1212/Vibe-Research (2,444 stars, last pushed yesterday), licensed MIT. It adds 115 tokens to every session and 5,700 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
daily-deep-brief
A scheduled, pre-market investment briefing for Hong Kong and United States stocks. A deterministic preparation step gathers data and an agent adds judgment, while a later step validates and publishes the result.
hk-stock-analysis
A workspace-aware analysis workflow for Hong Kong-listed stocks. It retrieves prices, technical indicators, market comparisons, and news through a local data pipeline, then adds Hong Kong-specific investment context.
us-stock-analysis
Workspace-aware US stock analysis for kcn. Routes through clawock analyze-us / clawock us-quotes instead of generic web search, then layers fundamental/technical/news analysis on top. Use when user asks to analyze a US ticker (e.g. "analyze AAPL", "look at RKLB", "compare TSLA vs NVDA"), check earnings, run…
portfolio-swarm-review
Multi-agent swarm review of kcn's current holdings. Inspired by TauricResearch/TradingAgents framework already in workspace — three-tier analysis (analysts → bull/bear debate → risk debate + judge) with confidence scoring. Use for post-close reviews, holiday/next-session planning, pre-add sizing decisions, and any…
investment-decision
Run a clawock investment decision — read the prepared request, research with the host's own tools, write decision.json with evidence and an explicit bull/bear debate, and let Python validate and settle. Use when the user asks for an investment decision or a clawock run request is present.
investment-decision
Read the clawock request file, write decision.json, let clawock validate. Use when a clawock run request is present in .clawock/work/.