Skill: phoenixlucky/business-data-analyst-skill (version 1.2.0)

--- name: business-data-analyst-skill description: Business data analysis and operating diagnosis skill. Use when the user needs to translate a business question into an analysis plan, define metric logic, validate data quality, break down changes in growth, conversion, retention, revenue, or efficiency, identify root causes, quantify business impact, and produce actionable recommendations or experiment ideas. Suitable for operating reviews, growth analysis, user behavior analysis, channel performance analysis, funnel analysis, sales conversion analysis, postmortems, weekly or monthly business reporting, and management decision support. --- # 商业数据分析师 先定义问题，再统一口径，再看数据质量，再做诊断，最后给动作。 把“发生了什么”与“为什么发生”分开，把“观察”与“建议”分开，把“相关性”与“因果性”分开。 ## 核心工作原则 - 先业务问题，后分析动作：先写清决策问题、对象、时间范围、比较基准。 - 先指标口径，后看结论：任何同比、环比、转化率、ROI、LTV，都先定义分子、分母、时间窗、归因口径。 - 先验数，后解释：先检查样本量、缺失值、重复值、埋点变更、口径漂移，再做业务判断。 - 先拆结构，后下结论：总体变化必须拆到渠道、地区、客群、产品、时间、活动、销售人员或门店等关键维度。 - 先区分事实与推断：明确哪些是已知，哪些是推断，哪些需要额外验证。 - 结论必须能落动作：每个结论都要回答“该做什么、谁去做、先做什么、看什么指标验证”。 建议必要时使用以下标记： - `已知` - `推断` - `假设` - `风险` ## 固定分析顺序 1. **定义决策问题** 用一句话写清楚：谁要决策、要决定什么、目标是什么。 2. **统一分析口径** 明确指标定义、时间范围、对比基准、分析粒度、归因口径。 3. **检查数据可信度** 检查来源、样本覆盖、异常值、埋点/口径变更、是否存在幸存者偏差或抽样偏差。 4. **描述现象** 先回答“发生了什么”：规模、趋势、结构变化、异常拐点、分层差异。 5. **拆解驱动因素** 用漏斗、分层、 cohort、价格-销量、供给-需求、渠道贡献等方法拆解变化来源。 6. **评估业务影响** 量化对收入、利润、留存、转化、库存、交付、人效、现金流或客户体验的影响。 7. **输出动作建议** 给出优先级、负责人建议、验证指标、预期影响、风险和下一步实验。 ## 常用分析框架 ### 1. 增长分析 适用于新增、活跃、收入增长放缓或异常波动。 优先拆： - 流量/线索 - 转化率 - 客单价或 ARPU - 复购/留存 - 渠道结构 问题模板： - 增长来自新增、提价、提频，还是结构变化？ - 是总盘下滑，还是某几个关键渠道/客群下滑？ - 增长是否可持续，是否依赖短期补贴或活动？ ### 2. 漏斗分析 适用于注册、激活、下单、付费、销售转化、续约等流程。 必须输出： - 每一层转化率 - 每一层绝对流失量 - 最大损失环节 - 新旧用户、渠道、地区、设备或销售团队的差异 ### 3. 留存与 cohort 分析 适用于用户流失、复购、订阅续费、客户健康度问题。 重点看： - 不同首购/首登批次的留存曲线 - 留存变化是由获客结构变了，还是产品/服务体验变了 - 留存问题发生在第几周/第几月 ### 4. 收入与利润分析 适用于经营复盘、预算偏差、价格策略、品类结构变化。 优先拆： - 量 - 价 - 折扣 - 产品结构 - 渠道结构 - 成本与毛利 ### 5. 运营效率分析 适用于库存、交付、客服、人效、门店、销售团队效率问题。 优先拆： - 单位产出 - 单位成本 - 周期时长 - 资源利用率 - 异常损耗 ## 强化分析模型 当用户的问题不只是“指标为什么变了”，而是“公司该不该做、该怎么打、该怎么卖、该怎么管、值不值得投”时，优先补以下模型。 ### 1. 战略分析模型 适用于方向选择、进入新市场、推出新产品、调整业务边界。 优先使用： - `SWOT`：梳理内部优势、劣势与外部机会、威胁 - `PESTEL`：检查政策、经济、社会、技术、环境、法律约束 - `3C`：同时看公司、客户、竞争对手 - `Ansoff` 矩阵：判断市场渗透、市场开发、产品开发、多元化路径 强化要求： - 不要只列概念，要指出每个因素如何影响收入、成本、风险或执行难度 - 不要把 `机会` 写成愿望，要说明触发条件和验证方式 - 战略结论必须回答“要不要做、为什么现在做、主要风险是什么” ### 2. 竞争分析模型 适用于行业吸引力评估、赛道判断、竞争压力判断、进入壁垒评估。 优先使用： - 波特五力 - 战略群组分析 - 竞争对手画像与 Benchmark 强化要求： - 五力分析必须落到利润空间、议价能力、替代风险和防御能力 - 竞争对手分析不能只比功能，要比价格、渠道、交付能力、品牌、客户结构 - 最终要回答“行业赚钱难不难、公司凭什么赢、短期最需要防谁” ### 3. 营销分析模型 适用于用户分层、目标市场选择、定位、增长转化、投放和促销策略。 优先使用： - `STP` - `4P` - `AIDA` - 用户生命周期分析，包括 `LTV`、留存、转化 强化要求： - `Segmentation` 不能只按人口属性，要补消费能力、场景、需求强度、行为差异 - `Positioning` 要明确相对谁、靠什么差异化、牺牲什么 - `4P` 不能只讨论促销，必须同时看产品匹配度、价格门槛、渠道效率 - 最终要回答“卖给谁、为什么买、通过什么路径成交、利润是否成立” ### 4. 运营分析模型 适用于目标管理、执行效率提升、流程优化、增长实验和经营监控。 优先使用： - `KPI/OKR` - 漏斗模型 - 北极星指标 - 精益创业 `Build-Measure-Learn` 强化要求： - `OKR` 要区分结果指标和过程指标，避免只写任务 - 漏斗分析要同时输出转化率和绝对损失量 - 北极星指标必须能反映长期价值，而不是短期虚高指标 - 精益创业分析要写清实验假设、验证指标、观察周期和停止条件 ### 5. 财务分析模型 适用于项目评估、预算决策、资源投入、回报测算和经营健康度判断。 优先使用： - `ROI` - 盈亏平衡点 - 现金流模型 - 杜邦分析 强化要求： - `ROI` 不只算静态回报，要明确时间窗和回收周期 - 盈亏平衡点要拆销量、价格、固定成本、变动成本 - 现金流分析要区分利润与现金，警惕高利润低现金项目 - 杜邦分析要拆净利率、周转率、杠杆，避免只看单一利润指标 ## 模型选择规则 面对不同问题，优先这样选： - “要不要做某件事” -> 战略分析模型 + 财务分析模型 - “这个行业值不值得进” -> 竞争分析模型 + 战略分析模型 - “产品怎么卖、卖给谁” -> 营销分析模型 - “怎么提升执行效率或转化” -> 运营分析模型 - “项目值不值、钱怎么回” -> 财务分析模型 如果问题跨多个层级，先定主模型，再用 1 到 2 个辅助模型补充，不要把所有模型堆在一起。 ## 响应语言与信息缺口规则 - 默认跟随用户提问语言输出；用户用中文问，就用中文答；用户用英文问，就用英文答。 - 如果用户混合使用多种语言，以主问题语言为准；不要为了显得专业而擅自切换语言。 - 若题目缺少关键口径、时间范围、样本定义、归因口径或对比基准，先指出缺口，再给条件式判断。 - 缺信息时不要硬编数字、样本量、因果链、行业均值或结论强度。 - 若可以继续分析但不能下确定结论，用 `已知 / 推断 / 假设 / 风险` 标记，把不确定性留在台面上。 - 若只缺 1 到 2 个关键前提，优先先给可执行的临时判断，再列出补充数据清单，不要一味卡在追问。 ## 模型使用纪律 - 先用数据分析主线回答“发生了什么”，再决定是否引入战略、竞争、营销、运营或财务模型解释“为什么”。 - 默认只选 1 个主模型；最多再加 1 到 2 个辅助模型，避免把回答写成模型名词堆砌。 - `模型分析` 必须服务于决策，不要把 SWOT、五力、STP、ROI 当作展示知识点。 - 用模型时必须回答：这个模型为什么适合当前问题，它改变了什么判断，它带来了什么动作。 - 如果用户明显只要快速结论，不要强行展开全套模型；保留主线、删掉花架子。 ## 路由与参考材料使用 - 如果宿主支持内部路由层，可使用 `src/router.js` 先判断是否属于增长、漏斗、留存、收入利润、效率或经营诊断场景。 - 需要理解路由输入输出契约、命中逻辑和提示语拼装方式时，读取 [references/router-design.md](references/router-design.md)。 - 需要场景化问题清单和分析示例时，读 [references/examples.md](references/examples.md)。 - 需要常见指标口径、拆解方法、建议动作模板时，读 [references/metric-playbook.md](references/metric-playbook.md)。 - 若用户问题偏战略/竞争/营销/财务判断，优先从 `SKILL.md` 保持主线，再按需读取 `metric-playbook.md` 中对应章节，不要一次把所有参考材料都塞进上下文。 ## 输出要求 默认按以下结构回答： 1. **问题定义** 2. **口径与范围** 3. **数据质量检查** 4. **关键发现** 5. **原因拆解** 6. **业务影响** 7. **建议动作** 8. **信息缺口 / 待验证假设** 当使用强化分析模型时，可在 `原因拆解` 和 `建议动作` 之间增加： 9. **模型分析** 10. **战略 / 竞争 / 营销 / 运营 / 财务判断** 其中： - `关键发现` 只写观察到的事实，不提前混入建议。 - `原因拆解` 要按影响大小排序，不要罗列无关因素。 - `建议动作` 控制在 1-3 条，并写清验证指标。 ## 快速模式 如果用户只想快速判断“问题在哪里、先做什么”，最少保留四段： 1. `问题定义` 2. `关键发现` 3. `原因拆解` 4. `建议动作` ## 不要这样做 - 不要在口径不清时直接给结论。 - 不要只看总体均值，不看结构变化。 - 不要把相关性直接写成因果。 - 不要把一次活动、节假日、政策扰动当作长期趋势。 - 不要给“加强运营”“提升转化”这种不可执行建议。 - 不要在没有业务影响量化时排序优先级。 ## 参考材料 - 需要场景化问题清单和分析示例时，读 [references/examples.md](references/examples.md) - 需要常见指标与拆解思路时，读 [references/metric-playbook.md](references/metric-playbook.md)

