SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

data-brief

Dados e Análise

Use this skill when the user provides a dataset (CSV, Excel, JSON, SQL dump, or raw text data) and asks for analysis, insights, a data report, a dashboard, or any form of data visualization. Trigger phrases include: "analyze this data", "make a dashboard", "what does the data say", "give me insights", "build a report", "data brief", "data-brief", "data visualization", "帮我分析数据", "做一个数据看板", "给我洞察",

1estrelas
Ver no GitHub ↗Autor: carrielabs

data-brief

数据决策简报生成 Skill


永久约束 — ALWAYS IN EFFECT

以下规则在所有阶段永久生效,不依赖任何支撑文件的加载顺序,不因 Phase 而改变。

① 图表标题必须是结论句,不是描述词
   ❌ "各渠道月度用户增长趋势"
   ✅ "搜索渠道增速是社交渠道的 3.2 倍"

② 所有 ECharts 图表的 data 数组,必须 100% 来自 data_lock.json
   禁止在生成 HTML 时重新计算、四舍五入、或"约等于"任何数字

③ 输出必须是单体 HTML 文件(Self-contained)
   外部依赖仅限:Google Fonts CDN + ECharts CDN
   禁止引用任何本地文件或其他框架

④ N < 30 的数据分组不参与主要分析
   可出现在报告附录,标注"样本不足,数据仅供参考"

⑤ 最终洞察集必须包含至少 1 条负面预警或效率陷阱
   全部正面 = 报告不合格,退回 Phase 3 重新扫描

这个 Skill 做什么

用户给你数据,你输出一份可以直接发给老板或客户的 HTML 数据报告

报告要达到的标准:

  • 每一条洞察,聪明人看了会停顿,不会点头说"嗯,知道了"
  • 每一个数字,都有对比对象,不是孤立存在
  • 每一个建议,明天就能执行,不是模糊的"应该关注"
  • 整份报告,可以双击 HTML 文件在浏览器里完整运行

这个 Skill 的核心设计原则:给 AI 戴最严密的工程镣铐,逼出最高质量的产出。


架构说明(Progressive Disclosure)

本 Skill 的主文件(SKILL.md)只做流程调度。 规则内容分散在支撑文件里,按需加载,不提前读取

文件加载时序(严格遵守):

Phase 1-2:不加载任何支撑文件
Phase 3:  READ ${CLAUDE_SKILL_DIR}/PATTERN_HUNT.md
Phase 4:  READ ${CLAUDE_SKILL_DIR}/INSIGHT_RULES.md + READ ${CLAUDE_SKILL_DIR}/ANTI_AI.md
Phase 5:  READ ${CLAUDE_SKILL_DIR}/REPORT_TEMPLATES.md
Phase 7:  READ ${CLAUDE_SKILL_DIR}/THEMES.md + READ ${CLAUDE_SKILL_DIR}/CHART_LIBRARY.md

不允许在 Phase 1-2 加载视觉文件(会污染分析注意力)
不允许在 Phase 3 前加载 INSIGHT_RULES.md(先找模式,再评判)

9 个执行阶段


Phase 1 · 接收输入与目标校准

做什么: 理解数据是什么,报告给谁看,要回答什么问题。

执行步骤:

1. 接收数据(文件路径 / 粘贴内容 / 描述)
   → 确认数据格式(CSV / Excel / JSON / 文字描述)
   → 确认数据规模(行数、列数、时间跨度)

2. 询问(如果用户没有主动说):
   - "这份报告主要给谁看?" [选项:技术团队 / 业务负责人 / 高管/投资人]
   - "最希望这份报告回答什么问题?" [用户自由描述]
   - "有没有特别想聚焦的核心指标?
     比如:均值 / 总量 / 转化率 / 增长率 / 某个具体字段名
     可以直接说,也可以选「无,你来判断」"
     → 如果用户指定了指标,Phase 2 和 Phase 3 必须以该指标为主轴展开分析
     → 如果用户说「无」或跳过,由 Claude 根据数据分布自主选择最有区分度的指标,
       并在 Phase 2 结束后告知用户:"我选择以 [X] 作为核心分析指标,原因是 [Y]"

   如果用户说"你自己决定"→ 根据数据内容推断受众,记录推断理由

3. 根据受众,确定报告参数:
   受众=技术团队  → 主题:Deep Analyst, 洞察上限:7条, 布局:全局分析
   受众=业务负责人 → 主题:Paper & Ink,  洞察上限:5条, 布局:全局分析
   受众=高管/投资人 → 主题:Swiss Signal, 洞察上限:3条, 布局:单一决策

输出: 一句话摘要,告知用户你将做什么(不等待用户确认,直接进入 Phase 1.5)


Phase 1.5 · 业务上下文注入

做什么: 收集数据之外的信息,防止把已知事件当作"反直觉发现"。

执行步骤:

向用户问一个问题(只问这一个,不展开追问):

"这段数据期间,有什么数据本身看不出来的背景信息吗?
 比如:做了大促 / 上线了新功能 / 竞品出了问题 / 砍掉了某个渠道"

