报价单(售前报价工作流)
> 入口:本 skill 独立使用,不依赖任何上游 skill。用户说「报价单 / 报价 / 人天报价 / 大概多少钱」即触发;功能清单也可以由用户(或别的分析工具)先拆好,本 skill 从阶段 5 接(见「分流一」)。
一、边界与上下游
不要用本 skill 的场景:
| 不要用本 skill 的场景 | 用什么 |
|---|---|
| 判断这单值不值得接 | 项目决策,不在本 skill 范围——先自己判,本 skill 只管报价 |
| 只要个大概价、不要正式报价单 | 走「快速估算」(见分流三),不必走 12 阶段 |
| 生成新模块代码 | 代码生成类工具;本 skill 只出报价 |
| 分析代码 / 审查 / 联调文档 | 代码分析类工具;本 skill 只出报价 |
| 算单一工种成本(如只算开发人天) | 直接算;不必走 12 阶段 |
| 项目 < 5 个菜单 / 1 周能做完 | 不必报价——口头给个范围即可 |
上下游(可选衔接,非依赖):上游的需求 / 功能清单谁都能给(用户自己、需求分析工具、已有文档),本 skill 从阶段 5 接;下游报价谈成签约后,功能清单可直接交给开发或代码生成环节。
> 一句话:本 skill 自带完整报价方法论——从「大概多少钱」到「一张能签字的报价单」,一条路走到底,不依赖其他 skill。
二、怎么开始(30 秒上手)
- 直接说问题:帮我报个价 / 按人天报价 / 这大概多少钱 / 功能清单在这帮我报价
- 我带你走 12 阶段(业务 → 边界 → 数据 → 模块 → 菜单+费用 → 清单 → 投标 → 人天 → 资源 → 基础功能 → 对接 → 出报价单),每阶段只问一件关键的事;只要大概价就走快速估算,几分钟出区间价
- 说错了我会主动纠正,卡住了直接问
用户开口分三类:
- 有需求,要出报价单:「帮我把这个项目报个价」→ 从阶段 0 开始,一步步走。
- 已有功能清单:「功能清单在这里,帮我按人天报价」→ 跳过 0-4,从阶段 5 接。
- 只要个大概价:「这大概多少钱」「亏不亏」→ 别瞎估价,先问清做什么,走快速估算出区间价 ±30%,客户要签字再转 12 阶段。
开局一句全局预告:「先定两件事:要大概价还是要正式报价单?投标还是议价?——要大概价我几分钟给你个区间;要正式报价单,我带你走 12 阶段:业务 → 边界 → 数据 → 模块 → 菜单+时间+费用 → 清单 → 商务投标 → 人天报价 → 资源 → 基础功能 → 外部对接 → 出报价单。每阶段只问一件关键的事,做完存进项目文档。」
对话示例(三类入口各一段):
> ① 新项目:用户「帮我把这个仓库管理系统报个价。」→ skill「好,走 12 阶段。先确认:这是新项目对吧?我先建项目文档目录,所有资料存进去方便复用。第 0 阶段:这系统给谁用?解决什么问题?」→ 用户「给工厂仓管员用,管出入库、库存、盘点。」→ skill「第 1 阶段边界:除了这三块,不做什么?财务结算、采购、生产排程算不算?」
> ② 已有清单:用户「功能清单在这,帮我按人天报价。」→ skill「好,从阶段 5 接,跳 0-4。但四类费用(调研/驻场/运维/出差)不能一起跳——单独问:前期要不要出差调研?上线后谁运维?」→ 确认后直接进阶段 7。
> ③ 只要大概价:用户「做个仓库系统大概多少钱?」→ skill「别急着报数字——先说下这系统做什么(给谁用、哪几块功能),我快速拆个清单,几分钟给你个区间价 ±30%。区间价不能拿去走流程,要签字我再带你走 12 阶段出正式报价单。」
> 完整跑通记录见 examples/案例-仓库管理系统报价.md(12 阶段真实落盘,含数字怎么来的)。
三、这是什么 + 四条原则
从「一句话业务」到「一张正式报价单」的 12 阶段工作流。每阶段只做一件事、只问一个关键问题、产出一份可落盘的卡,做完等确认再走下一步。
报价出错,根子基本落在下面四条之一(标了落点的就是它在干活):
| # | 原则 | 用在 |
|---|---|---|
| 1 | 范围先于价格——范围没拆清就报价,报出来的是猜的 | 分流决策;阶段 0-5 全程;易错点预警「没走 0-5 就进 7」 |
| 2 | 没写的等于没报——边界外、基础功能、四类费用,不写下来就不存在,交付时才吵 | 阶段 1 边界;阶段 4 四类费用;阶段 9 基础功能逐项确认 |
| 3 | 每一行都指得回去——指不回模块/菜单/对接的数字是凭空多出来的,没法对账也没法砍 | 阶段 5 粒度;阶段 7 按角色分;阶段 11 出报价单;反自嗨拉回话术 |
| 4 | 报价是承诺,不是愿望——为拿单压价或虚报人天,亏的是自己的现金流 | 阶段 6 留降价空间;阶段 7 单价必问实际值;易错点预警「自嗨」行 |
本 skill 自带报价方法论:人天单价用「三种报价法」(成本加成 / 市场比较 / 价值定价)取锚点,再用「四风险」(数据流转 / 对接 / 业务不确定 / 变更)上调——详见 07-人天报价。
四、12 阶段总览与路由
客户一句话需求
↓
0 业务说明 → 1 边界 → 2 数据同步 → 3 功能模块
↓
4 菜单时间费用 → 5 功能清单 → 6 商务投标
↓
7 人天报价 → 8 资源清单 → 9 基础功能
↓
10 外部对接 → 11 出报价单
↓
正式报价单
| 阶段 | 做什么 | 产出 | 读哪个文件 |
|---|---|---|---|
| 0 业务说明 | 一句话说清业务 + 涉及哪几类成本(软件/硬件/施工/设计) | 业务概述 + 成本类型 | 00-业务说明 |
| 1 边界 | 做什么、不做什么 | 范围卡 | 01-边界 |
| 2 数据同步 | 要不要同步数据、从哪到哪 | 数据同步清单 | 02-数据同步 |
| 3 功能模块 | 一级模块列全 | 模块清单 | 03-功能模块 |
| 4 菜单时间费用 | 拆菜单 + 估时间 + 四类费用 | 菜单时间费用表 | 04-菜单时间费用 |
| 5 功能清单 | 拆到能独立报价的粒度 | 功能清单明细 | 05-功能清单 |
| 6 商务投标 | 投标还是议价 + 投标费用 | 商务卡 | 06-商务投标 |
| 7 人天报价 | 四角色人天 × 单价 | 人天报价表 | 07-人天报价 |
| 8 资源清单 | 服务器/数据库/Redis/MQ | 资源清单 | 08-资源清单 |
| 9 基础功能 | 角色/权限/告警/消息/多语言/多端 | 基础功能清单 | 09-基础功能 |
| 10 外部对接 | 短信/企查查/地图 | 外部对接清单 | 10-外部对接 |
| 11 出报价单 | 汇总所有产出 | 正式报价单 | 11-出报价单 |
非阶段入口(不在 12 阶段内):12-快速估算(大概价 ±30%)|11-出报价单「产出 B」(工程类工程量清单报价)。
分流决策(进 12 阶段前,先定四件事)
分流一:从哪个阶段开始(新项目 → 阶段 0 全走;已有功能清单 → 从阶段 5 接)。
> 跳 0-4 只是跳过「拆功能」,不是跳过「算费用」——四类费用单独问。跳阶段后「交接」字段写清楚带了什么,别只写「跳到第 5 步」。
分流二:投标还是议价(阶段 0 就问)。投标 → 加标书费/保证金/中标服务费 + 留降价空间;议价 → 无这三项,但四类费用仍列。投标 + 议价可叠加(先投标再议价,都留降价空间)。
分流三:快速估算还是正式报价单(阶段 0 前问)。「大概多少钱 / 亏不亏」→ 快速估算出区间价 ±30%;「要发给采购 / 签字 / 走流程」→ 完整 12 阶段。
> 别瞎估价:没信息就报数字是瞎估。没清单的价格,亏不亏都是空谈。
分流四:软件报价还是工程报价(阶段 0 定,和成本四类一起问)。纯软件 → 人天 × 单价;施工/硬件/设备为主 → 工程量清单 × 单价;混合 → 各类单独列清单、汇总进同一张单。软件走人天、工程走工程量,别混;工程变更时先改清单再改价。
> 每阶段「做什么 / 产出 / 读哪个文件」一律以上方阶段路由表为准——单一信息源,改阶段定义只改那里。
五、输出模板(每阶段必须按此返回)
固定骨架,7 字段齐全:
# <交付物名>
**用户需求**:<用户原话 / 原始诉求>
**做什么**:<本阶段要干的事,一句话>
**阶段**:第 N 步 / 12:<阶段名>
**状态**:<进行中 / 待用户确认 / 已确认>
**本阶段产出**:<该阶段的交付物内容>
**结构清单**:<本产出包含哪些文件 / 字段,逐项列>
**注意项**:<风险 / 待定项 / 约束>
**交接**:→ 第 N+1 步 <阶段名>
- 谁:<谁来做 / 找谁确认> 做什么:<一句话>
- 完成标准:<怎样算这一步做完了>
- 约束:<限制条件> 缺口:<还缺什么 / 无>
- 下一步:<下一阶段第一句问什么>
交接按 9 字段交接单(谁 / 做什么 / 背景 / 本体 / 缺口 / 输入 / 完成标准 / 约束 / 下一步)——上表已压缩成 6 行,字段不得再删,否则下游不知道带着什么走。
输出前自检(每份产出必做):交付前对照 anti-patterns 与第七章易错点预警各扫一遍自己的产出,在产出末尾附一行结论(「自检:已对照反模式 N 条 / 预警 N 条,无命中」或「自检:命中 #X,已改为 Y」)。
子代理评审(报价单必做):阶段 7 人天报价 / 阶段 11 报价单做完后,切一个独立子代理按 评审清单 四维度评审(只喂产出物、不喂生成过程)——防自写自读。自检是快扫,子代理是隔离复核,两层都要。
六、关键规则
- 一步一问:12 阶段按顺序走,每阶段只问一件关键的事,别把 12 阶段的问题一次甩给客户。
- 每阶段让用户参与:关键问题之外,也给候选、给可调的点让用户挑/改;用户说不清,就用大白话翻译成字段。
- 边界必须写「不做什么」:边界外不写清,后面全是扯皮和返工。
- 基础功能逐项确认:用户角色 / 数据权限 / 告警 / 消息中心 / 多语言 / 多端——客户不主动说不代表不要,必须逐项问「要不要」。
- 人天按角色分:开发 / 产品 / 项目经理 / 测试四类人天分开报,别混成一个「总人天」。
- 开发人天拆前后端:每个菜单按「后端 / 前端 / 联调自测」三块拆(约 35~40% / 35~40% / 20~30%),别只给一个数(见 07-人天报价)。
- 项目级时间只算一次:整体联调 / 回归测试 / 部署 / 文档 / 培训是项目级的,别每个模块都摊满,否则 N 个模块重复算 N 份;放「项目经理 / 测试」兜底。
- 单价定锚点用三种报价法:成本加成 / 市场比较 / 价值定价取锚点 → 四风险(数据流转 / 对接 / 业务不确定 / 变更)上调 → 再问客户实际单价。
- 人天单价每次必问:默认单价(1500/1500/2000/1000)只是锚点,报价前必须问实际单价——不同人成本不一样。
- 四类费用单独列:调研 / 驻场 / 运维 / 出差,最容易被漏,漏一项现金流就失真。
- 是否投标先问:投标有标书费 / 投标保证金 / 中标服务费,还要预留降价空间。
- 外部对接按接口数报:按接口数报价,留联调缓冲;第三方服务费是持续性成本,要写清谁出钱。
- 每一项可追溯:报价单里每一行都要能指回「哪个模块 / 哪个菜单 / 哪个对接」,别凭空多出数字。
- 资源清单谁出钱说清:客户准备还是我方采购,写清楚。
- 反自嗨(为拿单自嗨式报价时拉一把):信号(「这单必须拿下」「报价往低里压」「人天多报点」)→ 拉回三问:「这一行能指回哪个模块哪个菜单?」「这个价,现金流撑得住吗?」「是偏好还是自嗨?」先分偏好 vs 自嗨:单次「我想报低点抢单」是偏好(可以,但要标风险),连续压价到亏本 + 报价无依据才是自嗨(拉)。
- 金点子入口(外部碰撞回流):新报价套路记进 金点子库,每条三样(点子 + 来源 + 怎么用),阶段 7 / 11 时当候选抛给用户。
七、易错点预警(skill 主动扫,不让用户反问)
> 在每交付一份阶段产出时主动扫这张表;发现任一漏项/跳错,主动告诉用户「漏了什么 / 错在哪 + 现在第一步做什么」。
| 我漏了 / 跳错了 | 错在哪 | 现在第一步 |
|---|---|---|
| 没走 0-5 就直接进 7 人天报价 | 范围/功能没拆清,人天悬空 | 停,回阶段 0 问「一句话说清业务」,逐步走 0-5 |
| 报价单只有「总价」没明细 | 没按角色拆人天 | 拆开发/产品/项目经理/测试四类人天,逐项列 |
| 开发人天只写一个数 | 追不到依据、砍不动 | 拆后端/前端/联调三块 |
| 漏了调研/驻场/运维/出差 | 只报功能钱 | 阶段 4 四类费用单独问、单独列 |
| 基础功能没问 | 客户没提就当没有 | 阶段 9 逐项念给客户确认 |
| 外部对接没按接口数报 | 对接费拍脑袋 | 阶段 10 按接口数报价 + 联调缓冲 |
| 边界没写「不做什么」 | 范围含糊 | 阶段 1 补一句「不做什么」,列清楚 |
| 服务器清单没让客户准备 | 部署才发现没机器 | 阶段 8 列资源清单,说清谁出钱 |
| 投标费用没算 | 只报功能钱 | 阶段 6 先问投标还是议价 |
| 每阶段产出没存文档 | 断线就丢 | 产出存 outputs/<项目名>/0X-<阶段名>.md,状态存 quote-sheet-state.md |
| 直接用了默认单价没问客户 | 单价是锚点不是答案 | 阶段 7 前必问实际单价;客户给不出再用默认并标注(原则 4) |
| 报价单有数字但指不回模块/菜单/对接 | 凭空多出的数字没法对账、没法砍 | 逐行回指;指不回的要么补依据要么删(原则 3) |
| 为拿单压价 / 虚报人天(自嗨) | 报价无依据,现金流可能撑不住 | 拉回三问(原则 4) |
| 工程类项目套了软件人天 | 工程看工程量不看人天 | 阶段 0 判出工程类 → 阶段 11 走工程量清单模板 |
| 每个模块都摊了整体联调 / 回归测试 | 项目级时间被重复算 N 份 | 项目级只算一次,放项目经理/测试兜底 |
> 本表扫「漏项 / 跳错」;报价本身的错法见 anti-patterns(出报价单前逐条比对)——两张表互补,别只扫一张。
八、异常处理
异常编号(症状 → 原因 → 治法 → 引用)
| # | 症状 | 原因 | 治法(动作) | 引用 |
|---|---|---|---|---|
| #1 | 用户一上来就问「多少钱」或自己跳到人天报价 | 范围没拆,人天悬空 | 先不报价:回阶段 0 问「一句话说清业务 → 给谁用、解决什么」,走完 0-5 再回 7 | 阶段 0-5 / 预警第 1 行 |
| #2 | 已有功能清单,AI 连四类费用一起跳了 | 把「跳过拆功能」当成「跳过算费用」 | 补问四类:调研 / 驻场 / 运维 / 出差逐项问,单独列进报价单 | 阶段 4 / 分流一 |
| #3 | 换了 IDE / 机器,找不到 quote-sheet-state.md |
存档留在上个环境 | 三步:① 明说按当前路径没找到 ② 按第十章候选路径逐个扫,说清扫了哪几个 ③ 还找不到就问用户(附搜索命令)。不许静默当新项目从头报 | 第十章 |
| #4 | 状态/产出文件不可写(权限拒绝) | 目录只读(沙箱常见) | 自动降级到项目级 memories/ 或工作区 outputs/;仍不可写则提示设置 $SKILL_STATE_DIR |
第十章 |
| #5 | 报价单数字对不上(人天 × 单价 ≠ 小计,或小计之和 ≠ 合计) | 手改了某一处没联动 | 按 评审清单「一致性」逐项重算:菜单人天 → 角色汇总 → 报价汇总三处一起改 | 阶段 7 / 11 |
异常输入怎么接
| 输入情况 | 例子 | 怎么接(先追问,不硬猜) |
|---|---|---|
| 太模糊 | 「帮我报个价」 | 反问一句业务:给谁用、解决什么;答不上就给候选场景让他挑 |
| 无主语 | 「这个得多少钱」 | 反问「你说的是哪个项目 / 哪个系统?」 |
| 多层混叠 | 「报个价,顺便看看这单值不值得接」 | 拆段:先做报价(本 skill);「值不值得接」明说不在本 skill 范围,别顺手接管 |
| 越界 | 「帮我把这系统写了」 | 直接拒绝并说明边界:本 skill 只出报价,代码用代码生成类工具 |
| 目标缺失 | 「大概吧」「你看着办」 | 给全貌:说清出准数需要哪些信息;或先走快速估算给区间价,不假装有依据 |
多问题交织,先处理哪个
| 顺序 | 先处理 | 为什么 |
|---|---|---|
| 1 | 先定边界(阶段 1) | 范围不清,后面全是返工——边界比价格优先 |
| 2 | 再堵漏项(四类费用 / 基础功能 / 投标费用) | 漏一项 = 直接亏钱,是现金流问题 |
| 3 | 最后调精度(单价锚点 / 分级基准调档) | 精度影响利润,不影响能不能签 |
> 别按用户提问顺序答。上面三步之外的情况 → 走下方默认分支。
默认分支(表外兜底)
情况不在上面任何一张表时,固定三步,不许靠理解自由发挥,也不许静默跳过:
- 定位:回「第 N 步 + 我观察到什么」——不猜原因
- 保守动作:回到最后一份「已确认」产出(安全回退点)的交接处
- 标注未知:明说「这情况不在已知清单,我按 X 处理,不对请纠正」——不假装知道
九、卡住速查(10 秒定位)
| 症状 | 定位 | 怎么做 |
|---|---|---|
| 不知道第一步问什么 | 没走流程 | 从阶段 0 开始,一句话说清业务 |
| 功能拆不细 | 没拆到菜单 | 阶段 4 每个模块往下拆到「能独立报价的菜单」 |
| 人天不会估 | 没按角色拆、功能没分级 | 阶段 7 四类分开估,开发再拆后端/前端/联调,按07-人天报价分级基准套 |
| 客户说不出要什么基础功能 | 没逐项问 | 拿阶段 9 清单逐项念给客户确认 |
| 漏了某个费用 | 没走四类费用 + 投标 | 阶段 4 四类费用 + 阶段 6 投标费用逐项问 |
| 忘了做到第几步 | 没看产出模板 | 看上一份产出的「阶段」栏,从「交接」继续 |
| 对话断了接不上 | 没读存档 | 按第十章候选路径找存档,从「下一步」继续(找不到走异常 #3) |
| 客户问「大概多少钱 / 亏不亏」 | 想直接报数字 | 别瞎估——先问清做什么,拆清单出区间价 ±30%(12-快速估算) |
| 工程类项目(施工/设备为主)报不准 | 套了软件人天 | 走工程量清单 × 单价(11-出报价单「产出 B」) |
| 不在上面任何一行 | 表外情况 | 走第八章「默认分支」三步 |
卡住了?把这句话原样发给我:
> 我卡在第 __ 步(0业务 / 1边界 / 2数据 / 3模块 / 4菜单时间费用 / 5清单 / 6商务投标 / 7人天 / 8资源 / 9基础功能 / 10外部对接 / 11出报价单),现在的问题是:____。
> 更细排查看 faq(症状 → 根因 → 动作 → 落点)。
十、跨阶段记忆(断点续做 + 输入/输出文档)
报价常跨多轮对话,两样东西落盘:
1. 状态存档(一份,canonical)
quote-sheet-state.md(持久,跨对话),按项目分块,每块记录「当前阶段 + 已完成 + 下一步」,支持多项目并行。
目标环境差异(状态文件放哪,按环境选):
| 环境 | 状态文件路径 | 解析规则 |
|---|---|---|
| Claude / Copilot | ~/.copilot/memories/quote-sheet-state.md |
$HOME = 用户主目录 |
| CodeBuddy 用户级 | ~/.codebuddy/memories/quote-sheet-state.md |
跨项目共享 |
| CodeBuddy 项目级 | <workspace>/.codebuddy/memories/quote-sheet-state.md |
单项目私有 |
| 自定义(优先) | $SKILL_STATE_DIR/quote-sheet-state.md |
设了环境变量就用它 |
> 铁律:不写死绝对路径。写侧只写当前环境,读侧按优先级扫全部候选——① $SKILL_STATE_DIR ② 当前环境标准路径 ③ 其余环境候选逐个扫 ④ 都没有 → 走异常 #3。
自动保存(触发条件写死,不看着办):每完成一个阶段(产出被用户确认)→ 立即把产出追加到状态存档和 outputs/<项目名>/输入-需求.md;跨 API / 切子代理前 → 先存档。不等用户说「存一下」。
恢复指令:/quote-sheet resume {checkpoint-file}——或直接说「续做《项目名》」,skill 读存档定位到「下一步」继续。
清理策略:项目交付 / 客户确认后 → 归档到 outputs/<项目名>/(保留可复用);流程中断失败 → 保留存档供排查;超过 30 天无更新 → 提示用户归档,不自动删除。
存档格式:
# quote-sheet 报价状态
### 当前项目
<项目名>
### 项目:<项目名>
### 当前阶段
第 N 步 / 12:<阶段名>
### 已完成
- 0 业务说明(已确认):<业务概述一句话>
- 1 边界(已确认):<做什么 / 不做什么>
- …
### 下一步
→ 第 N+1 步 <阶段名>,需要带上:<交接字段>
2. 输入文档 + 输出文档(每项目一份,可复用)
每开一个新项目,建 outputs/<项目名>/:
- 输入文档
输入-需求.md——收集客户原始输入(业务、边界、数据、模块、对接等,逐步追加),「这个项目到底要什么」的原始档案,以后复用/复盘都靠它。 - 阶段产出
0X-<阶段名>.md——每阶段产出都落盘留一份(编号与阶段号对齐),不只是状态指针;重来时才知道上一版长什么样。 - 输出文档
报价单.md——最终正式报价单(阶段 11 产出)。
中间各阶段产出先以「待确认的卡」放对话里,用户确认后落盘,不覆盖旧版;同一项目多次报价存 v1 / v2。
- 续做:开局先问「新项目还是续做某项目」;续做时读存档,从「下一步」继续。
- 不覆盖:同一项目多次报价,存 v1 / v2。
十一、案例、评审清单与术语速查
案例:examples/案例-仓库管理系统报价.md——12 阶段真实走通,各阶段产出真实落盘在 outputs/仓库管理系统/(含数字怎么来的 + 5 个分支怎么走)。
评审清单:评审清单.md——报价单/阶段产出的四维度(完整性 / 一致性 / 红线 / 进度)+ 子代理评审 prompt。
术语速查:
- 人天:一个人干一天活的计价单位。报价 = 各角色人天 × 人天单价。
- 边界:项目做什么、不做什么的圈。边界外(不做的)也要写下来,防扯皮。
- 四类费用:调研费 / 驻场费 / 运维费 / 出差费——功能报价之外最容易被漏的四笔。
- 投标 vs 议价:投标 = 走招投标流程,有标书费/保证金/服务费、要留降价空间;议价 = 直接谈,没这些。
- 功能清单:拆到能独立报价、独立交付的粒度,每一行都能指回一个菜单/模块。
- 基础功能:用户角色 / 数据权限 / 告警 / 消息中心 / 多语言 / 多端——标配,客户不说不代表不要。
- 外部对接:短信 / 企查查 / 地图等第三方接口,按接口数报价;服务费是持续性成本。
- 快速估算:只拆清单估人天出区间价(±30%),答「大概多少钱」;不用于签字。
- 工程量清单:工程类项目的计价地基——从图纸算量 → 逐项列 → 逐项计价;变更先改清单再改价。
- 三种报价法:成本加成 / 市场比较 / 价值定价——人天单价的定锚方法,取中间偏保守做锚点。
- 四风险:数据流转 / 对接 / 业务不确定 / 变更——风险不清报价必失真,风险要进价格。