path: agents/openai.yaml
content: interface:
  display_name: "Business Data Analyst"
  short_description: "Turn business data into decisions"
  default_prompt: "Use $business-data-analyst to diagnose a business problem, define metric scope, quantify impact, and recommend next actions."


path: CHANGELOG.md
content: # Changelog

All notable changes to this project will be documented in this file.

## [1.2.0] - 2026-04-20

### Added

- Added `响应语言与信息缺口规则` to `SKILL.md`, clarifying language following, missing-data handling, and conditional judgment discipline.
- Added `模型使用纪律` to `SKILL.md` so strategic and financial models stay subordinate to the main analysis flow instead of turning into framework dumping.
- Added `路由与参考材料使用` to `SKILL.md` so hosts know when to use `src/router.js` and when to read `references/router-design.md`, `references/examples.md`, and `references/metric-playbook.md`.

### Changed

- Bumped the project version to `1.2.0` across `README.md` and `package.json`.
- Strengthened `SKILL.md` so the skill now covers response language, uncertainty handling, model selection discipline, and progressive disclosure guidance more explicitly.

## [1.1.0] - 2026-04-20

### Added

- Added `src/router.js` for internal skill intent routing.
- Added `src/index.js` as the public export entry for router utilities.
- Added intent routing support for `growth_analysis`, `funnel_analysis`, `retention_analysis`, `revenue_analysis`, `efficiency_analysis`, and `business_diagnosis`.
- Added [references/router-design.md](/d:/home/business-data-analyst-skill/references/router-design.md) to document the routing design and expected contract.
- Added strategic, competitive, marketing, operational, and financial analysis model guidance to [SKILL.md](/d:/home/business-data-analyst-skill/SKILL.md) and [references/metric-playbook.md](/d:/home/business-data-analyst-skill/references/metric-playbook.md).

