Data Analysis Skill
AI-native 结构化数据分析:一套通用 0+9 workflow + 可插拔 domain packs。本文件是入口(域检测 + 关键规则 + 指针);详细做法按需从 references/ 和所选 domain pack 加载。本 Skill 保持 domain-neutral——任何 domain 知识都在 domains/<name>/,本文件不出现具体 domain 名。
How it works — 0+9 workflow
Step 0 的域检测在本文件;Step 1–9 的做法、每步加载什么、产出什么,全部见 references/9-step-framework.md(含唯一权威的 per-step 加载表)。任何分析开始时先加载它。
| Step | 一句话 |
|---|---|
| 0 Domain Detect | 读 resolver → 路由到 domain pack(或 generic) |
| 1 Profile | agent 现写 profiling:列→字段角色、周期/snapshot 判定、算数据 gap |
| 2 Signal Scan | 现写信号扫描(异常 / 显著变化 / 指数对基准偏离) |
| 3 Clarify | 仅当歧义或数据局限挡住诉求时才问(在此把 gap 呈现给用户) |
| 4 Frame | 用 domain framework.md 搭 MECE issue tree |
| 5 Hypothesize | 可证伪假设,挂 domain lever |
| 6 Verify | 现写 pandas 验证 → verdicts.json |
| 7 Decompose | 现写拆解 → drivers.json |
| 8 Synthesize | Pyramid 输出 + domain insight 扩展;默认两份并行:insight_deck.html(HTML deck)+ insight_report.md(1:1 镜像),过 deck_audit 第三闸门(Quick/follow-up 可豁免 deck) |
| 9 Follow-up | 延伸 issue tree 答后续问题 |
全 instruction-based,不预置脚本:Step 1/2/6/7 的代码都由 agent 现写并执行——但写之前先读真实数据 + 所选 domain 的
data-spec/glossary/computation-reference,搞清这份数据自己的字段与周期口径,再据指令生成代码。不预设字段名/周期词(LY/TY/MAT 并非通用)。字段角色映射是 AI 语义判断(读data-spec §1.0)。
Step 0 — Domain Detection(入口决策)
- 读
references/resolver.md(domain-neutral 打分机制)并枚举各domains/<slug>/triggers.md(每个 domain 自带的触发块)。 - 用「用户措辞 / 数据列(Step 1 后) / 项目提示文件
./.data-analysis-domain」给每个 domain 打分。 - 路由:≥2 信号指向同一 domain → 静默路由;歧义 → 按
clarification-protocol.md让用户选;零匹配 → generic 模式并告知。 - 读路由到的
domains/<slug>/README.md,其余槽按 9-step 加载表在对应 step 加载。 - 记
outputs/analysis_state.json::domain_selected,后续轮复用、不重检。
Critical rules(不可破;细节见 references/anti-hallucination.md)
- LLM 绝不算数字。 聚合 / 份额 / 指数 / 拆解 → 一律 agent 现写并执行 pandas;输出里没有 LLM 推导的数字。
- 每个数字引
verdict_id,回溯outputs/verdicts.json。 - 先检测、再澄清。 跑完 Step 0–2 之前不问"要分析什么";默认直接做,事后可调。
- 状态持久化。 每轮先读、回复前更新
outputs/analysis_state.json。 - 覆盖度,不许静默丢叶子。 issue tree(Step 4)里每个数据可行的叶子,在 Step 6 必须 answered 或显式 skip(带原因);"时间不够"不是合法理由。Step 8 critic 校验覆盖。细节见
references/9-step-framework.mdStep 6 覆盖度闸门。 - 默认交付 = deck + report,不是内联对话。 任何结构化数据分析请求,默认走完整 0+9 workflow 并在 Step 8 产出
outputs/insight_deck.html+outputs/insight_report.md(落盘、过deck_audit)——这是默认交付物,不是"可选加分项"。在对话里甩几张表/几段文字 ≠ 完成分析(那是没进 Step 8)。一个聚焦/具体的分析问题(如"看 X 的分布""谁在某段赢")不是"轻量请求"——它照样跑全流程、出 deck。 唯二豁免:① Step 9 follow-up(对已完成分析的追问);② 用户明确要"快速/简短/口头答一下"。豁免时也要在回复里显式说明"本轮按轻量模式、未出 deck"。细节见references/9-step-framework.mdStep 8 +references/insight-templates.md。
Domain packs
一个 pack = 一组通用命名的 .md 槽:triggers(Step 0 域检测触发块)· glossary · data-spec · framework · computation-reference · insight-extensions · context-notes · clarification-extensions · business-rules.md。
槽协议、谁填、三类内容、维护 flow → references/domain-pack-protocol.md(唯一权威)。 生成/维护一个 pack → domain-pack-builder skill。
新增一个 domain
建 domains/<new>/ 填满槽(含 triggers.md 触发块)。本 Skill 及其它通用文件不改——resolver 机制自动枚举到新包的 triggers.md。
v0.9(2026-06-09 deck 闸门对称化):把 HTML deck 从"埋在 Step 8 槽文件里的默认"升级为框架级硬退出条件——Step 8 的加载表产出列、Outputs、Critic、Exit condition 四处统一改为「默认两份并行:insight_deck.html + insight_report.md(1:1 镜像),过 deck_audit.py 第三闸门(与 data_integrity + coverage 同级)」;Quick/Step9-follow-up 可豁免 deck 但须显式说明。修的实测漏点:focused 问题只写了 .md 报告就当 Step 8 完成、deck 静默缺席(根因:没加载 insight-templates.md+insight-extensions.md 两个槽,故 Outputs 段加"先读两个槽"硬提醒)。保持通用层 domain-neutral(deck/audit 为通用概念,设计系统/禁词/字号档/logo-id 全部运行时从 domain 读)。
v0.8(2026-05-30 robustness hardening):新增覆盖度闸门(critical rule 5,叶子不许静默丢弃);Step 2 数据完整性检查(份额加总/嵌入聚合行);Step 7 拆解粒度铁律;多层表头驯服套路;脚本统一产出 outputs/scripts/ + 命名约定 + schema 指纹复用(同 schema 数据重传不重写 loaders);Step 8 强制 insight_report.md 落盘。并从通用层清除残留的 domain 特定痕迹(复位为 domain-neutral)。v0.7:全 instruction-based(移除预置脚本)。v0.6:Skill Creator 规范化。