Doa quotation
Skill medalsoftchina/workcopilot/embedded-skills/doa-quotation
从需求描述生成经典报价 Excel 或敏捷任务拆分 Excel,并优先复用当前工作区中的客户/项目模板。 完整工作流: (1) 用户提供需求、客户名称、项目名称或参考模板 (2) 使用 vscode_askQuestions 让用户选择“经典报价”或“敏捷方式” (3) 根据客户名称、项目类型、历史模板和现有 Python/Excel 文件确定输出结构与风格 (4) 生成或更新 Excel / Python 生成脚本,并校验工时、费用、税率、Sprint 拆分和样式一致性 USE FOR: 做报价、工时报价、项目报价、经典报价单、敏捷任务拆分、Sprint 拆分、敏捷排期、报价 Excel、 工时报价 Excel、报价模板复用、按客户生成报价、按项目生成报价、生成报价脚本。 DO NOT USE FOR: 接口文档(使用 doa-apidoc)、PPT(使用 doa-ppt)、会议纪要(使用 doa-metting)。From its SKILL.md
npx -y skills add medalsoftchina/workcopilot --skill doa-quotationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
20.9 KB, ~7.4k tokens by cl100k_base, as published. Nobody here has run it
报价与敏捷任务拆分生成
工作流概览
用户提供需求/客户/项目信息
→ 确认输出模式(经典报价 / 敏捷方式)
→ 搜索并比对当前工作区模板
→ 结构化整理报价项或 Sprint/任务项
→ 生成 Excel 或 Python 生成脚本
→ 校验工时/金额/税率/样式
→ 输出最终文件路径与说明
何时使用
- 用户说“帮我做报价”“生成报价单”“整理工时报价”
- 用户说“按敏捷方式拆任务”“做 Sprint 拆分”“生成敏捷排期 Excel”
- 用户提供客户名称、项目名称,希望参考已有模板生成新的 Excel
- 用户提供 Python/openpyxl 脚本或历史 Excel,要求按同类风格生成新版本
Step 0: 必须先确认输出模式
当用户只说“做报价”或“做任务拆分”,必须先使用 vscode_askQuestions 确认:
- 经典报价
- 适合固定范围、按模块/工时/费用输出传统报价单
- 敏捷方式
- 适合按 Sprint、任务、人天、验收标准输出敏捷任务拆分表
推荐问题:
问题:本次希望采用哪种输出方式?
选项:
- 经典报价 ← recommended
- 敏捷方式(Sprint / 任务拆分)
如果用户已经明确说了“经典报价”或“敏捷方式”,可以跳过这一步。
Step 0.5: 必须确认期望总工时范围
在进入模板选择和任务拆分前,必须再使用 vscode_askQuestions 确认期望的总工时范围,单位为人天。
推荐问题:
问题:本次期望的总工时范围是?
选项:
- 10人天以下
- 10-30人天
- 30-50人天
- 50-70人天 ← recommended
- 70-100人天
使用规则:
- 这个范围是生成报价和任务拆分时的重要约束,不应跳过
- 若用户已明确给出目标工时或目标预算可推导工时范围,可直接采用并在最终说明中写明
- 若用户选择的工时范围与参考模板差距很大,应优先调整任务粒度、Sprint 数量或模块范围,而不是机械照搬模板
- 经典报价与敏捷方式都应记录该范围,作为总人天校验依据
Step 1: 收集最小必要信息
至少确认以下信息;如用户未提供,继续追问缺失项:
- 客户名称
- 项目名称
- 需求描述或范围说明
- 输出模式
- 期望总工时范围
- 人天单价(必填,单位:元/人天,例如 2200、3000、3500)
- 是否有参考模板
人天单价必须由用户提供,不使用任何默认值。如果用户未主动给出,使用
vscode_askQuestions追问。
建议补充信息:
- 报价主体
- 默认:用户公司名称(需用户提供)
- 税率
- 默认沿用模板;无模板时单独确认
- 交付周期
- 角色与单价口径
- 例如 PM/BA 与 PG/PT 是否同价,SA、QA 是否有独立单价
- 是否需要同时输出 Python 生成脚本
Step 2: 先找模板,再决定结构
优先在当前工作区搜索并复用现有模板,而不是从零随意生成。
模板搜索优先级
- 同客户、同项目族的 Excel 或 Python 生成脚本
- 同类型文档模板
- 报价单、敏捷任务拆分、Sprint 计划、工时校验
- 用户本次显式提供的附件或脚本
- 如果仍然没有,再基于通用结构新建
客户名称自动匹配规则
在搜索模板前,优先根据客户名称锁定候选目录,再在目录内按输出模式挑选模板。
当前工作区已知映射
以下为示例映射,实际使用时根据工作区中的客户目录自动发现。
- 客户名称包含:
示例客户、ExampleCorp- 优先目录:
ExampleCorp/ - 经典报价优先模板:
ExampleCorp/示例项目.工时报价.xlsx
- 敏捷拆分优先模板:
ExampleCorp/示例项目_敏捷任务拆分.xlsx
- Python 参考脚本:
ExampleCorp/示例项目_敏捷任务拆分.py
- 优先目录:
匹配流程
- 先读取用户输入中的客户名称
- 如果客户名称命中已知映射,先限定到对应目录搜索
- 在对应目录中按输出模式筛选:
- 经典报价:优先
报价、工时报价、quotation - 敏捷方式:优先
敏捷任务拆分、Sprint、工时校验
- 经典报价:优先
- 如果同目录存在多个候选模板:
- 优先用户显式提到的项目名
- 其次优先最新日期版本
- 再其次优先已有配套 Python 脚本的模板族
- 如果客户名称未命中任何已知映射,再退回通用搜索策略
使用原则
- 命中客户目录时,不要跨目录随意混用其他客户模板
- 同一客户目录下,经典报价和敏捷模板可以共用配色、公司抬头、税率口径,但仍应分别遵守各自模板结构
- 如果用户上传了新的客户模板,应优先以用户上传模板覆盖目录默认模板
搜索建议
- 先搜索客户名、项目名、关键词:报价、拆分、Sprint、工时、POC
- 同时查找:
.xlsx、.py、.html、.md - 如果已有 Python 脚本可生成 Excel,优先继承其表结构、颜色、字体、列宽、汇总方式
复用原则
- 保持原有模板的视觉风格和结构层级
- 保持客户名称、项目名称、币种、税率口径一致
- 不随意更换已成熟模板中的字段命名方式
- 如果模板存在明显数据错误,可以修正,但需在最终说明中指出
Step 3A: 经典报价模式
适用于固定范围报价、模块报价、工时报价单。
经典报价默认模板
经典报价统一使用以下模板结构生成。该模板已内嵌在骨架脚本中。
脚本路径:
references/classic-quotation-template.py品牌素材:brand-assets/company_logo.png(请替换为您的公司 Logo)
模板画像
- 面向客户的正式
Service Quotation / 服务报价单 - 工作簿 2 个工作表:
项目报价+开发工作量 - 左上角(A1:D6)嵌入公司 Logo(缩小显示 150×35px,原图 445×104px)
- 中英文双语字段,适合对外发送
- 统一人天单价(由用户提供),PM/BA 与 PG/PT 默认同价
- 无折扣行,只有"未税小计" + "含税合计"
- 税率默认 6%,金额格式
¥#,##0.00 - 字体:Sheet 1 项目报价用微软雅黑,Sheet 2 开发工作量用 DengXian(等线),浅蓝表头底色(
#D9EAF7)
推荐文件命名
- 输出目录:
output/{客户名称}.{项目名称}/(每次新任务创建独立子文件夹) {客户名称}.{项目名称}.工时报价 {YYYYMMDD}.xlsx- 若同项目存在多个工时版本,可追加
_V2、_45MD等后缀
项目报价 页布局(A1:N26,共 26 行)
┌────────────────────────────────────────────────────────────┐
│ [Logo 445×104] │ Service Quotation │ {您的公司名称} │
│ A1:D6 │ 服务报价单 E1:K6 │ L1:N6 (右对齐) │
├─────────────────┴────────────────────┴────────────────────┤
│ To: │ From: │
│ Contact/联系人 Company │ Contact Email Phone │
│ Address Email Phone │ Quo date Due Date │
├────────────────────────────────────────────────────────────┤
│ 项目服务价格 section header │
│ PM/BA: =E小计 * {单价} │ PG/PT: =F小计 * {单价} │
│ 未税小计 =L15+L16 │ 含税合计 =L17*1.06 │
├────────────────────────────────────────────────────────────┤
│ CR/Enhancement 费用(同结构,QTY留空) │
├────────────────────────────────────────────────────────────┤
│ Notes/备注:(备注1~7条,wrap_text) │
└────────────────────────────────────────────────────────────┘
关键公式:
H15==开发工作量!E{小计行}(PM/BA 人天引用)H16==开发工作量!F{小计行}(PG/PT 人天引用)L15==H15*J15,M15==ROUND(H15*J15+H15*J15*N15,2)L17==L15+L16(未税小计),L18==L17*1.06(含税合计)
开发工作量 页布局
| 列 | 内容 |
|---|---|
| B | ID(按场景分组,同场景多行时垂直合并) |
| C | 用户场景(同场景多行时垂直合并) |
| D | 任务名称 |
| E | PM/BA/SA |
| F | PG/PT |
| G | 费用小计(同场景多行时垂直合并,公式按场景组汇总 =SUM(E{组起}:F{组止})*单价) |
| H | 备注 |
- 场景分组合并:相同
scenario的相邻行,B 列(ID)、C 列(用户场景)和 G 列(费用小计)垂直合并 - 小计行:
=SUM(E{start}:E{end}) - 合计行:
=SUM(G{start}:G{end}),标注"不含税价"
默认口径与样式
| 参数 | 默认值 | 说明 |
|---|---|---|
| 统一单价 | 用户提供(无默认值) | PM/BA 与 PG/PT 默认同价 |
| 税率 | 6% | 增值税 |
| 账期 | Net30天 | 报价日期 +30 |
| 字体 | 微软雅黑 / DengXian | Sheet1 微软雅黑,Sheet2 DengXian(等线) |
| 表头底色 | #D9EAF7 | 浅蓝 |
| 金额格式 | ¥#,##0.00 | 两位小数 |
| Logo | company_logo.png | 显示 150×35px(原图 445×104) |
人天单价必须由用户提供,不使用任何硬编码默认值。税率和客户专属口径同样以用户输入为准。
Logo 自动注入
Logo 内嵌在 brand-assets/company_logo.png,脚本自动查找并缩小显示(150×35px)嵌入 A2 位置。
如未找到 Logo 文件,A1:D6 区域留空,不影响其他内容生成。
经典报价完成标准
- 明细金额可回溯到人天和单价
- 项目报价页金额通过公式引用开发工作量页的小计
- Logo 正确嵌入左上角
- 文件名、抬头、公司名、客户名全部正确
经典报价内容整理规则
- 把需求拆成可报价模块,不要直接复制原始需求长文
- 优先使用"场景 + 任务名称 + PM/BA 人天 + PG/PT 人天"的结构
- 如果用户给的是结果导向需求,先推导实施模块
- 费用公式统一用
=SUM(E:F)*单价,不按角色差异定价 - 涉及税率时,明确"不含税 / 含税"口径
- 生成后检查总人天是否落在用户选择的工时范围内;若超出,应收缩范围、拆阶段或说明超出原因
Step 3B: 敏捷方式模式
适用于 Sprint 排期、任务拆分、用户故事追溯、工时校验。
敏捷方式标准模板规则
如果用户提供了类似 C-level_Conversations_Assistant_POC_敏捷任务拆分.xlsx 的模板,或当前工作区存在同类模板,则优先按该模板族生成。
模板画像
该类模板的核心特征是:
- 以
Sprint总览作为首页,而不是单纯的任务表 - 至少包含 7 个工作表,形成“总览 + 明细 + 校验 + 图表 + 风险 + 追溯 + 仪式”的完整闭环
- 同时体现报价口径与敏捷执行口径
- 既能给管理层看总览,也能给项目团队看任务拆分细节
推荐文件命名
- 输出目录:
output/{客户名称}.{项目名称}/(每次新任务创建独立子文件夹) {项目名称}_敏捷任务拆分.xlsx{客户名称}.{项目名称}_敏捷任务拆分.xlsx- 如果属于某个 POC 或阶段项目,可保留
POC、Phase1、SprintPlan等关键词
推荐工作表结构
Sprint总览- 项目概览 + 6 个左右 Sprint 的目标、周期、里程碑、验收标准
任务明细拆分- 核心任务表,按任务 ID、Sprint、分类、角色、人天、依赖、验收标准拆分
工时校验- 按 Sprint 汇总 PM/BA、PG/PT、费用、累计费用,并映射回报价项
燃尽图- 计划剩余人天、Sprint 交付人天、累计交付、完成比例、理想线
风险追踪- 风险描述、影响 Sprint、影响程度、发生概率、应对措施、责任人、状态
用户故事追溯- 用户故事与任务、Sprint、人天、费用的映射关系
Scrum仪式- Sprint Planning、Daily Standup、Sprint Review、Retrospective、Backlog Refinement、DoD
Sprint总览 推荐字段
- 项目名称
- 开发商 / 报价主体
- 客户
- 迭代周期
- 总周期
- 方法论
- 报价总额(不含税)
- 报价总额(含税)
- 税率
- PM/BA 人天
- PG/PT 人天
- 总人天
Sprint 总览表推荐列:
- Sprint
- 名称
- 周期
- Sprint目标
- PM/BA 人天
- PG/PT 人天
- 费用小计(不含税)
- 交付里程碑
- 验收标准
任务明细拆分 推荐列
- 任务ID
- Sprint
- 报价ID
- 分类
- 子项
- 任务名称
- 任务描述
- 负责角色
- PM/BA 人天
- PG/PT 人天
- 费用(不含税)
- 优先级
- 前置依赖
- 用户故事ID
- 验收标准
- 状态
工时校验 推荐列
- Sprint
- PM/BA 人天
- PG/PT 人天
- 人天合计
- 费用(不含税)
- 累计费用
- 对应报价ID
- 校验说明
并建议追加一个“报价工作量 → Sprint 映射对照”区块,用于把报价模块映射回 Sprint。
燃尽图 推荐列
- 时间节点
- 计划剩余人天
- Sprint交付人天
- 累计交付人天
- 完成比例
- PM/BA 累计
- PG/PT 累计
- 累计费用(不含税)
- 理想线
风险追踪 推荐列
- 风险ID
- 风险描述
- 影响Sprint
- 影响程度
- 发生概率
- 应对措施
- 责任人
- 状态
- 更新日期
用户故事追溯 推荐列
- 用户故事ID
- 用户故事描述
- 关联任务ID
- 关联Sprint
- PM/BA 人天
- PG/PT 人天
- 费用(不含税)
Scrum仪式 推荐列
- 仪式名称
- 频率
- 时长
- 参与人
- 目的
- 输出物
并建议在该页追加 Definition of Done 清单。
样式与视觉规则
- 主题色以商务蓝系为主,深蓝表头、中蓝汇总、浅蓝副标题
- 默认字体沿用微软雅黑
- 主表头白字深底,正文使用浅灰斑马纹
- 每个 Sprint 可使用单独的浅色底区分行块
- 优先级推荐:
P0红色、P1橙色、P2黄色 - 金额统一
¥#,##0 - 建议启用冻结窗格与筛选
敏捷方式完成标准
- Sprint 总览、任务明细、工时校验三者数据一致
- 总人天、总费用与报价口径对齐
- 每个 Sprint 都有目标、里程碑、验收标准
- 每个核心任务都有责任角色、依赖和验收标准
- 风险、追溯、Scrum 仪式页至少保留基础结构,不能只交一个任务表
推荐输出结构
- Sprint 总览
- Sprint 名称、周期、目标、交付里程碑、验收标准
- 任务明细拆分
- 任务 ID、Sprint、分类、子项、任务名称、描述、角色、人天、优先级、依赖、状态
- 工时校验
- 按 Sprint 汇总 PM/BA、PG/PT、费用、累计费用
- 可选工作表
- 燃尽图、风险追踪、用户故事追溯、Scrum 仪式
敏捷拆分规则
- 先按阶段分 Sprint,再在 Sprint 内分任务
- 每个 Sprint 应包含目标、里程碑、验收标准
- 每个任务都尽量具备:依赖、责任角色、验收标准、状态
- 拆分结果必须能回溯到原始需求或报价项
- 任务粒度以“便于排期和验收”为准,避免过粗或过碎
- 生成后检查总人天是否落在用户选择的工时范围内;若超出,应调整 Sprint 数量、任务深度或明确说明原因
Step 4: 生成方式选择
根据上下文选择生成方式:
直接生成 Excel
适用于:
- 结构简单
- 当前任务只需要交付
.xlsx - 不要求后续大规模复用脚本
生成 Python 脚本再输出 Excel
优先适用于:
- 已有 openpyxl 模板脚本可参考
- 需要大量格式控制
- 需要后续迭代复用
- 需要多工作表、图表、复杂样式或校验逻辑
当工作区已有类似 Python 脚本时,优先沿用其写法和样式约定。
推荐复用脚本骨架
当需要快速生成新脚本时,优先读取并复制以下模板骨架,再替换其中的占位数据:
- 经典报价脚本骨架:references/classic-quotation-template.py
- 敏捷拆分脚本骨架:references/agile-sprint-template.py
- 标准参数说明:references/parameter-standard.md
使用原则:
- 如果是对客正式报价,优先从经典报价骨架开始
- 如果是 Sprint 任务拆分、排期、追溯、风险管理,优先从敏捷拆分骨架开始
- 如果工作区已有客户专属脚本,先参考客户脚本,再回落到骨架模板
- 骨架中的公司名、税率、单价、字段文案都允许按项目覆盖,但不要改坏公式关系和整体结构
标准占位参数
为了降低每次生成脚本时的改动范围,优先使用统一参数接口:
- 通用参数:
output_file、project_name、customer_name、vendor_name、template_source、quote_date、tax_rate - 经典报价优先补充:
role_rates、change_request_rates、sales_contact、customer_contact - 敏捷拆分优先补充:
iteration_cycle、duration_text、amount_ex_tax、amount_inc_tax、pm_days_total、pg_days_total
如果客户模板需要新增字段,优先在标准参数的基础上做扩展,而不是随意改名或分裂成另一套命名体系。
Step 5: Excel 设计与样式要求
生成内容必须兼顾商务美观与可维护性。
通用要求
- 标题层级清晰,字体、底色、边框统一
- 冻结表头、设置筛选、合理列宽、启用自动换行
- 金额、税率、人天采用统一数字格式
- 汇总区域突出显示
- 客户可直接用于汇报或交付,不要生成“开发草稿感”过重的表格
美观要求
- 优先复用模板已有主题色
- 无模板时采用商务蓝系或与客户品牌相近的克制风格
- 不使用杂乱高饱和色块
- 表格密度适中,保证打印与屏幕查看都清晰
安全与严谨要求
- 不凭空捏造客户敏感信息
- 金额、人天、税率、总计必须可追溯
- 如果基于估算,应明确标注为“预估”或“假设”
- 对外文档避免出现内部调试字段或无意义注释
Step 6: 校验清单
生成完成后至少检查以下内容:
- 客户名称、项目名称是否正确
- 输出模式是否与用户选择一致
- 总人天是否落在用户选择的工时范围内
- 人天合计、金额合计、税额、含税金额是否正确
- Sprint 与任务分配是否前后一致
- 样式是否与参考模板一致或至少保持商务统一
- 工作表名称、筛选、冻结窗格、列宽是否可用
- 如使用公式,确保无
#REF!、#DIV/0!、#VALUE!等错误
Step 7: 最终交付说明
完成后向用户明确说明:
- 采用的是经典报价还是敏捷方式
- 参考了哪些模板或脚本
- 用户选择的总工时范围,以及最终总人天是否落在该范围内
- 输出文件路径
- 若有关键假设、缺失信息或人工估算项,需要单独列出
触发示例
- 帮我做一个给示例客户的经典报价 Excel
- 根据这个需求做一个敏捷任务拆分,参考当前工作区模板
- 帮我生成一份工时报价单
- 这个项目你帮我先判断应该走经典报价还是敏捷方式,再生成 Excel
完成标准
- 用户完成了模式选择,或用户已明确指定模式
- 输出文件已生成
- 模板来源清楚
- 金额/工时/Sprint 数据校验完成
- 最终表格可直接用于商务沟通或内部评审
What ships with it: 4 files
44.0 KB alongside SKILL.md, 2 of them executable
brand-assets/
- .gitkeep0 B
references/
- agile-sprint-template.pyruns17.2 KB
- classic-quotation-template.pyruns22.9 KB
- parameter-standard.md3.8 KB