### Changed

- Updated [README.md](/d:/home/business-data-analyst-skill/README.md) to document the new runtime routing layer and point change history to `CHANGELOG.md`.


path: package.json
content: {
  "name": "business-data-analyst-skill",
  "version": "1.2.0",
  "description": "Business data analysis and operating diagnosis skill with documentation, internal intent routing, and reusable analysis frameworks for strategy, competition, marketing, operations, and finance.",
  "main": "src/index.js",
  "exports": {
    ".": "./src/index.js",
    "./router": "./src/router.js",
    "./package.json": "./package.json"
  },
  "files": [
    "src",
    "references",
    "agents",
    "SKILL.md",
    "README.md",
    "CHANGELOG.md"
  ],
  "scripts": {
    "lint": "node --check src/index.js && node --check src/router.js",
    "smoke:test": "node -e \"const { routeSkillIntent } = require('./src'); console.log(routeSkillIntent('最近续费率下降，帮我定位原因并给动作建议'));\""
  },
  "engines": {
    "node": ">=18"
  },
  "author": "phoenixlucky",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/phoenixlucky/business-data-analyst-skill.git"
  },
  "bugs": {
    "url": "https://github.com/phoenixlucky/business-data-analyst-skill/issues"
  },
  "homepage": "https://github.com/phoenixlucky/business-data-analyst-skill#readme",
  "keywords": [
    "business-data-analyst",
    "business analysis",
    "商业分析",
    "经营分析",
    "strategy analysis",
    "战略分析",
    "competitive analysis",
    "竞争分析",
    "marketing analysis",
    "营销分析",
    "financial analysis",
    "财务分析",
    "operations analysis",
    "运营分析",
    "data analyst",
    "数据分析师",
    "operating diagnosis",
    "经营诊断",
    "metric",
    "指标分析",
    "growth analysis",
    "增长分析",
    "conversion funnel",
    "漏斗分析",
    "retention",
    "留存分析",
    "revenue analysis",
    "收入分析",
    "north star metric",
    "北极星指标",
    "okr",
    "kpi",
    "目标管理",
    "swot",
    "优势劣势机会威胁",
    "pestel",
    "宏观环境分析",
    "3c",
    "公司客户竞争对手",
    "ansoff",
    "安索夫矩阵",
    "porter five forces",
    "波特五力",
    "stp",
    "市场细分",
    "4p",
    "营销组合",
    "aida",
    "用户生命周期",
    "roi",
    "投资回报率",
    "dupont analysis",
    "杜邦分析",
    "KPIs",
    "business intelligence",
    "商业智能",
    "SQL",
    "数据质量",
    "data quality",
    "bilingual",
    "双语",
    "skill"
  ]
}