如果用户说有 → 记录业务事件及时间,在 Phase 3 扫描时标注为"排除项"
如果用户说没有 / 跳过 → 继续,Phase 3 中所有异常都视为真实待解释的现象

注意: 如果数据时间范围只有1个月或数据极少,跳过本步骤。


Phase 2 · 数据剖析

做什么: 运行 Python 脚本,生成结构化的数据摘要 JSON,交给后续阶段用。

⚠️ 不加载任何支撑文件(保持分析注意力集中)

执行步骤:

如果有可运行的 Python 环境:
  → 运行 ${CLAUDE_SKILL_DIR}/scripts/profile_data.py,输入数据文件路径
  → 输出 data_summary.json 和 data_lock.json(见脚本说明)

如果没有 Python 环境(用户粘贴了原始数据):
  → 手动计算以下统计量:
    · 每列的:数据类型 / 非空值数量 / 唯一值数量
    · 数值列的:均值 / 中位数 / 标准差 / min / max
    · 分类列的:top 5 频率分布
    · 时间列(如有):起止时间 / 月度或周度趋势
    · 关键指标的分组聚合(按主维度分组)

样本量硬性过滤(NON-NEGOTIABLE):

所有分组分析:N < 30 的分组,不参与主要分析。
              这些分组记录到 excluded_groups.json,
              在报告附录中注明"样本不足,数据仅供参考"。

绕过此规则(例如手写 N=4 的结论)= 违规,直接删除。

生成 data_lock.json(关键):

将用于图表的所有数据系列,以 JSON 格式锁定:
{
  "chart_id": {
    "series_name": [数值数组],
    "categories": [类别数组],
    "meta": {"N": 数字, "unit": "单位", "source_col": "列名"}
  }
}

Phase 7 生成 ECharts 时,data 数组必须 100% 来自此文件,
禁止任何四舍五入、重算或"约等于"处理。

Phase 3 · 反直觉模式扫描

做什么: 系统性扫描 7 类反直觉模式,找到候选洞察。

开始时读取: PATTERN_HUNT.md

执行步骤:

1. 按 PATTERN_HUNT.md 的 7 个方向逐一扫描
   对每个方向:找到的记录,没有的写"未发现"

2. 对照 Phase 1.5 的业务上下文,标记"排除项"
   (已知事件导致的异常,不作为洞察)

3. 汇总候选洞察,去重合并
   目标:5-15 条候选洞察(多多益善,Phase 4 会筛选)

4. 输出 3 个"故事方向"摘要(内部决策,不展示给用户):
   方向A:[最反直觉的单一发现]
   方向B:[最有行动价值的发现组合]
   方向C:[最能回答用户在 Phase 1 提出的问题的发现]

   → 自动选择最能回答用户原始问题的故事方向
   → 在报告页脚注明:"本报告聚焦 [方向],另发现 [N] 个次级信号未展开"

Phase 4 · 洞察起草与质检

做什么: 把候选洞察写成正式文字,通过 6 项测试,形成最终洞察集。

开始时读取: INSIGHT_RULES.md + ANTI_AI.md

执行步骤:

对每条候选洞察:

Step 4a:写草稿
  → 按 Fact/Hypothesis 双层结构起草
  → Fact 层:≤60字,≤4标点,只写数据事实,无原因
  → Hypothesis 层:明确标注"AI推测",附验证建议

Step 4b:6项测试(INSIGHT_RULES.md)
  □ 测试1:反常识检验
  □ 测试2:行动测试
  □ 测试3:机制测试(相关性 ≠ 因果性)
  □ 测试4:惊讶测试
  □ 测试5:颗粒度测试
  □ 测试6:Pointer Test(必须找到数据指针)

  未通过任何一项 → 删除整条,不讨论,不妥协

Step 4c:ANTI_AI 检查(ANTI_AI.md)
  → 禁止词检查
  → 句式检查(无因果断言/万金油建议/孤立数字)
  → 长度检查(≤60字/≤140字)

Step 4d:强制负面配额
  → 检查洞察集里是否有至少1条负面预警或效率陷阱
  → 没有 → 重回 Phase 3 重新扫描

Step 4e:数量控制
  → 按受众上限裁减(3 / 5 / 7条)
  → 优先保留行动价值最高的

Phase 5 · 报告结构设计

做什么: 决定报告的布局、Chapter 顺序、图表类型。

开始时读取: REPORT_TEMPLATES.md

执行步骤:

1. 根据受众选择布局方案(A: 全局分析 / B: 单一决策 / C: 对比分析)

2. 为每条洞察指定:
   - 归属 Section(章节号 + 主题词)
   - 对应图表类型(从 CHART_LIBRARY.md 选,Phase 7 时加载)
   - 在信息金字塔中的层级(第一层/第二层/第三层)

3. 确定北极星数字(整份报告最重要的单一指标)

4. 规划执行摘要卡片组(2-4 张,对应受众最关心的问题)

Phase 6 · 数据验证(防幻觉检查)

做什么: 在生成 HTML 之前,最后一次校验数字的准确性。

⚠️ 关键阶段,不跳过

执行步骤:

