Eastmoney Market Data
HKUDS/Vibe-Trading
Index of Eastmoney's free, no-token market data interfaces for China A-shares and Hong Kong stocks: fund flows, dragon-tiger lists, margin trading, reports and news.
Publishes quantitative analysis or existing images, HTML and PDF files as shareable Quant Buddy live pages and dashboards, and interprets existing page links.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pseudo-longinus/quant-buddy-skills quant-buddy-view --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pseudo-longinus/quant-buddy-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/quant-buddy-view .claude/skills/quant-buddy-view && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "quant-buddy-view" agent skill from https://github.com/pseudo-longinus/quant-buddy-skills/tree/main/skills/quant-buddy-view into .claude/skills/quant-buddy-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quant-buddy-view", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pseudo-longinus/quant-buddy-skills/tree/main/skills/quant-buddy-viewType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pseudo-longinus/quant-buddy-skills quant-buddy-view --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pseudo-longinus/quant-buddy-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/quant-buddy-view .agents/skills/quant-buddy-view && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "quant-buddy-view" agent skill from https://github.com/pseudo-longinus/quant-buddy-skills/tree/main/skills/quant-buddy-view into .agents/skills/quant-buddy-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quant-buddy-view", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pseudo-longinus/quant-buddy-skills quant-buddy-view --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pseudo-longinus/quant-buddy-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/quant-buddy-view .cursor/skills/quant-buddy-view && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "quant-buddy-view" agent skill from https://github.com/pseudo-longinus/quant-buddy-skills/tree/main/skills/quant-buddy-view into .cursor/skills/quant-buddy-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quant-buddy-view", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pseudo-longinus/quant-buddy-skills.git --path skills/quant-buddy-view--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pseudo-longinus/quant-buddy-skills quant-buddy-view --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pseudo-longinus/quant-buddy-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/quant-buddy-view .gemini/skills/quant-buddy-view && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "quant-buddy-view" agent skill from https://github.com/pseudo-longinus/quant-buddy-skills/tree/main/skills/quant-buddy-view into .gemini/skills/quant-buddy-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quant-buddy-view", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pseudo-longinus/quant-buddy-skills quant-buddy-viewInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pseudo-longinus/quant-buddy-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/quant-buddy-view .github/skills/quant-buddy-view && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "quant-buddy-view" agent skill from https://github.com/pseudo-longinus/quant-buddy-skills/tree/main/skills/quant-buddy-view into .github/skills/quant-buddy-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quant-buddy-view", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pseudo-longinus/quant-buddy-skills quant-buddy-view --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pseudo-longinus/quant-buddy-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/quant-buddy-view .opencode/skills/quant-buddy-view && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "quant-buddy-view" agent skill from https://github.com/pseudo-longinus/quant-buddy-skills/tree/main/skills/quant-buddy-view into .opencode/skills/quant-buddy-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quant-buddy-view", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
quant-buddy-viewPublishes quantitative analysis or existing images, HTML and PDF files as shareable Quant Buddy live pages and dashboards, and interprets existing page links.
This skill turns verified quant data and formulas into a public, link-shareable web page that pulls live data, such as a single-stock profile, a valuation and financials view, an index movement report, a multi-factor screen or a daily commodity page. It can also host an existing JPG, PNG, HTML or PDF file as a page. Pages can be created, updated, reused, checked for acceptance and handed over as public links.
For quantitative requests the agent first queries and verifies the data through QBS and gives a full answer, then builds the page; a single A-share name or code is treated as a request for a stock page. When you give a QuantBuddy page URL and ask for an interpretation, it runs a read-only script, scripts/static_page.py interpret, and summarizes the latest data as a one-line conclusion, key metrics and changes, risks, and three follow-up questions, without creating or editing pages.
Pages are public to anyone with the link, so the skill requires the agent to say so and to get your authorization before holdings, costs or trade records are published. A page that fetches data when opened is not a scheduled task, notification or automatic trading, and the skill says that instead of claiming otherwise. Backend calls begin with scripts/trace_context.py and use a QBV_API_KEY credential.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6c25f2e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
pythonnpxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
quantbuddy.cnpages.quantbuddy.cnFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
QBV_API_KEYQUANT_BUDDY_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Quant Buddy Page Publisher loads about 12k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 124 tokens; SKILL.md has 2,415 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from pseudo-longinus/quant-buddy-skills at commit 6c25f2e, republished under its MIT licence (© pseudo-longinus). 2,415 words, ~11,986 tokens.
.claude/skills/quant-buddy-view/SKILL.md (or your agent's skills folder). This skill also uses 138 other files; get the full folder from GitHub.公开范围与能力边界:当前活页凭链接公开访问,不能承诺未经验证的私有权限。发布个人持仓、成本或交易记录前,须说明公开范围并取得相应授权;已明确授权则不重复确认,普通公开行情页面无需额外确认。页面打开/刷新取数不等于已启用每日定时任务、主动通知或自动交易;只有实际能力与创建/执行成功证据齐备,才能报告这些状态。缺少能力时如实说明,继续完成已授权且可实现的部分。
宿主约定优先于独立路由:WebAgent 的金融问题默认在 QBS 完整首答后继续本技能,不因“只查一个字段”“最近如何”或概念解释而取消建页。下文一次性查询只用 QBS 的规则仅适用于无此约定的独立使用。页面沿答案范围与结构生成,保留显式不要网页、原页身份和发布验收规则;详见 先答后建页。
把「已验证的量化数据与公式」沉淀成一个公开可分享、实时取数的网页看板/落地页。一次性行情与概念解释由 QBS 回答;执行回测、每日复盘、监控、画线画图和看 K 线默认先 QBS 后本技能,不要求用户另说“做网页”。默认执行路线是:
已有文件交付例外(含增强后版本):本流程链接统一称“可分享活页”,不强制称“实时”;数据状态另外如实说明。file_prepare 可恢复流程的原始静态版验收后立即交付,不套用终态“实时活页”固定结尾,也不调用要求terminal=true的终态回复validator;说明静态性质并继续已授权增强。feishu-group使用playground链接。
feishu-group 渠道:打包渠道为
feishu-group时,direct/fork/unmatched/update 等所有分支禁止发送非终态链接;终态 contract 统一把pages.quantbuddy.cn/pages/<owner>/<page_id>.html转成www.quantbuddy.cn/playground/<owner>/<page_id>,内部发布与验收仍使用原始托管 URL。
量化建页时序:除已有文件托管、只读解读、纯展示维护外,先按 答案结构建页 完成 QBS 查询并发完整非终止首答,随后才执行下述快页/模板/建页路线。此顺序也适用于 new_asset_page 快页;不能让页面验收阻塞首答。
最高优先级:既有活页解读。 用户给出 pages.quantbuddy.cn/pages/... 的 QuantBuddy 活页 URL,且意图是“解读 / 分析当前活页 / 看这页数据”时,先且只运行:
python scripts/static_page.py interpret '{"url":"用户提供的页面 URL"}'这是只读数据路径,不要运行 trace_context.py、templates、template、direct_deliver、new_page、fork、download、浏览器或 HTML 搜索,也不要创建、更新、发布页面。它调用 getPageDetail?need_data=true;服务端使用页面绑定的公式包和 Data Grant 取最新数据,并附加 interpretation_bundle,不返回 signature。直接按用户的自定义要求解读详情与 interpretation_bundle.runtime_data。未指定格式时,依次输出一句话结论、关键指标及变化、风险/异常、3 个继续追问方向。详见 workflows/interpret-existing-page.md。
若 interpretation_bundle.runtime_data.grants[].data.mode="csv",先返回的 csv_fields[].csv_url 是短期下载链接而非可直接计算的数据。必须紧接着运行一次 python scripts/static_page.py interpret_csv '{}':它只下载该次 interpret 已返回的 CSV、保留链接并补出 results[].fields[].series,然后再计算和解读;禁止重跑 interpret、另查数据接口或把 CSV 链接给用户。
scripts/trace_context.py begin,保存唯一 task_id 并在后续命令中复用。这步本身就是后端写入调用,必须和后续命令带同一个身份(QBV_API_KEY 环境变量或参数里的 api_key),不带会被记成 skill 默认账号。new_asset_page(reply_mode:"page_followup");不要重新 resolve_asset_data、stockProfile 或创建第二个 session。尚未取数时通过 qbs_bridge.py 查询业务数据,校验实际日期与单位,发送完整非终止业务答案。本步骤的下一次工具调用仍须继续页面流程,不能以无工具的最终消息结束。 若只是简单分析一只 A 股并返回页面,没有定制栏目/额外指标/对比,首答后运行一次 scripts/static_page.py new_asset_page,不用查 templates 或自行注册 Grant。成功草稿用于最终页面交付,不代替之前的 QBS 首答。scripts/static_page.py templates,查询统一 public 命中池(官方精选+社区)。已有文件托管与纯展示维护保持各自入口。direct_deliver 必须提交 dimension_check。缺维度改走 fork + same_paradigm_augment_dimension。new_page 时由 Agent 根据 items_summary 显式传 routing_decision;fork 还必须声明 borrow_mode=inherit|inherit_augment|compose。fork 一旦判定只能继承、增强继承或 Compose,禁止改判 unmatched。
定义研究范围前读取 研究与数据合同:只有市值筛选时标题必须限定为“市值候选/大盘代表股”;只有主连历史时标题必须含“主连参考”;来源没有缺失标记时不能将数值0解释为缺失。新组装页面再读取 自建质量,用安装包内的结构示例起步。new_asset_page 成功后,按 agent_summary_request 用当前 Agent补写草稿中的唯一 summary_marker,保持其余内容不变并立即发送;direct、fork/unmatched 仍按 agent_reply_contract 和回复模板生成证据绑定草稿,再运行返回的 reply_validation_command,只有 valid=true 才最终回复。多轮追问:首次用户消息运行
scripts/trace_context.py begin;同一task_id的每条后续用户消息先运行scripts/trace_context.py beginTurn。正常 Agent 必须同时传本轮可选agent_intent:简洁展开上下文指代并写清对象、动作、约束和期望页面/产物,推荐 20~160 字;不得复制用户原话、输出内部推理或提前编造结论。老调用方可省略并按null继续。一轮内所有 QBV/QBS 工具共享同一turn_id。Turn 是审计旁路:服务端记录失败会返回tracking_recorded:false,但不得阻断建页、更新、取数或发布;业务上下文继续切换到真实user_query/agent_intent,attemptedturn_id不保存、不传播,后续按无 Turn 模式继续。更新既有活页必须继续复用原page_id与公开 URL。
QBS 先答 Handoff(默认同轮):收到
qbs_qbv_handoff_v1时运行scripts/trace_context.py beginHandoff(兼容begin-handoff),传入 Handoff object 或绝对handoff_file。必须原样复用其中真实task_id + turn_id + source_skill_id,不得再次begin/beginTurn、不得在 QBV 重做 QBS 路由分类。create/existing_page之后仍进入本 Skill 完整 SOP,由 QBV 判断 direct/fork/unmatched、查询 ownership 并执行本人原位更新或他人复制;高风险持久状态未确认时beginHandoff必须拒绝。
大样本排名的展示合同:
universe_count只表示参与计算的股票数,不表示页面需要渲染的行数。Handoff 没有明确展示数量时,排名页面默认rank_limit=20,页面只渲染 Top20。默认消费render_mode=dynamic:Formula Package/Data Grant 在服务端缓存和取数,浏览器只展示 Top20;不要因为参与计算的股票多就降级为静态页。只有用户明确要求固定快照,或动态数据路由经过验证确实不可用并已如实说明时,才消费render_mode=validated_snapshot。
量化查询型建页先用 QBS 验证数据并发送完整非终止业务答案,再查询模板、注册运行时和构建页面;默认同轮继续。收到 Handoff 时复用已有答案和计算,按 答案结构建页 消费可选 answer_structure。不要将已发首答当作任务结束。已有文件静态托管、只读解读、纯展示维护保持原入口;分钟公式验证成功不代表公式包支持分钟注册。
量化建页只在验收后补链接:该场景所有渠道均不发送模板、草稿或进度页链接,直至页面验收成功和适用回复校验通过。此规则优先于下文、工具文档及返回 hint 中的立即首链要求和首链耗时指标;模板匹配、创建和同页更新仍正常执行。已有文件托管保留自己的首链交付与确认流程。
验证结果直接交接:resolve_asset_data / validate_grant_set / validate_package_set 返回 registration_params_file 时,首答及页面路由完成后直接执行对应 registration_command;不要重写合同、抄指纹、重复查询或另调validate。publication_evidence 原样并入看板spec,注册返回的实际ID绑定面板。已有证据的字段/范围确需变化时重新验证新合同,不能沿用旧指纹。公式型行业页面先读 行业排名交接。
技术失败后继续生成:历史 CSV 验证、来源凭证或注册出错时,执行 同页恢复。优先修正原合同;已有完整验证结果但注册不可用时,使用 recover_snapshot 生成同页快照候选,再继续 compose_page → publish_verified。不把一次工具失败当作任务结束,不改用 static_content_only;用户明确要求实时的页面不能用静态结果冒充完整交付。
已公开验收的计划页面,仅修改正文/布局并保留标准看板取数合同和内核时,可按 interpret 确认同页 owner/page_admin 权限后运行 static_page.py prepare_maintenance @params.json。它从线上当前版本核验基线,生成独立的维护候选收据及 publish_verified 参数;不改写原 Compose 收据。首次建页、未完成公开验收、数据合同变化、版本冲突及未知写入结果不适用。具体约束见 浏览器批注维护。
自建与Compose的发布底线见自建质量;资产身份、研究定义、完整公式合同和最小取数范围见研究与数据合同。价格或榜单会变化的文字必须使用动态绑定或显式标注历史分析日,不把静态正文当成实时结论。
fork_compose 与 execution_plan 修订返回会话可写目录中的 next_action.params_file。编辑该草稿的标题和研究内容,不编辑内部 /tmp 收据;修订后使用新路径和当前 plan_hash。已注册角色自动生成数据面板,runtime_role_id 是受支持的角色引用;纯 text/image 不算数据消费。先处理 draft_diagnostics,不能通过清空角色或取消实时要求绕过错误。只有工具返回 publish_verified 才进入发布;缺路由时提供本任务已有的 route_receipt_file,不重复注册。失败回复保留“任务进度(构建失败)/(未完成)”链接,但不使用成品交付措辞;宿主卡片不作为成功证据。
用户提供已有 JPG/PNG、HTML、PDF 或其他可读取文件,并要求转活页、网页活化、用 QBV 做成可分享页面时,按语义触发,不依赖“转活页”固定词。即使同时要求检查错误、补充指标、研究或重做 HTML,也必须先把来源转换为可阅读的静态 HTML、发布并验收、先交付链接,再考虑 QBS 数据接入。不得先查数据、匹配资产、查询范式或等待 Handoff/计算胶囊;这些工作均移到静态交付之后。仅阅读/分析/导出文件、未要求发布,或明确“先不要发布”时不触发。
执行 已有文件静态优先工作流:先 static_page.py file_prepare 保存原件并生成最小承载HTML及可恢复发布参数,再原样使用返回的 file_publish_dir 与 snapshot_only:true 执行 upload/update;先验收原始静态版本;返回required_user_message后,下一次工具调用前先把该链接发给用户,再运行file_confirm_delivery确认,然后继续已授权的纠错、研究和数据增强。不得用虚假确认代替实际发消息。 用户要求重做内容时,主体HTML交给同页managed update(file_enhancement_mode:content)自动编译分享壳并验收,不转入bespoke/fork流程,不先对未编译主体跑ui-refinement或增加未要求的字号门槛。不等待查数、范式匹配、公式验证或内容重做。第一版与续跑绑定同一 page_id/URL,阶段记录留在当前任务持久工作区;增强失败不得先覆盖为旧快照。未知写入结果用 file_status 核对,禁止盲目重复创建。只读文件分析或明确不发布不触发;真实公开边界、文件读取、转换、首次托管问题如实处理,不许假称成功。
先建立 Trace Context。begin 是真实的后端写入调用(落审计表),和后续命令一样需要本次任务的身份——必须与后续命令用同一个 key,否则这一步会被记到 skill 默认账号名下,任务链路从第一条记录起就归错人:
# 身份走环境变量(exec 日志里会脱敏);不要把 key 拼进命令串,命令是原样记录的
QBV_API_KEY=<本次任务的 key> python scripts/trace_context.py begin '{"user_query":"那和五粮液比呢?","agent_intent":"延续上一轮贵州茅台分析,对比五粮液的盈利能力、估值水平与主要风险。"}'agent_intent 与本轮 user_query 绑定:首问、每次追问分别保存,追问要展开“它/上一个/继续”等指代;缺失、空白或旧 Trace 文件均按 null,不能从 user_query 伪造。QBS Handoff 继续使用 qbs_qbv_handoff_v1,可选携带同一 Intent;Intent 差异不得制造第二个 Turn、拒绝 Handoff 或改变 Job 身份。
agent_model 是纯可选审计字段:明确知道当前 Agent 的真实运行模型时建议传入;不确定时直接省略,禁止猜测,也不要询问用户。宿主也可通过可选环境变量 QBV_AGENT_MODEL 注入。模型名按“显式参数 → QBV_AGENT_MODEL → 当前 task_id 的任务临时上下文 → 空”解析;缺失、纯空白或上下文读写失败都不得中断任务,非空值会通过 x-agent-model 自动贯穿后续命令与 QBS bridge。
保存返回的 task_id,并把它加入本次任务后续每个 static_page.py、formula_package.py、data_grant.py 参数。脚本会通过 x-task-id 请求头透传,使后台能从提问一直聚合到最终活页链接。new_asset_page / templates / upload / update / publish_final / publish_verified 缺少 Trace Context 时必须停止执行。QBV 编排中的 quant-buddy-skill 工具统一通过 scripts/qbs_bridge.py <tool> @params.json 调用,并显式传同一 task_id + user_query;bridge 会用 task-scoped session 继承 task_id,禁止生成第二个 session id。
build_dashboard.py也属于上述“后续每个命令”:只要 spec 含upload:true或update_page_id,必须写入同一task_id。成功结果会返回 hash-boundreply_draft_file + reply_validation_command;公网验收后必须写草稿并运行该命令,只有valid:true才能最终回复,之后停止工具调用。
计划与恢复:普通研究页按计划驱动交付执行。借鉴范围、目标运行角色及构建模式必须一致;Compose返回的params文件用于完整候选构建,随后publish_verified。
update_progress必须使用page_status/current_step;技术失败不是用户确认,已有可读内容不得被失败进度页覆盖。 登记运行凭据需对应验证收据;静态金融页用materialize_snapshot及计划snapshot_roles,不手填数据绕过验证。
具体资产证据闸门:已有文件转活页先执行静态交付,本闸门仅在其后实时增强阶段生效。除 new_asset_page 固定场景外,只要用户点名具体资产,就在 Trace 后、解释资产身份或提交 routing_decision 前,按「Trace → 资产映射 → 最小接口验证 → 页面路由」的顺序完成验证:调用 scripts/qbs_bridge.py resolve_asset_data 得到平台 ticker 映射,并按页面实际需要探测所需数据角色是否可取数,只记录接口成功/失败、可用字段和结构化错误。页面结构与 direct/fork/unmatched 判断只依据"用户所需能力 × 已验证的平台能力",不得依据 Agent 对公司上市状态、所有权、资产名称或市场惯例的记忆。验证前不得引入"上市/未上市、公开/私营、代理资产、无行情、只能静态"等限制性前提;若用户没有询问这些身份属性,也不要把它们扩展成分析主线。
resolve_asset_data 的输入合同必须直接按下面形状写入新的 output/*.json,不要先猜 schema、不要把多只资产拼成一个 asset 字符串,也不要为每只资产各写一份参数文件:
{
"task_id": "<同一 task_id>",
"user_query": "<当前用户原问题>",
"assets": ["贵州茅台", "五粮液", "泸州老窖"],
"required_roles": {
"snapshot": ["close", "pct_chg", "pe_ttm", "pb", "market_cap"]
},
"optional_fields": ["turnover_rate"]
}"asset":"贵州茅台";多资产用 "assets":[...],二者不能并存。多资产由 bridge 在一次 CLI 调用内逐资产验证并聚合收据。required_roles 只需写实际需要的 role;省略的 profile/snapshot/report/formula 自动视为空数组。每个 role 的规范值是字符串数组,也兼容 {"fields":[...]}。formula 必须留空或省略;跨资产公共公式只在探测后用 validate_package_set 验证一次,禁止每个资产重复验证/注册同一公式包。output/ 是跨会话残留的 scratch,不是示例库:禁止 Grep/Read 旧 output/*.json 来拼本次参数,尤其禁止复制其中旧 task_id、旧凭证、旧公式或损坏 JSON;参数形状只从当前 SKILL.md / tools/*.md / workflows/*.md 获取。mt_close = 收盘价(贵州茅台))。写入后直接执行对应 CLI,让 JSON parser 作为反馈,不要读取旧 scratch 文件“找范例”。outputs 分别配置 transform:"cumulative_return_pct" 与 transform:"drawdown_pct",估值另用 Data Grant table。此能力已由 build_dashboard 内置,禁止为它 Grep/Read assets/data-kernel.js 或手写 bespoke SSE/Grant runtime;详见 workflows/dashboard-end-to-end.md 的最短路径。新增均线/指标、扩大计算范围或修改策略参数是计算更新:QBS 验证后先发完整非终止业务答案,再执行 chart_edit/注册/更新,公开验收成功后补原链接。已有页和恢复会话不豁免;仅删除已有线、展示裁剪、颜色/布局修改属于纯展示维护。
只有用户明确要求“解读/查看当前页面”且不要求修改时,才使用不带 task_id 的纯只读 interpret,读取后即可按返回证据回答,不进入建页流程。
用户要求修改已有 QuantBuddy URL 时,先 trace_context.py begin,再带同一 task_id 调用 static_page.py interpret。必须按返回的 existing_page_route.mode 分流,不能把所有已有页一律判成 Fork:
mode="in_place":调用者是 owner/page admin,或旧版详情合同返回 resource_role="existing_page"、由 updateStaticPage 在写入时做最终权限校验。保持原 page_id、公开 URL、包/Grant、Share Shell 与运行时身份,使用 static_page.py update(以及需要时的 update_progress / publish_verified)写回原页。禁止 new_page、new_asset_page、upload 创建替代链接,也不需要再次查询 templates。若 chart_edit.py 返回 LEGACY_PAGE / NO_RENDER_JS_MARKER,而用户已明确要求修改本人页面并保持原链接,则必要的技术性结构升级已获授权:立即按 workflows/edit-existing-chart.md 的 legacy fallback 下载、最小重建、浏览器预检并 update 同一页,不得二次询问是否升级,也不得停在本地 HTML。只有缺失信息会改变业务语义时才询问。若服务端返回 FORBIDDEN,停止写入并转入下述 Fork 路径,不得伪造 is_page_admin。mode="fork":当前详情明确 can_update_in_place=false,或该页是不可直接写入的 source_template。依次执行 templates(recommend="all") → new_page(mode=fork, source_template_id=<interpret 返回>) → fork_prepare;templates 只补齐范式池凭据,不能覆盖 interpret 已绑定的来源。可信权限字段由服务端 getPageDetail 返回:can_update_in_place 与 access_role=owner|page_admin|reader。客户端不得相信调用参数里自报的 is_page_admin;旧服务端尚未返回 capability 时,只允许尝试写回 interpret 绑定的同一个 page_id,并以 updateStaticPage 的 owner/page-admin 鉴权结果为准。
Fork 路径在决策绑定前禁止 new_asset_page、build_dashboard、bespoke upload 或任何 regenerated page;不得改判 unmatched 或偷换来源。只有 fork_prepare 明确返回结构化不可复制错误后,才允许评估降级,并显式声明 page_context_mode=regenerated 与 source_page_context_inherited=false。
当父任务提供 qbs_qbv_handoff_v1 文件时,不再执行 begin,而是:
python scripts/trace_context.py beginHandoff '{"handoff_file":"D:/.../handoff.json"}'
python scripts/qbs_handoff_adapter.py evaluate '{"handoff_file":"D:/.../handoff.json","qbv_job_id":"qbvjob_xxx","qbv_job_file":"D:/.../job.json"}'trace_context.py 原样复用 QBS 的 task_id + turn_id;Adapter 校验可选 qbs_computation_capsule_v1,并在发现对应 qbs_qbv_job_v2 时确定性把 Job 从 queued 写为 running。QBV standalone 没有该 Job 时为无副作用 no-op:
coverage=covered:禁止再次调用 resolve_asset_data 或其它 QBS 工具重算 covered_roles;直接消费胶囊里的资产映射、合同、artifact、字段映射、结论和收据,然后继续 QBV 页面 SOP。若返回 next_step=templates,下一次工具调用必须是 templates,不能回到 QBS 重算或以无工具的最终消息结束。coverage=partial:只允许通过 qbs_bridge.py 补 missing_roles,不得重复已覆盖 role。coverage=unusable:无损回退本节原有 Trace → qbs_bridge → 路由流程,不得降低验证门禁。formula_runtime_action=register_exact 时:把 formula_runtime_contract.formulas 按原顺序、原字面注册为 Formula Package,并按合同中的 reads 首次查询;禁止缩写指标名、合并公式、重新推导或再次调用 QBS 验证 covered 公式。fingerprint、左值或 reads 校验失败时按 coverage=unusable 安全回退,不得注册被篡改合同。旧 Handoff 没有 formula_runtime_contract 时保持原 standalone/兼容流程。这里跳过的只是本轮重复计算。若 Handoff 带有 render_mode=validated_snapshot,缺少实时 formula runtime contract 不构成阻断:继续 templates → recover_snapshot/compose_page → publish_verified → 公网验收。direct/fork/unmatched、本人原位更新/他人复制、Grant/Package 注册、运行时首次查询、页面构建、Card Runtime、发布和公网验收仍由 QBV 完整执行。QBS Job 只做旁路审计:publish_verified 同时取得 published=true + verified=true + page_id + public_url,或 direct_deliver 取得字段一致的强终态 direct_finalize contract 后,会自动写回 completed;无法继续且确定终止时执行 python scripts/qbs_handoff_adapter.py fail-job '{"qbv_job_id":"qbvjob_xxx","qbv_job_file":"D:/.../job.json","failure_code":"<CODE>","retryable":true}',不得手改 Job JSON。用户直接使用 QBV 时没有 Handoff,继续走原 SOP,不依赖 QBS 胶囊。source_skill_id=null + source_skill_id_status=unavailable 是合法审计状态,不得阻断页面流程,也不得猜测历史 skill_*。
用户仅输入一个可唯一识别的 A 股名称/简称/代码,或要求分析一只 A 股并给出可分享页面,且没有定制栏目/版式、指定额外指标/公式/图表、对比、多标的、指数或港美股要求时,走此固定快速通道。先按 guides/answer-first.md 取得 QBS 完整画像证据并发送非终止业务分析,随后同轮执行下列命令;不先搜索模板、不额外自建页面、不重复创建通用 Job。明确不要网页或具体字段查数不触发裸资产默认建页:
python scripts/static_page.py new_asset_page '{"task_id":"task_xxx","asset":"贵州茅台","user_query":"分析贵州茅台","reply_mode":"page_followup"}'该命令调用服务端固定场景,并在内部读取 SHA256 绑定 evidence、生成前五个数据章节、上报终态和清理临时文件。数据章节按有数据才生成表格、整篇最多五表;计算维度以 stock profile 的稳定画像维度为主证据、有效收盘价 CSV 的日涨跌/均线/价格位置为补充,两路均无可核验字段时才整节省略,且后续可见章节自动连续编号。消息面章节暂不输出。成功结果包含 agent_reply_markdown_draft + agent_summary_request:草稿第一至第五章就是交给当前 Agent的完整可见证据,第六章只有唯一 summary_marker。Agent必须结合本轮真实用户问题,用自己的语言直接回答用户目的,只引用草稿已有数据,提炼结论和关键依据;走势类问题使用条件式判断,财报点评聚焦报告表现,其他问题同样按原意组织,不需要关键词分类器或专用生成器。完成后只替换 marker,不改前五章、免责声明和最终链接块,不运行 validator 或其它工具,立即发送完整 Markdown。公开链接和“若效果不满意,页面可进一步升级”仍是最后两行。CSV 单项失败只删除对应字段并写 warning;完全没有可核验证据或草稿生成失败时 fail closed,不得退化成一句链接或重复调用。后续若用户要改这张自有页面,继续使用 update 保持同一个 page_id / URL。
不满足上述窄条件时,只运行一次 scripts/static_page.py templates。它调用统一 public 列表,由服务端完成官方精选+社区的去重、排序和分页;不要再手工重复调用。返回值是 item_count + 覆盖全部候选的 items_summary(不再是原始 items 全量打印),完整候选落盘在 full_result_file;正常路由判断只需要读 items_summary,不需要也不应该去读 full_result_file。
templates 一旦给出精确命中,普通渠道的下一条用户可见消息必须立即发送现成 download_url/public_url,中间不允许任何工具调用。推荐文案:已直接命中现成活页:[标题](URL)。我继续核对实时数据并补充分析。;若 agent_reply_hint.delivery_policy.emit_intermediate_url=false(即 feishu-group),禁止发送该 URL,直接继续。feishu-group 不发链接而是立即运行一次:python scripts/static_page.py direct_deliver '{"task_id":"task_xxx","page_id":"page_xxx","template_revision":"sha256","dimension_check":{"coverage":[{"dimension":"用户维度","covered_by":["card_required_outputs:真实输出"]}]}}'。标题和简介只能作辅助证据;每个维度至少需要 card_required_outputs,或由 runtime 合同派生的 page_context.primary_outputs 权威证据。new_page、不注册、不 fork、不研究脚本源码、不先跑 --help。direct_deliver 的公式结果固定为 summary;grant 完整结果只写 %TEMP%,最终回复不得暴露本地路径或凭证。agent_reply_contract.terminal=true 且 operation=direct_finalize 才允许最终收口;失败时说明具体错误,不得用已发送的链接绕过终态门禁。回复模板和 page_context 沿用原页。direct_deliver 会返回真实 contract、草稿、校验参数的 %TEMP%\qbv_<完整 task_id>_* 文件路径及 reply_validation_command。只把 Markdown 写入返回的 reply_draft_file,执行返回的命令一次;valid=true 后立即最终回复,禁止再次校验、运行 --help、扫描临时目录或继续搜索 memory。成功校验会统一清理 contract、draft、params 和 grant 临时结果。先运行 new_page,传 routing_decision:{"mode":"fork","source_template_id":"page_xxx","reason_code":"same_paradigm_different_asset","borrow_mode":"inherit"}。inherit_augment 用于模板结构可沿用但缺分析维度;compose 用于合同无法逐项继承、但布局/样式/渲染函数/公式思路或 Grant 形状仍可借鉴。
fork_prepare 是一次性 task 绑定:重复执行返回 FORK_ALREADY_BOUND;确需整体重建必须传 force_rebuild:true + rebuild_reason,同 task 禁止换来源模板。
fork_prepare 返回 publish_command 后 即进入发布收敛阶段:只填写返回的 review 文件并执行该命令,禁止读取 scripts/*.py、运行 --help 或探索 publish_workflow.py / fork_runtime_contract.py 实现;命令失败只按结构化错误修正输入。已创建首链时必须完成 terminal 或明确失败收口,不得让进度页长期停留在 running。
inherit_augment 向 fork_prepare 传 augmentation_spec,新增 package/grant 角色与来源角色物理隔离。新增公式必须通过 QBS 验证,marker 必须恰好出现一次且输出必须被实际渲染。
compose 先运行 intent_profile 做 user_term/platform_dimensions/method_terms 三层映射,再用 research_templates 提取 credential-free 的栏目 HTML、CSS、渲染函数及合同形状,最后 fork_compose 提交借鉴清单。收据及 SHA256 绑定后才允许发布;全部 original 的零借鉴 Compose 被拒绝。 fork_compose 必须传 borrow_plan.modules(不是顶层 borrowed_refs),并逐项认领 intent profile 的每个 user_term;优先复制 research_templates.templates_summary[].fork_compose_example 后修改,遇到 COMPOSE_BORROW_PLAN_REQUIRED 必须按返回示例重试,不得停在 running 进度页。
Compose 参数必须一次写完整:intent_profile 至少传 {"task_id":"task_xxx","asset_scope":{"kind":"sector","name":"目标资产组","market":"A股"},"dimensions":[{"user_term":"实时行情","platform_dimensions":["close","pct_chg"],"method_terms":["横向比较"]}]};research_templates 传 {"task_id":"task_xxx","template_ids":["page_source"]}。任一结构化错误若返回 example_intent_profile、example_research_templates 或 fork_compose_example,必须直接复制该完整示例后修改并重试,不能逐字段猜测。 - 资产替换的职责分工:Agent 说清楚"换成哪只标的",脚本负责"这只标的在页面里写成什么样"。来源主资产由脚本从模板公式词频 + 标题推导,代码的实际写法(SH600900 / 600900.SH / 裸 600900)由脚本扫描来源 HTML 得出,只替换真实存在的写法——不要去猜来源 HTML 里代码写成什么样,你看不到那个文件。多资产/指数类范式推不出唯一主资产时,不得用标题或研究ID拼造 source_asset;只借布局或重组多资产时转 research_templates → fork_compose → compose_page,真正单资产替换才补经核验的来源身份。asset_replacements 仅作可选覆盖。替换后主资产若仍有残留,在写出工作 HTML 前就返回 FORK_SOURCE_ASSET_RESIDUAL,不会等到发布后才发现。
Agent只在 fork_prepare 生成的 review_update_params_file.decisions 中填写 required_decisions 声明的业务决策:规则性同业矩阵填 target_slots,复杂跨资产公式填 target_formulas,标签替换填 page_label_replacements。decisions 已按角色预生成嵌套占位骨架({"roles":{"<role_id>":{...}}}),只需要在骨架里补全空值,不要新增/改写顶层字段,也不要把 required_decisions 里的扁平 decision_id(如 roles.package.package_001.target_formulas)当成提交用的 key。禁止直接编辑标准 fork HTML/review。
Grant按来源角色完整继承 kind/query_type/fields/dimensions/window_days/result_mode 与 CSV/inline 合同,只允许自动修改 manifest 声明的资产范围字段;其他变化必须填写 contract_change_reason。
继承 Grant 的数据级失败可降级并继续发布存活角色;鉴权/配额/协议等系统级失败仍阻断。若页面仍用 queryDataGrant 无条件消费失败 Grant,返回 GRANT_DEGRADATION_UNSAFE,不得用空凭证假降级。
先运行 fork_prepare 返回的 review_update_command;只有 review_state.status=complete 且生成 review receipt 后,才运行 publish_command。发布器从同一 canonical package/Grant 合同派生 QBS 验证与注册,自动检查 required outputs、公式左值、reads、PE/PB 水位公式具有明确算法与正整数窗口、Grant fingerprint、Marker 唯一性与 Card Runtime 结构,并让一次注册结果扇出到页面/Card全部位置。
fork_manifest_v2 禁止手工传 packages、grants、Marker 或完整 workflow JSON,出现 MANUAL_RUNTIME_BINDINGS_FORBIDDEN 时回到生成的 publish plan,不要写临时替换脚本。v1 prepared task 继续按旧接口发布。
这不是建议——publish_verified 服务端会按 fork manifest 里的凭证数量强制核验:手工分步调用 publish_verified(task_id, page_id, html_file, source_template_id, fork_manifest_file, validation_receipt_files) 只有在这个页面零凭证(纯静态改造)时才会放行,否则直接拒绝并返回 error:"PUBLISH_WORKFLOW_REQUIRED";出现该错误时改走 publish_workflow.py,不要绕过。
回复 = 回复模板格式 + 自己的新链接(数值同样用自己的包/grant query 填)。
items_summary 调 new_page 时传 routing_decision:{"mode":"unmatched","closest_template_id":"page_xxx","reason_code":"required_capability_missing","reason":"候选缺少用户要求的核心能力"};存在候选却只因标的/范围不同而判 unmatched 会被提示改走 fork。记录成功后继续 build_dashboard / bespoke 自建 → 其余同 ②;feishu-group 同样不发送进度链接。后续追问:自己的链接 →
update同page_id;命中的官方/社区链接要改 → 只能转 ② fork 成自己的链接后再改。
trace_context begin 后先 QBS 完整业务首答,再 new_asset_page(reply_mode:"page_followup"),验收后补链接;宿主不能中途显示首答时用默认完整终态回复。templates 查询官方精选+社区命中池;direct 直接用列表 URL + revision,fork 才读取和改写模板详情。embedded-card-v1:页面内嵌 <template data-qb-card-template> + data-qb-card-manifest + QBCardRuntimeV1 runtime),供官网卡片流在空白宿主中独立 hydrate。静态首帧 card_snapshot_url 由 skill_server 按 artifact hash 生成,是页面封面的唯一来源(整页缩略图能力已下线)。按 guides/essence-cover-card.md 生成;已发布页优先用 preserve_visual:true 只升级协议。完整重建必须显式传 visual_contract,否则 CARD_VISUAL_REQUIRED 停止;用 verify_page.mjs --card-runtime-only --require-card-visual-contract 验收新 artifact。卡片必须官网浅色系、固定信息骨架、可变核心可视化;不再用旧的 ?cover=1 URL 模式。workflows/dashboard-end-to-end.md,用 build_dashboard 生成声明式实时看板。guides/bespoke-page.md 写 bespoke 主体 HTML,并用公共 shell 编译成自包含页面。workflows/edit-existing-chart.md +
scripts/chart_edit.py,只动被要求的那一处、不重新验证/计算页面上其它无关系列;只有目标页面是 legacy
(chart_edit.py inspect 判定,多为本次改动之前生成的老页面)或改动本质上要求整页重算/换版式,才落回
下面的整页重建。scripts/retrofit_share_shell.py,再 static_page.py update 保持同一个 page_id / URL;正式 update 应传具体 change_note,版式变化显式传 change_aspect:"layout",其它类型可让服务端推断。/embed/live-page-header iframe 托管,活页 Parent Bridge 只执行刷新、收藏、分享、认证导航和移动 WebAgent 动作、页面问题携题自动发送并校验 qb-live-page-header-v1 / qb-web-agent-v1;官网 WebAgent Preview 注入 qb-live-page-embed-context=webagent-preview 时不得加载页头或预加载收藏 iframe。官网只改页头视觉不要求逐页刷新;Parent Bridge、通信协议或能力契约变化才提升 revision。feishu-group 看到 delivery_policy.emit_intermediate_url=false 后禁止发送任何非终态 URL,只在 validator 通过后发送 terminal contract 的 playground public_url。进度页仍用 update_progress 和 publish_final 更新同一 page_id;未显式传 change_note 时,版本修改描述按“状态 + 中文阶段标题 + 用户可见 message”自动生成,正式发布版本默认记录“完成发布:正式活页内容已发布”。agent_reply_template 指向本技能 reply-templates/ 下的回复骨架。reply-templates/ 是 Agent 最终回复格式,不是活页 HTML 页面模板;不要和在线 templates / template API 混用。agent_reply_template)活页用同级 page_context 描述用途/模块/输出,用 agent_reply_template.template_ref 指向 reply-templates/ 的 Markdown 骨架。字段契约、hybrid 规则和发布继承见 tools/static_page.md。
page_context 不得包含实时数值、api_key、signature、Bearer token 或本地路径;fork 后必须按最终页面重建,direct 才沿用原页。agent_reply_hint.terminal=false;new_page/update_progress 也不是终态。成功的 new_asset_page/direct_deliver/direct_finalize/upload/update/publish_final/publish_verified 可返回 agent_reply_contract.terminal=true;其中 new_asset_page 返回含唯一综合观察 marker 的 agent_reply_markdown_draft 和面向当前 Agent的 agent_summary_request。task_id/page_id 进入 waiting_input,用户回答后继续原任务;不要重新建 Trace 或首链。feishu-group 的 waiting hint 不含 public_url,提问时也不得附带进度链接。fork_prepare 绑定来源和 manifest,最终 publish_final 保持首链 URL、移除来源凭证并保留必需栏目/输出/Card Runtime;详细门禁见 workflows/new-session-paradigm-routing.md。build_dashboard;v2只填写生成的 review-update 决策文件,依次运行 review_update_command 和 publish_command。只有旧 v1任务继续使用手工 fork_validate 路径。task_id 的进度从 package_register 起必须传同任务的结构化验证证据:实时页提交 route_receipt、grant_receipts、formula_receipts,且 selected_routes 必须逐项对应实际注册凭证;自由文本 validation_not_required_reason 不再放行。纯静态内容只能用 static_content_only;资产实时探测全部数据级失败时只能凭 live_data_route_receipt_v1 使用 static_after_live_probe。new_asset_page 传本地参数 reply_mode:"page_followup" 获取短交付草稿;不能中途显示首答时省略参数获取完整草稿。参数不是首答送达证明,两种模式仍走相同公开验收及宿主实际回复校验。最终回复只允许把 agent_reply_markdown_draft 的唯一 summary_marker 替换为 Agent撰写的综合观察(短交付模式仅一句页面说明,不新增数值或风险结论);不得改写、删减或重排其它内容,也不得把 marker 发给用户。综合观察首句直接回答本轮用户目的,后续只选最相关证据解释,避免复述全部五章;没有足够证据时明确说明边界,不得补造事实。该分支不返回 evidence 路径或校验命令。其他终态回复必须按回复模板输出并且只能使用 contract 的 public_url;feishu-group 下该字段必须是 https://www.quantbuddy.cn/playground/<owner>/<page_id>。**只要终态回复包含 public_url,必须把 可分享实时活页:[{public_url}]({public_url}) 作为最后倒数第二行,最后一行固定为“若效果不满意,页面可进一步升级”;链接不得在正文、章节或免责声明中提前出现。**一般模板依据 reply_render_policy 与 reply_data_availability 删除结构性不存在的字段、整列、整行和空可选章节。single_stock_deep_dive_v1 还必须读取 SHA256 绑定的 reply_data_evidence_file,保留全部七节标题,有数据的模板字段全部输出,整节无数据使用标准说明;只有有效结构中的偶发缺值才写 --。若 delivery_policy.max_markdown_tables 存在,整篇不得超过该表格数,超出的结构改用列表或行内文本且不得丢数据。validator 返回 valid=true 后原样发送 validated_markdown,不得再次压缩或改写,也不得暴露原始托管 URL、本地路径、凭证或内部日志。new_asset_page 外,最终回复前只运行一次发布器返回的 reply_validation_command。reply_validation_env 是进程内执行专用值,CLI 与持久化报告只允许返回 [REDACTED] 和 reply_validation_env_keys,禁止输出真实凭证。若发布时显式设置了 QBV_API_KEY,validator 命令必须继承同一个现有环境变量;未显式覆盖时由 config.json/config.local.json 解析默认账号,发布器返回中不携带默认配置 key。禁止把 key 拼进命令串或另写参数文件。validator 必须读取发布器生成的 contract_file + contract_sha256,不得手工重建精简 contract。direct 使用 direct_deliver 返回的完整 task ID 路径和命令,成功后自动清理。valid=true 后不再执行任何工具调用。new_asset_page 会核对同轮公开版本与实际回复;仅在不可变正文及结尾逐字匹配时,宿主可移除多余开场白并发送校验后的正文。正文数据被改写、摘要占位未替换、重复正文或追加尾注均不能视为交付成功;不要依赖宿主修正业务结论。waiting_input checkpoint。本技能运行时自包含:注册/生成/发布只凭本技能 config.json 的 api_key。但注册公式包前,每组公式必须先在 quant-buddy-skill 里用 runMultiFormulaBatchStream 跑通确认出数;服务端试读只是兜底,不替代这一步。
如果当前环境没有 quant-buddy-skill,Agent 不要跳过验证或直接注册公式包。
普通已安装 skill 用户先检查全局 skills;缺失时运行安装命令,已安装但需要刷新时运行更新命令,二选一,不要连续执行:
npx skills list -g --json
# 未安装时
npx skills add pseudo-longinus/quant-buddy-skills -g --all
# 已安装、需要刷新时
npx skills update pseudo-longinus/quant-buddy-skills -yEPERM 报错,在 add 命令末尾追加 --copy 重试。add --all / update 覆盖当前 quant-buddy-view。QBV 解析活动 QBS 的固定优先级是 QBS_SKILL_ROOT、同级 quant-buddy-skill/、同级 quant-buddy-skill__skillhub/;以 scripts/call.py 存在为准。不得用 glob/递归扫描,也不得把 quant-buddy-skill-backup-* 当成可运行 skill。config.json.api_key 或 QUANT_BUDDY_API_KEY 可用;只报告“已配置/未配置/鉴权成功或失败”,不要打印 key 或完整 config。若鉴权失败,停下来说明 blocker,不要继续注册公式包。static_content_only。资产实时页面必须通过 qbs_bridge.py resolve_asset_data 完成统一探测;只有 required_roles.formula 非空时才运行公式验证,普通行情、估值和财务不得为了触发公式包而改写成公式。推荐让两个 skill 同级安装,便于验证公式和迁移旧公式包凭证:
<skills 目录>/
quant-buddy-skill/ 或 quant-buddy-skill__skillhub/ ← 探索 / 公式验证(runMultiFormulaBatchStream、confirmDataMulti)
quant-buddy-view/ 或 quant-buddy-view__skillhub/ ← 本技能:注册 Formula Package / Data Grant、生成看板、发布旧凭证迁移见 tools/formula_package.md。
固定页面先查在线范式卡;direct 用 direct_deliver,fork 才下载和改写来源 HTML。不要从本地历史样板或低质骨架起步。
| 类型 | 展示名 | 入口 | 什么时候用 |
|---|---|---|---|
| 单股快页 | A 股个股综合分析 | scripts/static_page.py new_asset_page | 简单分析一只 A 股并返回页面;无定制/对比/额外指标要求 |
| 页面模板 | 官方精选 + 社区 | scripts/static_page.py templates | 其他固定页面形态;direct 直接交付,范围不一致才 fork |
| 回复模板 | Agent 回复骨架 | reply-templates/ | 活页 metadata 的 agent_reply_template.template_ref;用于约束 Agent 最终 Markdown 回复格式,不生成 HTML |
| 封面组件 | 宽宝活卡 / 精华卡 | guides/essence-cover-card.md | 独立 4:3 embedded-card-v1 artifact;按指南实现和验收 |
| 通用流程 | 标准实时看板 | workflows/dashboard-end-to-end.md | 用户要“做成可分享看板/链接”,但没有指定固定页面模板 |
| 增量维护 | 单图表增删改查 | workflows/edit-existing-chart.md | 自己的已发布页面要加/删一条线、改时间窗口、查真实数据——只改一个图表,不是整页重建 |
| 开发指南 | 自定义页面 | guides/bespoke-page.md | build_dashboard 做不出的自定义 HTML/CSS/SVG 页面,或迁移已有 HTML |
| 迁移工具 | 旧页套公共外壳 | tools/retrofit_share_shell.md | 已发布/已生成 HTML 需要去掉旧二维码、旧页头、旧页尾,并保留同一个 page_id 更新 |
| 设计系统 | 活页 UI/UX 系统 | guides/live-page-ui-ux-system.md | 新建或整体重构活页时,选择页面原型、主题 token、字体/密度、可组合模式和响应式转换;统一体验底线但保留页面身份 |
| 维护指南 | 浏览器批注与整页 UI refinement | guides/browser-feedback-refinement.md | 用户针对已有自有页面的字体层级、间距、章节导航、sticky/折叠、响应式或分享交互提出修改;保持同一 page_id、runtime 合同和页面视觉身份 |
new_asset_page;其他量化场景也先答,再匹配对应在线范式,范围不一致才 fork。详细页面契约由服务端固定场景或模板/构建脚本门禁,不在此重复。package_id/grant_id/signature;必须验证并注册当前用户凭证。assets/share-shell/;分享壳、海报、Card Runtime 和迁移细则分别读取对应 guides/,不要手写重复组件。unmatched 自建前必须读取 guides/self-build-quality.md,按用户问题选择关键价位、排名对照、趋势或研究叙事的内容结构,再用默认生成器/适用的 bespoke 组件实现。禁止把无模板命中降级成等权碎卡片、小字滚动正文或技术字段堆砌。数据验收和视觉验收分别通过才可交付。update 保持 URL;published template 用 template 判定,除非用户明确维护原模板,否则只读复用或 fork。实时页可使用 Formula Package 或 Data Grant:公式包在 HTML 内嵌 package_id + signature,打开时调用 queryFormulaPackage;数据授权内嵌 grant_id + signature,打开时调用 queryDataGrant。两类凭证可以同页混用,彼此独立取数;底层数据更新后无需重建页面,访问者打开或刷新即可取得最新数据。spec 不需要写 mode 字段。
package_ids 与 grant_ids 分别记录两类凭证;任一通道都可以单独支撑实时页,也可以同时存在。queryFormulaPackage / queryDataGrant 对页面域名 pages.quantbuddy.cn 放开 CORS,且两类 signature 都是允许嵌入页面的公开取数能力令牌。https://,config.json 的 endpoint 也必须是 https://,否则浏览器会以 mixed-content 拦截取数。当前 endpoint 已是 https://www.quantbuddy.cn/skill。脚本 scripts/data_grant.py 已可用,
build_dashboard与assets/data-kernel.js已支持 grant 面板,与公式包同页混用。契约见 tools/data_grant.md、服务端设计见skill_server/docs/dataGrant相关文档/数据授权-技术设计文档.md。选凭证类型时按下面取舍表对照。
数据授权与公式包共用同一套签名免 key 心智:页面 HTML 内嵌一个凭证(公式包是 package_id + signature,数据授权是 grant_id + signature),访问者打开页面时免 key 实时取数。区别在钉死的是什么——公式包钉死"一组公式 + 读取模式"(会重算,走 SSE);数据授权钉死"一次平台直取数请求"(无重算,普通 JSON)。
取舍规则(选凭证类型时对照):
| 页面要展示的数据 | 用哪条通道 | 凭证 |
|---|---|---|
| 算出来的指标 / 回测净值 / IC / rankIC / 时序 / 自定义公式口径 | 公式包 | package_id |
| 平台白名单直取的行情 / 估值 / 财务 / 资金流(收盘价、涨跌幅、PE/PB…) | 数据授权 fast_query | grant_id |
| 个股预计算画像卡(估值/财务质量等维度画像) | 数据授权 stock_profile | grant_id |
| 已上线维度分的 TopN / 榜单 / 异动名单(动量反转、趋势结构…) | 数据授权 composition_select | grant_id |
scripts/qbs_bridge.py resolve_asset_data @params.json,显式声明 required_roles.profile/snapshot/report/formula 与 optional_fields。路由按 stockProfile → fast_query(snapshot) → fast_query(report) → 必需公式 执行;普通行情、估值和报告期财务优先 fast_query,不得为了触发公式包而改写普通字段。resolve_asset_data 探测前不得依据 Agent 对公司上市状态、所有权、资产名称或市场惯例的记忆推断平台是否可取数,也不得据此提前选择代理资产、静态说明、数据通道或页面结构;未验证前只能说"我先验证平台资产映射和数据可用性"。success:true 不代表页面数据完整。目标资产必须存在,required fields 必须有有效值,且不得出现在 asset_errors / field_errors;optional field 失败只记 warning。部分核心角色成功返回 incomplete,不得冒充完整页面。ASSET_NOT_FOUND、DATA_UNAVAILABLE、空结果、目标资产/required field 缺失等数据级失败可以继续下一独立通道;鉴权、配额、task/session、网络、超时、协议和服务错误必须返回 blocked。只有 live_data_route_receipt_v1 证明所有核心实时角色都已探测且均为数据级失败,才允许 static_after_live_probe;static_content_only 仅限没有资产、市场数据和来源凭证的纯静态内容。selected_routes 与实际 Grant/公式收据逐项对应;禁止自由文本 waiver。new_asset_page 的三份 Grant payload 由服务端固定生成并校验,Agent 不自行注册 Grant;这不免除首答前的 QBS 业务查数和日期校验。首答后再创建快页,页面打开时按 Grant 实时取数。access_dunhe=false(页面绝不返回付费/敦和数据)、CORS/https 协议一致、signature 是公开凭证不打印给用户——与公式包完全一致。@params.json(UTF-8)或 FP_PARAMS/BD_PARAMS/SP_PARAMS 环境变量。publish_workflow.py 根据 review 解析出的最终 package 边界自动调用 validate_package_set,验证与注册从同一个 {formulas,reads,begin_date} 合同派生。Agent负责检查 review 中的公式语义、目标资产和同业映射,不得绕过生成的 plan 单独注册;复杂跨资产公式未审核、required outputs/reads 不一致,或 PE/PB 水位输出没有明确算法与正整数窗口时,发布器在网络调用前拒绝。fork 默认继承来源模板已经声明且能通过 QBS 的水位口径,不强制改成固定250日。runMultiFormulaBatchStream 时,user_query 必须反映当前用户请求和当前资产;若传 task_id 必须为本次新任务。复制示例时不能只替换 formulas,却留下“贵州茅台 factsheet”等旧 user_query,否则后台审计和回放会被污染。scene_tags / paradigm_tags 时,tagging_method 用 manual / migration / unknown;需要 LLM 自动识别就调用 scripts/static_page.py autotag。不要再传 tagging_method:"agent",也不要在 tagging_meta.method 里写 agent。code != 0 时,向用户复述「卡在哪一步(命令名)+ 错误摘要」,不要以空白或纯日志结束。resolve_asset_data 探测);不要等到准备作负面判断时才验证。不得根据现实上市状态、所有权、公司常识、历史记忆或资产名称直觉,推断平台是否可取数,也不得据此选择代理资产、静态说明、数据通道或页面结构。资产库命中只证明 ticker 映射,resolve_asset_data 探测成功才证明对应数据能力;按用户实际需要验证行情/估值、画像、财务或其他数据,禁止为"更全面"无边界扩查。验证结果必须区分资产未映射、接口不支持、字段缺失和额度限制;单个字段缺失、窗口受限或额度限制不得扩大表述为资产不可用。只有工具证据与用户需求直接相关时,才在页面或回复中说明上市/私营、代理或市场身份;未验证前只能说「我先验证平台资产映射和数据可用性」。static_page.py image_upload 获得目标 page_id 下的绝对 https://pages.quantbuddy.cn/pages/assets/...webp URL,再写入 HTML;禁止跨页复用托管 URL。图片必须带明确 alt 与 width/height;首屏和海报目标内不得 lazy,正文下方才可 loading="lazy"。标准 image panel 默认启用当前页大图预览,装饰图才设 zoomable:false;不要用新窗口打开图片 URL。fork 必须按 manifest 的 images[] 上传到目标页并替换 marker,不能保留来源图片 URL。templates 摘要必须覆盖全部候选,落盘失败不能裸奔:items_summary 的条目数量必须等于 item_count(完整候选去重后的真实数量,不是服务端可能未重算的 total),不允许只看其中一部分候选就判定 unmatched;一旦返回 error:"TEMPLATES_PERSIST_FAILED" 或 error:"TEMPLATES_RESPONSE_SHAPE_UNEXPECTED"(落盘失败或响应结构异常),必须先向用户说明「范式候选未能完整确认,暂缓路由判断」,禁止在这种不完整信息下判定为 unmatched 走自建,也不得通过重复调用 templates 来补救(每个任务仍然只能调用一次这条硬规则不变);确需重试仅限明确的瞬时网络失败,且只重试一次。publish_workflow.py 在 QBS 验证、注册、图片上传和发布前用假凭证执行 verify_page.mjs --card-runtime-structure-only。正文与 Card 共用凭证时用 marker 数组扇出;每个数组元素仍须全局唯一并在 HTML 中恰好出现一次。禁止空 manifest 凭证;普通 <img> 必须有非空 src,仅显式声明 data-qb-runtime-src 且等待运行时赋值的预览图可以暂时为空;同时禁止注册等价的重复 Card package/grant。new_page 会校验完整候选并绑定路由。fork 必须声明借鉴度,且一经判定不得改判 unmatched;继承不成立时只能在 fork 内降为 Compose。build_dashboard 对 fork/inherit* 禁止整页构建;fork/compose 的完整页面使用 static_page.py compose_page;emit:"panel_block" 仍仅是局部产物。已绑定Compose不得再次全量fork_prepare。fork-local 在本地 file://(origin=null)下用放开同源策略的测试浏览器跑真实取数渲染(security_mode:"disabled-web-security"),布局/占位符/运行时错误/图片/Card Runtime 门禁照常执行;public-smoke 保持浏览器默认安全策略,数据接口 CORS/Failed to fetch/运行时失败仍严格拦截。平台注入的 /webapi/skill/track 分析埋点是 fire-and-forget,其 CORS/网络失败降为 non_core_console_warnings,不再让成功页面发布失败;数据接口(queryDataGrant/queryFormulaPackage)的失败仍是阻塞性核心错误。fast_query / stock_profile / composition_select 数据授权,目标页继续使用同 kind、同 query_type、同响应形状的数据授权。禁止仅因“财务数据通常可走 fast_query(report)”就在 fork 中把来源财务公式包改成 grant,也禁止反向把来源 grant 改成公式包。只有 unmatched / 明确从零重建时才重新做通道选择;此时平台白名单报告期财务优先 fast_query(query_type="report")。data-qb-live-mode="live" 与 data-qb-live-tag="qbs-formula-package|qbs-data-grant";未转换内容保留快照,不为静态声明强行注入属性。本地候选验证后仅更新同一 page_id,失败不覆盖最后成功版本、不创建替代链接;未知写入、恢复失败要明确记录,不能说成成功。首次静态不需要模板fork或Handoff;本流程不引入Block Runtime或全局标签改造。CHANGELOG.md 中最新版本及与问题相关的历史条目;执行页面任务时,当前规则仍以 SKILL.md + workflows/** + tools/** + guides/** 为准。CHANGELOG 可能包含已被后续版本反转或废弃的旧口径,禁止用历史条目覆盖当前规则。参数约定:所有脚本参数是一个 JSON 字符串位置参数(或
@params.json/ 环境变量),如list '{"scope":"test_all"}'。命令行也兼容--scope test_all/--key=value直觉写法(仅简单参数;公式、spec 等复杂结构仍走@file/环境变量以免 GBK 截断)。
| 脚本 | 命令 | 作用 | 文档 |
|---|---|---|---|
scripts/formula_package.py | register / query / list / revoke / refresh | 公式任务包:注册取数能力;query 支持 outputs 与 `result_mode=full | summary |
scripts/data_grant.py | register / query / list / revoke / refresh | 数据授权:把一次 fastQuery/stockProfile/selectByComposition 请求钉死成 grant_id+signature,页面免 key 直取有界数据(取舍见「数据授权 vs 公式包」) | tools/data_grant.md |
scripts/build_dashboard.py | (单命令,emit:"panel_block" 走局部产出) | spec → live 实时取数看板 HTML;局部产出模式只生成带 marker 的图表 <script> 片段,供 bespoke 页面内嵌图表用 | tools/build_dashboard.md |
scripts/stock_comparison.py | apply @params.json | 为 stock_analysis_instance_v1 原生收盘价图并入基准序列、双 Y 轴和数据表;保持 #priceChart 单一 owner,拒绝用通用 panel 二次接管 | tools/stock_comparison.md |
scripts/stock_window.py | apply @params.json | 为 legacy stock_analysis_instance_v1 设置滚动展示窗口;生成受控 HTML 后必须浏览器预检并 update 原 page_id | tools/stock_window.md |
scripts/chart_edit.py | inspect / add_series(支持 axis:"right" 双轴)/ remove_series / set_window / query_data | 已发布页面单个图表的增删改查:只动被要求的那一处,不重新验证/计算页面上其它无关系列 | tools/chart_edit.md |
scripts/compile_bespoke_page.py | (单命令) | 【shell 处理脚本】 bespoke 主体 HTML → 内联公共 share shell / logo / qr-mini / data-kernel 的自包含 HTML | guides/share-shell.md |
scripts/retrofit_share_shell.py | (单命令) | 【shell 处理脚本】 旧 HTML/已发布页面 → 删除旧二维码/旧页头/旧页尾,套入公共 share shell(assets/share-shell/),可原链接 update | tools/retrofit_share_shell.md |
scripts/data_kernel_retrofit.py | (单命令) | 按 QB_DATA_KERNEL marker 或严格旧内核指纹,只替换页面中的 data-kernel;零个/多个命中均拒绝写回 | tools/data_grant.md |
scripts/static_page.py | new_asset_page / templates / direct_deliver / new_page / update_progress / publish_final / publish_verified / upload / update / download / image_upload / image_list / fork_prepare / fork_review_update / fork_validate / retrofit_card_runtime / 其他管理命令 | 简单单股快速返回、范式路由、正文图片、direct 确定性交付、首链进度、分级浏览器门禁和页面发布管理 | tools/static_page.md |
scripts/qbs_handoff_adapter.py | @handoff.json | 校验 QBS computation capsule 的 lineage、合同 fingerprint 与 artifact hash,输出 covered/partial/unusable;不负责路由、ownership、构建或发布 | 本节“从 QBS 并行交接进入” |
scripts/qbs_bridge.py | resolve_asset_data / <quant-buddy-skill tool> @params.json / validate_package_set / validate_grant_set | 统一实时路由探测并继承 QBV→QBS task_id;按最终 package/Grant 合同生成 route/grant/formula fingerprint 绑定收据 | 本节“新会话路由” |
scripts/publish_workflow.py | @publish-plan.json | manifest v2驱动 review/合同预检、package+Grant验证、每role一次注册、多Marker扇出替换和单次 publish_verified;v1 JSON兼容 | tools/publish_workflow.md |
scripts/validate_agent_reply.py | (单命令) | 校验发布器 SHA256 绑定的终态 contract 与 Markdown 草稿,并检查公开 URL、章节结构和敏感信息;可在成功后清理任务临时参数文件 | — |
scripts/verify_page.mjs | (单命令) | 发布前/发布后页面验收:标准三视口、h1、占位符、横向溢出、控制台核心错误;批注迭代可用 --profile ui-refinement、--extra-viewport 与 --min-visible-font-px;范式卡加 --card-runtime 或 --card-runtime-only | guides/browser-feedback-refinement.md |
assets/data-kernel.js | (前端内核,非脚本) | 手搓 bespoke 页共用的「取数 + 清洗 + 容错」一份;内联进页面 <script> 用 | guides/bespoke-page.md |
assets/share-shell/ | (公共组件) | 所有落地页共用的页头、页尾、刷新按钮、分享海报弹层、海报 canvas、复制链接与复制/下载行为 | guides/share-shell.md |
assets/live-card.css | (公共组件) | 范式卡 artifact 的浅色卡片样式源;由 build_dashboard.py 作为 data-qb-card-style 内嵌进 card runtime artifact | guides/essence-cover-card.md |
scripts/card_runtime_retrofit.py | (被 static_page 调用) | 为已发布/官方精选页重建独立 card runtime artifact(embedded-card-v1),可原链接写回 | tools/static_page.md |
guides/essence-cover-card.md | (开发指南) | 页面精华浓缩为独立 4:3 card runtime artifact(embedded-card-v1,空白宿主独立 hydrate),并明确 artifact、范式卡快照与整页封面的职责边界 | — |
三条生产路:固定页面先复用在线模板;标准看板走
build_dashboard(声明式快路);要自定义版式/SVG 的设计页才写 bespoke 主体 HTML。 stock 原生图表 owner 门禁:stock_analysis_instance_v1的#priceChart始终由页面原生 runtime 持有;禁止用build_dashboard.py emit="panel_block"注入第二个 renderer。增加沪深300等基准线时必须使用scripts/stock_comparison.py扩展原生 load/render/table 生命周期。 stock legacy 时间窗口门禁:stock_analysis_instance_v1缺少QBV_RENDER_JSmarker 时,改窗口必须使用scripts/stock_window.py apply,不要生成或执行output/*.py临时补丁。转换后必须本地浏览器预检、static_page.py update同一页并做公网验收。 数据层统一调assets/data-kernel.js(QB.query取数、QB.series/lastValue/topValues解包清洗),别再每页各抄fetch/解包、各踩"假 0/缺口"的坑。见 guides/bespoke-page.md。 发布前用scripts/verify_page.mjs <html_file> --require-browser检查桌面与 390px/320px 移动端,确保无QB_SHARED_/replace_with_signature/pkg_replace残留、存在<h1>、无关键横向溢出和核心取数脚本错误。页面声明stock_analysis_instance_v1且在data_sources.benchmark_series或comparison.benchmark_series配置基准时,脚本还会在 runtime pending 归零后等待稳定窗口,并强制检查最终 canvas、个股/基准两条有效图表序列、共同交易日、基准右侧 Y 轴、双 Y 轴和数据表列;同时静态拒绝原生 runtime 与 panel_block 共同接管#priceChart。不能只因 runtime ready 或首帧短暂出现就视为对比页已交付。含范式卡 artifact 的页面加--card-runtime(或--card-runtime-only)验收 artifact/manifest/独立 hydrate。Playwright 不在默认 Node 搜索路径时,可用QBV_PLAYWRIGHT_MODULE_ROOT指向包含playwright/的node_modules根目录;可用CHROME_PATH指定浏览器可执行文件,未指定时自动发现 Chrome/Edge。若机器没有 Playwright/Chrome/Edge,脚本会明确标记为static-only,不能当完整浏览器验收。
注册、Fork改资产/窗口前必读 分钟行情支持范围与越界提示:A股/美股股票起于2026-05-13,国内期货起于2005-01-04,港股股票2026-05-20,国内指数2026-08-13;美国/香港指数及期货暂不支持。全窗口早于起点不注册授权;部分覆盖先提示并在页面标注,不静默裁剪原始payload,不宣称完整覆盖。页面若展示30分钟K线,必须标注其由1分钟Grant派生,不能把页面聚合结果写成上游原始30分钟数据。
当前/最近完整日分钟用 fast_query_minute Grant(保留 fields);历史跨日分钟用 fast_query_minute_range Grant(全列,无fields/format/remove_nan)。绝对窗口或-70至-1自然日offset二选一,不含市场今天。详见 tools/data_grant.md。
历史分钟CSV是 trade_date/timestamp/行情列长表,内核读取实际表头,不走日频宽表。绝对窗口固定、offset授权滚动;页端持有Grant而不是临时CSV地址,不称历史分钟为“当前盘中”。
连续期货:单日只显示所选trade_date的具体合约/状态;日频窗口与跨日分钟按trade_date解释换月事件,夜盘不能拿UTC自然日匹配。inferred不等于独立实时核验,附加warnings不影响行情成功或作为发布失败理由。
config.json:填入 api_key(从 https://www.quantbuddy.cn/login 获取)。可建 config.local.json 覆盖 endpoint / api_key 等(不入库)。环境变量 QUANT_BUDDY_API_KEY 仅在 config.json / config.local.json 都没有 api_key 时兜底,不是常规配置方式。本技能所有脚本的 main() 都支持工具调用参数里的 api_key 字段临时覆盖(仅当次调用生效,优先级最高,见 scripts/common.py::configure_trace_context);同一优先级还有环境变量 QBV_API_KEY,用于"手上是一份现成的 @file 参数(比如 publish_workflow.py @publish-plan.json,该 plan 文件按设计不含凭证)、不想现改这份文件塞 api_key"的场景——不要为了临时换 key 去设 QUANT_BUDDY_API_KEY,那个只在 config.json 为空时才生效,config.json 已有默认 key 时设它不会有任何效果。
普通K线活页使用 build_dashboard 的 type:candlestick 面板,直接绑定同一份OHLCV Grant,绘制蜡烛、成交量和均线;只有明确只要PNG/图片时才接受 renderKLine 图片artifact。
K线页若包含MA/均线,必须放在同一个 candlestick 面板的 overlays 中,按日期与OHLCV对齐;禁止用独立 line/number 面板冒充K线叠加。
© pseudo-longinus, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 138 other files (scripts, references, assets) in skills/quant-buddy-view of pseudo-longinus/quant-buddy-skills.
Open the folder on GitHubat commit 6c25f2e
Quant Buddy Page Publisher next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Quant Buddy Page Publisher this skillpseudo-longinus/quant-buddy-skills | 191 | — | ~12k | Automated safety check: Pass | MIT | |
| Eastmoney Market DataHKUDS/Vibe-Trading | 35k | — | ~1k | Automated safety check: Pass | MIT | |
| SEC EDGAR Filings FetcherHKUDS/Vibe-Trading | 35k | — | ~1.4k | Automated safety check: Pass | MIT | |
| WorldQuant BRAIN Alpha ResearchQuantML-Research/wq-alpha-research | 405 | — | ~4.9k | Automated safety check: Pass | None | |
| A-Share Daily Reviewqusong0627/QuantMind | 1.7k | — | ~1.9k | Automated safety check: Pass | AGPL-3.0 | |
| Senpi Market PulseSenpi-ai/senpi-skills | 134 | — | ~4.3k | Automated safety check: Pass | Apache-2.0 |
HKUDS/Vibe-Trading
Index of Eastmoney's free, no-token market data interfaces for China A-shares and Hong Kong stocks: fund flows, dragon-tiger lists, margin trading, reports and news.
HKUDS/Vibe-Trading
Fetches U.S. SEC EDGAR data: resolves tickers to CIK numbers, lists recent 10-K, 10-Q and 8-K filings with document URLs, and pulls XBRL financial series.
QuantML-Research/wq-alpha-research
Chinese-language playbook for WorldQuant BRAIN alphas: choose fields, write expressions, backtest, diagnose check failures, tune turnover, submit and build portfolios.
qusong0627/QuantMind
Produces a post-market review report for the China A-share market from local QuantDB data, news sentiment and model signals, ending in a next-day direction call.
Senpi-ai/senpi-skills
Produces a structured cross-asset read of the day across crypto, equities, indices, commodities and macro, using a bundled engine for data and ending with a signals brief.
mingli30119/stock-analysis
Turns a single request like 'analyze this stock' into a full research report, pulling 30-plus data sources into an interactive HTML page with charts.
pseudo-longinus/quant-buddy-skills
Queries A-share, Hong Kong and US stock quotes, valuation and financial data through the Quant Buddy API, and runs screening, factor calculation and strategy backtests.
Works with
Categories
Publishes quantitative analysis or existing images, HTML and PDF files as shareable Quant Buddy live pages and dashboards, and interprets existing page links. This skill turns verified quant data and formulas into a public, link-shareable web page that pulls live data, such as a single-stock profile, a valuation and financials view, an index movement report, a multi-factor screen or a daily commodity page. It can also host an existing JPG, PNG, HTML or PDF file as a page.
Quant Buddy Page Publisher fits situations like: turning a stock or market analysis into a shareable live dashboard; publishing an existing HTML, PDF or image report as a link; reading a Quant Buddy page link and summarizing its latest data.
Run `npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a claude-code`. Or copy the skill folder (skills/quant-buddy-view in pseudo-longinus/quant-buddy-skills) into .claude/skills/quant-buddy-view in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a codex`. Or copy the skill folder (skills/quant-buddy-view in pseudo-longinus/quant-buddy-skills) into .agents/skills/quant-buddy-view in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pseudo-longinus/quant-buddy-skills --skill quant-buddy-view -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/quant-buddy-view, .gemini/skills/quant-buddy-view, .github/skills/quant-buddy-view and .opencode/skills/quant-buddy-view in your project.
Going by SKILL.md and its folder, Quant Buddy Page Publisher needs JavaScript for the scripts in its folder, the command-line tools its instructions call (python and npx) and credentials named QBV_API_KEY and QUANT_BUDDY_API_KEY. Our summary lists: A Quant Buddy API key in QBV_API_KEY; Python to run the bundled scripts; Network access to the Quant Buddy service.
SKILL.md names 2 domains. In commands or code: quantbuddy.cn and pages.quantbuddy.cn; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Quant Buddy Page Publisher is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 12k tokens (SKILL.md is roughly 48k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Quant Buddy Page Publisher: Eastmoney Market Data (HKUDS/Vibe-Trading, 35k stars), SEC EDGAR Filings Fetcher (HKUDS/Vibe-Trading, 35k stars), WorldQuant BRAIN Alpha Research (QuantML-Research/wq-alpha-research, 405 stars) and A-Share Daily Review (qusong0627/QuantMind, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pseudo-longinus (a GitHub user) maintains it in pseudo-longinus/quant-buddy-skills, which has 191 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 7, 2026.
Source: pseudo-longinus/quant-buddy-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.