path: README.md
content: # Business Data Analyst Skill

版本：`1.2.0`

## 简介

这是一个面向商业分析、经营诊断和指标拆解场景的技能包。

它适合用于：

- 将业务问题翻译成分析方案
- 统一指标口径与分析范围
- 检查数据质量与口径漂移
- 拆解增长、转化、留存、收入和效率问题
- 输出可执行的业务建议与验证指标

## 目录结构

- [SKILL.md](/d:/home/business-data-analyst-skill/SKILL.md)
- [CHANGELOG.md](/d:/home/business-data-analyst-skill/CHANGELOG.md)
- [references/examples.md](/d:/home/business-data-analyst-skill/references/examples.md)
- [references/metric-playbook.md](/d:/home/business-data-analyst-skill/references/metric-playbook.md)
- [references/router-design.md](/d:/home/business-data-analyst-skill/references/router-design.md)
- [agents/openai.yaml](/d:/home/business-data-analyst-skill/agents/openai.yaml)

## 当前状态

当前仓库以文档型 skill 包为主，主要包含提示词规范、分析框架和参考材料。

仓库现已补充最小可用的技能内部意图路由。实现说明和变更记录分别见：

- [references/router-design.md](/d:/home/business-data-analyst-skill/references/router-design.md)
- [CHANGELOG.md](/d:/home/business-data-analyst-skill/CHANGELOG.md)

## 使用说明

优先阅读 [SKILL.md](/d:/home/business-data-analyst-skill/SKILL.md)，它定义了该技能的工作原则、固定分析顺序、输出结构和参考材料。

当需要快速补充分析案例时，查看 [references/examples.md](/d:/home/business-data-analyst-skill/references/examples.md)。

当需要统一常见业务指标口径和拆解方法时，查看 [references/metric-playbook.md](/d:/home/business-data-analyst-skill/references/metric-playbook.md)。

如果准备把 skill 接入运行时路由层，先看 [references/router-design.md](/d:/home/business-data-analyst-skill/references/router-design.md)。

## 更新说明

项目变更历史统一记录在 [CHANGELOG.md](/d:/home/business-data-analyst-skill/CHANGELOG.md)。


path: references/examples.md
content: # 商业数据分析示例

## 示例 1：电商 GMV 下滑

用户请求：
`帮我分析为什么 3 月 GMV 比 2 月下降了 12%。`

建议输出骨架：

```md
## 问题定义
3 月 GMV 环比下降 12%，需要判断是季节性回落、流量问题、转化问题，还是客单价与结构变化导致。

## 口径与范围
- 指标：GMV，按支付成功口径
- 时间：2026-03 vs 2026-02
- 粒度：日、渠道、品类、新老客

## 数据质量检查
- 排除支付回传延迟
- 检查 3 月是否有埋点或归因口径变更

## 关键发现
- 总访客下降 5%
- 下单转化率下降 4%
- 客单价下降 3%
- 某核心投放渠道流量下降最明显

## 原因拆解
1. 付费渠道流量缩量贡献了主要跌幅
2. 低价品类占比提升，拉低客单价
3. 老客复购基本稳定，问题主要出在新客获取

## 业务影响
- 预计月度收入少 X
- 若渠道恢复不到位，下月仍有延续风险

## 建议动作
1. 先修复核心渠道投放与素材供给，观察访客恢复
2. 对低转化落地页做 A/B 测试，追踪下单转化率
3. 单独监控高客单品类占比，避免结构继续恶化
```

## 示例 2：SaaS 续费率下降

用户请求：
`最近续费率从 78% 掉到 71%，帮我定位原因并给动作建议。`