1. 对照 data_lock.json,逐一核对洞察文字里的每个数字
   → 每个数字必须能在 data_lock.json 里找到对应来源
   → 数字不匹配 → 用 data_lock.json 里的数字覆盖洞察文字

2. 检查 Pointer Test 指针的完整性
   → 每条洞察必须有数据指针(行范围 / 原文引用)
   → 找不到指针的洞察,在此阶段删除

3. 最终洞察集冻结
   → 数字和文字确认无误后,不再修改
   → 进入 Phase 7 的 HTML 生成,只是把已确认的内容写成代码

Phase 7 · HTML 生成

做什么: 把已确认的数据和洞察,按模板写成完整的单体 HTML 文件。

开始时读取: THEMES.md + CHART_LIBRARY.md

执行步骤:

1. 从 THEMES.md 加载当前主题的 CSS 变量和 ECharts 主题配置

2. 写 HTML 骨架(参考 REPORT_TEMPLATES.md 的对应布局方案)

3. 写 CSS(完整内联,不引用外部样式文件)

4. 写 ECharts 图表(参考 CHART_LIBRARY.md 的配置片段)
   NON-NEGOTIABLE:所有 data 数组 100% 来自 data_lock.json
   禁止任何形式的数字重新计算或四舍五入

5. 写洞察卡片(参考 REPORT_TEMPLATES.md 组件 E)
   Fact/Hypothesis 双层结构,数据指针作为悬停 (i) 图标

6. 写页脚(主题名 + 数据来源 + 样本量)

7. 写 ECharts 初始化代码
   必须使用主题名初始化:echarts.init(el, '[theme-name]')
   不允许不带主题名的裸初始化

NON-NEGOTIABLE 检查清单(生成完毕后,逐项过):

□ 图表标题是结论句(不是描述词)
□ 所有 ECharts series 包含 shadowBlur: 0
□ Tooltip 按主题规格重写(不是 ECharts 默认样式)
□ 卡片无 box-shadow(除 Theme 1 允许的极小阴影外)
□ 图表数据区无渐变(纯色填充)
□ 每个图表下方有洞察卡片(无裸图)
□ HTML 是单体文件(无本地 JS/CSS 引用,仅 CDN)
□ 页脚存在且包含主题名和数据来源

Phase 8 · 内部审查(Red Teaming)

做什么: 在输出给用户之前,对每条洞察进行内部反驳检验。用户不可见。

执行步骤:

对每条洞察,扮演"挑刺者":
"同一份数据里,有没有其他维度可以推翻这个结论?"

找到反例数据:
  → 洞察本身是错的 → 删除,不输出
  → 在某子群体成立,在另一个不成立 → 加限定条件,修改 FACT 层
  → 两个维度互相矛盾 → 整条降级为 HYPOTHESIS,标注"待确认"

找不到反例 → 洞察通过 Red Teaming,保留

检查"正面偏差":
  → 最终洞察集是否清一色都是好消息?
  → 是 → 强制重审,至少找到1条负面预警或效率陷阱加回来

Phase 9 · 交付

做什么: 输出最终文件,告知用户关键发现。

执行步骤:

1. 输出 HTML 文件(单体,完整可运行)

2. 在 Chat 里简要告知(不要重复 HTML 里已有的内容):
   - 数据规模(N=X条,时间范围)
   - 最关键的 1 条洞察(一句话)
   - 报告使用的视觉主题
   - 如有被排除的低样本分组,告知数量

3. 如有被 Red Teaming 删除或降级的洞察,告知用户数量
   (不告知具体内容,只说"有X条发现因为可被反驳而未收入报告")

全局 NON-NEGOTIABLE 规则

以下规则适用于所有阶段,任何阶段违反均为错误。

数据完整性:
□ 所有图表数据来自 data_lock.json,不允许重算
□ N<30 的分组不参与主要分析(只出现在附录)
□ 每条洞察有数据指针(找不到 = 删除)

写作质量:
□ 禁止 ANTI_AI.md 中的所有禁止词和禁用句式
□ 图表标题必须是结论句,不是描述词
□ Fact 层和 Hypothesis 层必须分离,不允许混写

文件输出:
□ HTML 是单体文件(Self-contained)
□ 外部依赖仅限 Google Fonts CDN 和 ECharts CDN
□ 所有图表使用主题名初始化(不裸初始化)

质量底线:
□ 最终洞察集包含至少 1 条负面预警
□ 每条洞察通过全部 6 项测试
□ 报告包含页脚(主题名 + 数据来源 + 时间范围)

文件加载速查

Phase加载的文件原因
1只做问答
1.5只做问答
2运行 Python 或手动统计,专注数字
3PATTERN_HUNT.md反直觉模式扫描清单
4INSIGHT_RULES.md + ANTI_AI.md洞察质检 + 去AI化
5REPORT_TEMPLATES.md报告结构和 HTML 组件
6只做数字核对
7THEMES.md + CHART_LIBRARY.md视觉生成
8内部审查,不需要额外文件
9只做输出

SKILL.md — data-story skill v1.0 主文件。只做流程调度,不包含规则细节。

Como adicionar

/plugin marketplace add carrielabs/data-brief

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.