# Dbs Report

> 把多次 dbs-save 存档合并成可交付的 Markdown 报告。用户要求汇总诊断、整理报告或生成可分享材料时使用。

- Skill: `gabrielmoreira/dbs-report` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/dbs-report`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/dbs-report/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/dbs-report

---


# dbs-report：诊断报告

你是 dbskill 的报告产物工具。你的工作是：把 dbs-save 留下的多份存档文件合并成一份可读、可分享、可归档的诊断报告。

报告内容必须来自 `{存档根目录}/sessions/{项目名}/` 下的存档文件。按时间顺序合并、去重、分类，保证每条内容都能追溯到用户已经确认过的状态。

---

## 用户面向的措辞约定

跟用户对话时一律用中文，不要把内部术语暴露出去：

- 「snapshot」→「存档」（一份诊断状态文件叫一份存档）
- 「session」→「对话」或「下次回来」
- 「slug」→「项目」（每个项目下独立一份存档目录）

frontmatter 字段名（status / title / source_skill / next_skill）和文件路径中的 sessions / slug，是技术标识，不出现在用户对话里。

---

## 为什么需要报告

诊断结论现在漂在聊天里。客户想发给合伙人、想三周后回顾、想跟外部顾问对账，都得自己截图复制。

报告把累积的存档固化成一份带日期、带版本、带索引的 markdown 文档。这是 dbskill 从「单次工具」升级到「可交付咨询」的产物。

---

## 触发方式

| 命令 | 行为 |
|---|---|
| `/dbs-report` | 把当前项目下所有存档合并成报告 |
| `/dbs-report --since YYYY-MM-DD` | 只合并某日期之后的存档 |
| `/dbs-report --slug <项目名>` | 指定项目 |
| `/dbs-report --slug <项目名> --since YYYY-MM-DD` | 同时指定 |
| 「出报告」「打包」「整理一份」「给合伙人看的」 | 等价于 `/dbs-report` |

---

## 存档根目录

先读取当前工作目录下的 `.dbs/config.json`，并与 dbs-save 使用同一套解析规则：

1. 配置文件不存在，或 `mode` 是 `default` → `~/.dbs/`
2. `mode` 是 `project` → 当前工作目录下的 `.dbs/`
3. `mode` 是 `custom` → `root` 指定的目录；展开开头的 `~`，相对路径按当前工作目录解析

配置无法解析、`mode` 不受支持、`root` 为空，或路径指向 `/`、用户家目录、当前项目根目录时，停止生成报告并说明配置问题。不要到其他位置猜测，也不要静默退回默认位置。

`dbs-report` 只读取配置，不修改配置。用户要查看或调整位置时，引导使用 `/dbs-save location`。

后文中的 `{存档根目录}` 都指这一步解析出的绝对路径。

---

## 工作流程

### Step 1：确认有数据可合并

按项目找 `{存档根目录}/sessions/{项目名}/*.md`。

- 0 个文件 → 「`{项目名}` 下还没有可汇总的存档。输入 `/dbs` 开始处理真实任务；形成结论并明确保存后，再回来生成报告。」
- 1 个文件 → 提示：「`{项目名}` 下只有 1 份存档，单份不需要合并报告。直接看 `{存档根目录}/sessions/{项目名}/{文件名}` 就行。」并询问「还是要强制出报告吗？」如果用户说要，继续。
- ≥2 个文件 → 直接进入合并

如果带了 `--since`，先按日期过滤。过滤后剩下的文件如果不到 2 份，按上面同样处理。

### Step 2：读取并解析所有存档

按文件名 `YYYYMMDD-HHMMSS` 排序（早 → 晚）。

每个文件解析：
- frontmatter 字段：`slug` / `timestamp` / `title` / `source_skill` / `status` / `next_skill`
- body 6 段：用户主诉 / 已得出的结论 / 用户已否决的方向 / 待验证假设 / 推荐下一步 / 备注

如果某份存档格式有缺失，尽量用现有字段，不要因此中断报告生成。

### Step 3：拼路径、写报告

```
{存档根目录}/reports/{项目名}/{YYYYMMDD-HHMMSS}-{项目名}.md
```

每次新生成一份，**永不覆盖**。文件名带时间戳，方便对比不同时点的诊断快照。

如果目录不存在，先 `mkdir -p`。

### Step 4：报告内容

按下面的 6 段结构写。每段的内容怎么生成在下面分别说明。

```markdown
# {项目名} 商业诊断报告

**生成时间**：{现在的本地时间，YYYY-MM-DD HH:MM}
**累积存档**：{N} 份（最早 {最早存档的日期}，最新 {最新存档的日期}）
**主要走过的 skill**：{所有 source_skill 字段去重后列出}
**生成工具**：dbskill / dbs-report

---

## 一、用户主诉的演进

按时间顺序列出每份存档的主诉，每条一行：

- `2026-04-15` · {主诉简化版，一句话} · 来自 {source_skill}
- `2026-04-22` · {主诉} · 来自 {source_skill}
- ...

末尾用一段话点出「关注点是怎么变的」——比如从「卖什么」演进到「卖给谁」再到「怎么获客」。**这一段是你少数允许做总结的地方**，但只描述演进路径本身，不引申、不推测、不发挥。

---

## 二、已确认的结论

合并所有存档里的「已得出的结论」字段。去重（语义相近的合并），按时间倒序（新结论在前）。

格式：

- {结论原文} · 出自 {对应存档的标题} · {对应日期}

如果一条结论在后续存档里被推翻或修正，**两条都列出来**，新的在前，旧的在后并加 `（已被后续诊断修正）` 标注。

---

## 三、已否决的方向

合并所有存档里的「用户已否决的方向」字段。

格式：

- {方向} —— 否决理由：{理由} · 出自 {存档标题} · {日期}

如果没有任何否决方向，写「（暂无）」。

---

## 四、当前未解决的问题

合并以下两类：
1. status 是 `in-progress` 的存档的「待验证假设」字段
2. 在最早存档中提出但从未在后续存档中被处理的方向

格式：

- {问题/假设原文} · 首次出现 {日期} · 当前状态：{进行中 / 待验证}

---

## 五、推荐下一步

汇总所有存档的「推荐下一步」字段 + `next_skill` 字段。

按优先级排：
1. 最新存档推荐的下一步（最优先）
2. 反复出现但还没走的推荐
3. 早期推荐但已经被新推荐替代的（标注「已被后续推荐替代」）

格式用一段话写出来，不要列点。一段话讲清楚下一步该做什么、为什么、对应哪个 skill。

---

## 六、附录：存档索引

按时间正序列出所有存档文件：

| 日期 | 标题 | 状态 | source_skill | 文件 |
|---|---|---|---|---|
| 2026-04-15 | 卖什么没想清楚 | 进行中 | dbs-diagnosis | `{存档根目录}/sessions/{项目名}/20260415-...md` |
| ... | ... | ... | ... | ... |

状态字段对用户展示时翻译成中文：进行中 / 已结论 / 已放弃。

---

报告由 dbskill 自动生成。原始存档见 `{存档根目录}/sessions/{项目名}/`。如需更新报告，再次运行 `/dbs-report`。
```

### Step 5：写完之后

写完文件后给用户一段回执：

```
报告已生成：{存档根目录}/reports/{项目名}/{文件名}

合并了 {N} 份存档（{起始日期} → {结束日期}）。
```

如果用户需要把报告发布到公众号或群里，加一句：

> 想发公众号或群里，可以用 `/dbs-wechat-html` 把这份 markdown 转成微信后台粘贴版。

用户没有发布需求时不加。

---

## 关键原则

1. **不从对话凭空总结**。报告内容必须能追溯到具体存档文件的具体字段。这是报告的可信度
2. **永不覆盖**。每次生成新文件，带时间戳。用户可以对比不同时点的诊断
3. **不发挥**。用户主诉的演进段落允许简短总结，其他全部直接搬运存档字段
4. **不主动出 PDF / HTML / 其他格式**。只生成 markdown，用户要别的格式自己处理

---

## 边界情况

- 存档文件里有用户标的「敏感信息」（比如真实收入、客户名字）→ 报告原样保留。不做脱敏。这是用户自己存进去的，要脱敏在 dbs-save 阶段做
- 多份存档之间结论冲突 → 都列出来，新的在前并标注修正关系
- 用户在 `{存档根目录}/sessions/` 之外手动放了个文件 → 不读。只读当前配置对应的 sessions 目录
- 当前存档位置为空，但用户确认以前存过 → 显示当前存档根目录，引导用户用 `/dbs-save location` 检查设置。不要跨目录自动搜索私人文件
- 存档跨年（最早 2025、最新 2026）→ 报告头部明确写出时间跨度

---

## 说话风格

1. **回执只一段**。文件路径 + 合并数量 + 时间跨度，不展开介绍
2. **不要解释报告里写了什么**。用户自己会打开看
3. **绝对不在报告 markdown 里加感叹号、表情、鼓励语**。这是给客户看的产物，不是给当前用户煽情

---

## 语言

- 用户用中文就用中文回复，用英文就用英文回复
- 中文回复遵循《中文文案排版指北》
- 报告本身用存档里的语言（如果存档是中文，报告就是中文）


---

完成当前任务后直接结束。只有用户明确询问下一步，且当前环境已经安装 `/dbs` 时，简短提示：「下一步不确定时，可以输入 `/dbs`。」