优先分析：
- 按客户规模、行业、销售团队、版本、首签月份拆 cohort
- 区分续费率下降是到期客户结构变化，还是同类客户真实变差
- 关联产品使用深度、工单量、NPS、价格调整记录

## 示例 3：门店人效差异大

用户请求：
`为什么华东门店人效明显高于华南？`

优先分析：
- 人效定义：销售额/人时，还是毛利/人头
- 对比客流、转化率、连带率、客单价、排班、店型结构
- 区分“单店效率差”与“区域结构差”

## 示例 4：活动复盘

用户请求：
`帮我复盘这次大促是否值得继续做。`

至少回答：
- 增量收入是否覆盖补贴、投放、履约和客服成本
- 新客质量是否达标，活动后 7/30 天留存如何
- 是否只是把自然单前移，还是创造了新增需求



path: references/metric-playbook.md
content: # 常见指标与拆解手册

## 增长类

- `新增用户 = 新注册 / 新激活 / 首购用户`
- `活跃用户 = DAU / WAU / MAU`
- `增长率 = (本期 - 上期) / 上期`

常见拆法：
- 渠道
- 地区
- 客群
- 产品/品类
- 新老用户
- 自然周 / 自然月 / 活动期

## 漏斗类

- `访问 -> 注册 -> 激活 -> 下单 -> 支付`
- `线索 -> 商机 -> 报价 -> 成交 -> 回款`

常见输出：
- 每层转化率
- 每层流失量
- 最大损失环节
- 分群差异

## 留存类

- `次日留存`
- `7日/30日留存`
- `复购率`
- `续费率`

常见误区：
- 只看总体留存，不看 cohort
- 获客结构变化导致总体留存变化，却误判为产品问题

## 收入类

- `收入 = 流量 × 转化率 × 客单价`
- `GMV = 订单量 × 平均订单金额`
- `ARPU = 收入 / 用户数`
- `毛利 = 收入 - 可变成本`

常见拆法：
- 量价拆解
- 品类结构拆解
- 渠道结构拆解
- 折扣与补贴影响

## 效率类

- `人效 = 产出 / 人力投入`
- `坪效 = 销售额 / 面积`
- `库存周转 = 销售成本 / 平均库存`
- `履约时长 = 签收时间 - 下单时间`

常见拆法：
- 单位产出
- 单位成本
- 周期
- 利用率
- 异常损耗

## 建议动作模板

当分析完成后，尽量把建议写成下面的格式：

`动作 + 负责人类型 + 验证指标 + 观察周期 + 风险`

示例：
- 优化高流失页面文案，负责人为增长/产品，验证注册转化率，观察 7 天，风险是样本量不足
- 调整低 ROI 渠道预算，负责人为投放，验证获客成本和首购率，观察 2 周，风险是季节性扰动

## 强化分析模型手册

### 1. 战略分析模型

#### SWOT

适用：
- 公司要不要进入新业务
- 某项战略调整是否具备条件

分析重点：
- `优势` 是否真的可转化为份额、利润或效率
- `劣势` 是短期可补，还是结构性短板
- `机会` 是否存在明确窗口期
- `威胁` 对收入、毛利、合规、组织能力的影响有多大

建议输出：
- 关键优势与劣势各 2 到 3 条
- 最重要机会与威胁各 2 条
- 战略结论：做 / 不做 / 延后做

#### PESTEL

适用：
- 行业环境变化
- 政策驱动或约束明显的业务

分析重点：
- 政策和法律会不会改变准入门槛
- 经济周期是否影响需求和支付能力
- 社会趋势是否改变用户偏好
- 技术进步是否重构成本或壁垒

建议输出：
- 外部环境利好和利空
- 最关键的 1 到 2 个不确定因素
- 对应的应对动作

#### 3C

适用：
- 公司能力与市场机会是否匹配
- 增长路径是否可执行

分析重点：
- `Company`：能力、资源、品牌、渠道、组织效率
- `Customer`：需求强度、场景、支付意愿、决策链
- `Competitor`：价格、交付、渠道、口碑、速度

建议输出：
- 公司优势是否和客户核心需求匹配
- 与竞争对手相比的关键差异
- 当前最可打的客户切口

#### Ansoff 矩阵

适用：
- 讨论增长路径
- 评估新市场或新产品投入

分析重点：
- 市场渗透：能否在现有市场继续提份额
- 市场开发：进入新区域、新客群是否可行
- 产品开发：新产品是否服务现有客户
- 多元化：风险最高，需额外验证能力匹配

建议输出：
- 四种路径的机会和风险
- 推荐主路径和不推荐路径

### 2. 竞争分析模型

#### 波特五力

适用：
- 行业利润空间评估
- 赛道壁垒判断

分析重点：
- 供应商议价能力
- 买方议价能力
- 替代品威胁
- 新进入者威胁
- 现有竞争激烈程度

建议输出：
- 哪一股力量最压利润
- 公司能否建立护城河
- 行业是否值得长期投入

#### 战略群组分析

适用：
- 同行业不同打法分层
- 找直接竞争圈层

分析重点：
- 按价格带、渠道、目标客户、服务深度分组
- 区分头部、腰部、长尾玩家

建议输出：
- 我们属于哪个群组
- 最值得对标的 3 类对手

#### Benchmark

适用：
- 具体竞争对手比较
- 制定追赶策略

分析重点：
- 产品力
- 价格力
- 渠道力
- 品牌力
- 交付和服务能力

建议输出：
- 关键差距
- 可以复制的做法
- 不应盲目跟进的点

### 3. 营销分析模型

#### STP

适用：
- 明确目标用户
- 优化市场定位

分析重点：
- 细分市场是否足够可识别、可触达、可盈利
- 目标客群选择是否与资源匹配
- 定位是否清晰且可被感知

建议输出：
- 重点客群画像
- 放弃哪些客群
- 核心定位语句

#### 4P

适用：
- 产品上市
- 营销组合优化

分析重点：
- 产品是否解决核心痛点
- 价格是否匹配价值与竞争环境
- 渠道是否覆盖关键触点
- 促销是否带来真实增量

建议输出：
- 当前最短板的 `P`
- 优先优化顺序

#### AIDA

适用：
- 广告投放
- 内容转化链路分析

分析重点：
- 注意获取是否足够
- 兴趣是否被建立
- 欲望是否被强化
- 行动是否有阻碍

建议输出：
- 卡点在哪一层
- 每层的改进建议

#### 用户生命周期

适用：
- 拉新转化留存一体化分析
- 评估用户长期价值

分析重点：
- 获客成本与首购转化
- 留存和复购变化
- `LTV/CAC` 是否成立

建议输出：
- 哪个阶段损失最大
- 哪类用户长期价值最高

### 4. 运营分析模型

#### KPI / OKR

适用：
- 经营目标拆解
- 团队执行跟踪

分析重点：
- 目标是否清晰
- 指标是否能反映目标
- 过程指标是否支持结果达成

建议输出：
- 北极目标
- 关键结果
- 过程监控指标

#### 漏斗模型

适用：
- 注册、激活、下单、销售转化

分析重点：
- 每层转化率
- 绝对损失量
- 分群差异

建议输出：
- 最大损失环节
- 优先修复环节

#### 北极星指标

适用：
- 统一增长方向
- 防止团队目标分散

分析重点：
- 指标是否代表长期用户价值
- 是否可被团队关键动作驱动

建议输出：
- 北极星指标定义
- 一级驱动因子
- 监控频率

#### Build-Measure-Learn

适用：
- 新功能试验
- 增长实验

分析重点：
- 假设是否清晰
- 度量指标是否可验证
- 学习结果是否能进入下一轮决策

建议输出：
- 实验假设
- 成功阈值
- 继续 / 停止 / 调整结论

### 5. 财务分析模型

#### ROI

适用：
- 项目投放
- 预算审批

分析重点：
- 投入项是否算全
- 收益是否考虑时间窗口
- 是否存在延迟回收

建议输出：
- 静态 ROI
- 回收周期
- 敏感性因素

#### 盈亏平衡点

适用：
- 新项目立项
- 价格或销量方案评估

分析重点：
- 固定成本
- 变动成本
- 单位贡献毛利

建议输出：
- 需要达到的销量或收入门槛
- 达成门槛的前提条件

#### 现金流模型

适用：
- 高增长但重投入项目
- 回款周期长的业务

分析重点：
- 收入确认与回款时间差
- 库存、应收、预付款占用
- 现金缺口出现时间

建议输出：
- 现金流高风险环节
- 关键资金压力点

#### 杜邦分析

适用：
- 经营质量复盘
- 多业务单元比较

分析重点：
- 净利率
- 资产周转率
- 财务杠杆

建议输出：
- 回报由利润驱动还是效率驱动
- 关键改善方向


path: references/router-design.md
content: # 路由设计说明

## 目的

该文档用于约定未来 `src/router.js` 的职责边界，确保业务分析类请求在进入模型前能够被稳定分流。

目标不是做复杂的自然语言理解系统，而是先提供一层可维护、可解释、可扩展的轻量路由。

## 适用场景

未来 `src/router.js` 适合处理以下两类判断：

- 是否应命中 `business-data-analyst-skill`
- 命中后应进入哪类分析子场景

建议优先覆盖的子场景：

- 增长分析
- 漏斗分析
- 留存分析
- 收入或利润分析
- 运营效率分析
- 经营复盘或异常诊断

## 推荐输入

建议路由函数至少接收以下字段：

```js
{
  message: string,
  locale?: string,
  metadata?: {
    source?: string,
    channel?: string,
    userRole?: string
  }
}
```

其中 `message` 是主判断依据，`metadata` 只用于辅助，不应反向覆盖文本语义。

## 推荐输出

建议 `src/router.js` 输出统一结构，避免上层调用方自行猜测：

```js
{
  matched: boolean,
  intent: string | null,
  confidence: number,
  reason: string,
  promptHint?: string
}
```

字段建议：

- `matched`: 是否命中当前 skill
- `intent`: 命中的分析意图，例如 `growth_analysis`
- `confidence`: `0` 到 `1` 的置信度
- `reason`: 简短解释命中原因，便于调试
- `promptHint`: 可选，提供给上层的提示词片段或模式建议

## 推荐路由策略

建议按以下顺序判断：

1. 先识别是否为业务分析问题
2. 再识别具体分析子类型
3. 最后补充输出结构化解释

### 第一步：识别业务分析问题

优先识别以下信号：

- 指标词：GMV、转化率、留存、ROI、LTV、客单价、复购、人效、毛利
- 诊断词：为什么下降、定位原因、拆解、归因、复盘、分析波动
- 决策词：给建议、下一步动作、实验方案、优化优先级

反向排除以下场景：

- 纯闲聊
- 纯代码报错排查
- 通用写作润色
- 与经营分析无关的知识问答

### 第二步：识别子场景

建议用关键词和问题结构组合判断，而不是只靠单一词命中。

示例映射：

- `增长`、`新增`、`活跃`、`GMV`、`增长放缓` -> `growth_analysis`
- `漏斗`、`转化`、`注册`、`下单`、`激活` -> `funnel_analysis`
- `留存`、`复购`、`续费`、`流失`、`cohort` -> `retention_analysis`
- `收入`、`利润`、`毛利`、`价格`、`折扣` -> `revenue_analysis`
- `人效`、`库存`、`交付`、`客服效率`、`门店效率` -> `efficiency_analysis`
- `复盘`、`异常`、`波动`、`经营诊断` -> `business_diagnosis`

### 第三步：输出解释

`reason` 字段不要只写“keyword matched”，应尽量保留可读性，例如：

```txt
命中留存分析：请求同时包含“续费率下降”和“定位原因”，符合经营诊断场景。
```

## 实现建议

推荐先从纯规则实现开始，不要一开始引入复杂分类器。

建议拆成三个函数：

```js
function detectBusinessAnalysis(message) {}
function detectIntent(message) {}
function route(message, metadata) {}
```

如果后续规则变多，可以把关键词字典单独拆到配置文件。

## 最小可用版本

`src/router.js` 的第一版至少应满足：

- 能判断是否命中当前 skill
- 能识别 3 到 6 个核心分析意图
- 能返回统一结构
- 能给出简单可读的命中原因

## 与文档内容的关系

路由只负责分流，不负责生成最终分析结论。

真正的分析过程仍应遵守以下文档：

- [../SKILL.md](../SKILL.md)
- [examples.md](examples.md)
- [metric-playbook.md](metric-playbook.md)


path: src/index.js
content: "use strict";

const {
  INTENT_RULES,
  detectBusinessAnalysis,
  detectIntent,
  routeSkillIntent,
} = require("./router");

module.exports = {
  INTENT_RULES,
  detectBusinessAnalysis,
  detectIntent,
  routeSkillIntent,
};


path: src/router.js
content: "use strict";

const INTENT_RULES = [
  {
    intent: "growth_analysis",
    label: "增长分析",
    keywords: [
      "增长",
      "新增",
      "活跃",
      "gmv",
      "营收增长",
      "增长放缓",
      "拉新",
      "用户增长",
      "销售增长",
    ],
  },
  {
    intent: "funnel_analysis",
    label: "漏斗分析",
    keywords: [
      "漏斗",
      "转化",
      "转化率",
      "注册",
      "激活",
      "下单",
      "支付",
      "成交",
      "线索转化",
    ],
  },
  {
    intent: "retention_analysis",
    label: "留存分析",
    keywords: [
      "留存",
      "复购",
      "续费",
      "流失",
      "cohort",
      "召回",
      "次留",
      "7日留存",
      "30日留存",
    ],
  },
  {
    intent: "revenue_analysis",
    label: "收入利润分析",
    keywords: [
      "收入",
      "利润",
      "毛利",
      "客单价",
      "arpu",
      "ltv",
      "价格",
      "折扣",
      "收入结构",
    ],
  },
  {
    intent: "efficiency_analysis",
    label: "运营效率分析",
    keywords: [
      "人效",
      "效率",
      "库存",
      "交付",
      "客服",
      "门店",
      "产能",
      "履约",
      "周转",
    ],
  },
  {
    intent: "business_diagnosis",
    label: "经营诊断",
    keywords: [
      "复盘",
      "诊断",
      "异常",
      "波动",
      "定位原因",
      "原因",
      "为什么下降",
      "为什么上涨",
      "经营分析",
    ],
  },
];

const BUSINESS_SIGNALS = [
  "gmv",
  "roi",
  "ltv",
  "arpu",
  "收入",
  "营收",
  "利润",
  "毛利",
  "留存",
  "复购",
  "续费",
  "流失",
  "转化",
  "漏斗",
  "客单价",
  "人效",
  "库存",
  "交付",
  "经营",
  "渠道",
  "用户增长",
  "销售",
  "新增",
  "活跃",
];

const DIAGNOSIS_SIGNALS = [
  "分析",
  "拆解",
  "定位",
  "归因",
  "复盘",
  "原因",
  "建议",
  "动作",
  "优化",
  "诊断",
];

const NEGATIVE_SIGNALS = [
  "写代码",
  "报错",
  "bug",
  "接口开发",
  "前端页面",
  "翻译",
  "润色",
  "写邮件",
  "写文章",
];

function normalizeText(input) {
  return String(input || "").trim().toLowerCase();
}

function countMatches(text, keywords) {
  return keywords.reduce((count, keyword) => {
    return count + (text.includes(keyword.toLowerCase()) ? 1 : 0);
  }, 0);
}

function detectBusinessAnalysis(message) {
  const text = normalizeText(message);
  if (!text) {
    return {
      matched: false,
      score: 0,
      reason: "消息为空，无法判断是否属于经营分析场景。",
    };
  }

  const negativeMatches = countMatches(text, NEGATIVE_SIGNALS);
  const businessMatches = countMatches(text, BUSINESS_SIGNALS);
  const diagnosisMatches = countMatches(text, DIAGNOSIS_SIGNALS);
  const score = businessMatches * 0.2 + diagnosisMatches * 0.15 - negativeMatches * 0.35;
  const matched = businessMatches > 0 && score >= 0.2;

  let reason = "未命中经营分析关键信号。";
  if (matched) {
    reason =
      "命中经营分析语义，包含业务指标或诊断动作相关关键词。";
  } else if (negativeMatches > 0) {
    reason = "存在偏技术或通用写作信号，当前不判定为经营分析请求。";
  }

  return { matched, score: clamp(score), reason };
}

function detectIntent(message) {
  const text = normalizeText(message);
  let bestRule = null;
  let bestScore = 0;

  for (const rule of INTENT_RULES) {
    const score = countMatches(text, rule.keywords);
    if (score > bestScore) {
      bestScore = score;
      bestRule = rule;
    }
  }

  if (!bestRule || bestScore === 0) {
    return {
      intent: null,
      confidence: 0,
      reason: "未识别到明确的分析子场景。",
    };
  }

  const confidence = clamp(0.35 + bestScore * 0.15);
  return {
    intent: bestRule.intent,
    confidence,
    reason: `命中${bestRule.label}，检测到相关问题模式和关键词。`,
  };
}

function routeSkillIntent(input) {
  const payload =
    typeof input === "string" ? { message: input } : Object(input || {});
  const message = normalizeText(payload.message);
  const businessResult = detectBusinessAnalysis(message);

  if (!businessResult.matched) {
    return {
      matched: false,
      intent: null,
      confidence: businessResult.score,
      reason: businessResult.reason,
      promptHint: null,
    };
  }

  const intentResult = detectIntent(message);
  const confidence = clamp(
    businessResult.score * 0.45 + intentResult.confidence * 0.55
  );

  return {
    matched: true,
    intent: intentResult.intent || "business_diagnosis",
    confidence,
    reason: intentResult.intent ? intentResult.reason : businessResult.reason,
    promptHint: buildPromptHint(intentResult.intent || "business_diagnosis"),
  };
}

function buildPromptHint(intent) {
  const hints = {
    growth_analysis: "优先拆新增、活跃、渠道结构和增长驱动。",
    funnel_analysis: "优先输出分层漏斗、环节流失和最大损失点。",
    retention_analysis: "优先做 cohort、续费和流失阶段拆解。",
    revenue_analysis: "优先拆量、价、折扣、结构和毛利影响。",
    efficiency_analysis: "优先看单位产出、单位成本、周期和资源利用率。",
    business_diagnosis: "优先界定问题、统一口径、拆原因并给动作建议。",
  };

  return hints[intent] || hints.business_diagnosis;
}

function clamp(value) {
  if (value < 0) {
    return 0;
  }

  if (value > 1) {
    return 1;
  }

  return Number(value.toFixed(2));
}

module.exports = {
  INTENT_RULES,
  detectBusinessAnalysis,
  detectIntent,
  routeSkillIntent,
};


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)