doa-quotation — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited doa-quotation (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
用户提供需求/客户/项目信息
→ 确认输出模式(经典报价 / 敏捷方式)
→ 搜索并比对当前工作区模板
→ 结构化整理报价项或 Sprint/任务项
→ 生成 Excel 或 Python 生成脚本
→ 校验工时/金额/税率/样式
→ 输出最终文件路径与说明当用户只说“做报价”或“做任务拆分”,必须先使用 `vscode_askQuestions` 确认:
推荐问题:
问题:本次希望采用哪种输出方式?
选项:
- 经典报价 ← recommended
- 敏捷方式(Sprint / 任务拆分)如果用户已经明确说了“经典报价”或“敏捷方式”,可以跳过这一步。
在进入模板选择和任务拆分前,必须再使用 `vscode_askQuestions` 确认期望的总工时范围,单位为人天。
推荐问题:
问题:本次期望的总工时范围是?
选项:
- 10人天以下
- 10-30人天
- 30-50人天
- 50-70人天 ← recommended
- 70-100人天使用规则:
至少确认以下信息;如用户未提供,继续追问缺失项:
人天单价必须由用户提供,不使用任何默认值。如果用户未主动给出,使用 vscode_askQuestions 追问。建议补充信息:
优先在当前工作区搜索并复用现有模板,而不是从零随意生成。
在搜索模板前,优先根据客户名称锁定候选目录,再在目录内按输出模式挑选模板。
#### 当前工作区已知映射
以下为示例映射,实际使用时根据工作区中的客户目录自动发现。
示例客户、ExampleCorpExampleCorp/ExampleCorp/示例项目.工时报价.xlsxExampleCorp/示例项目_敏捷任务拆分.xlsxExampleCorp/示例项目_敏捷任务拆分.py#### 匹配流程
报价、工时报价、quotation敏捷任务拆分、Sprint、工时校验#### 使用原则
.xlsx、.py、.html、.md适用于固定范围报价、模块报价、工时报价单。
经典报价统一使用以下模板结构生成。该模板已内嵌在骨架脚本中。
脚本路径:references/classic-quotation-template.py品牌素材:brand-assets/company_logo.png(请替换为您的公司 Logo)
Service Quotation / 服务报价单项目报价 + 开发工作量¥#,##0.00#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 区域留空,不影响其他内容生成。
#### 经典报价完成标准
=SUM(E:F)*单价,不按角色差异定价适用于 Sprint 排期、任务拆分、用户故事追溯、工时校验。
如果用户提供了类似 C-level_Conversations_Assistant_POC_敏捷任务拆分.xlsx 的模板,或当前工作区存在同类模板,则优先按该模板族生成。
#### 模板画像
该类模板的核心特征是:
Sprint总览 作为首页,而不是单纯的任务表#### 推荐文件命名
output/{客户名称}.{项目名称}/(每次新任务创建独立子文件夹){项目名称}_敏捷任务拆分.xlsx{客户名称}.{项目名称}_敏捷任务拆分.xlsxPOC、Phase1、SprintPlan 等关键词#### 推荐工作表结构
Sprint总览任务明细拆分工时校验燃尽图风险追踪用户故事追溯Scrum仪式#### Sprint总览 推荐字段
Sprint 总览表推荐列:
#### 任务明细拆分 推荐列
#### 工时校验 推荐列
并建议追加一个“报价工作量 → Sprint 映射对照”区块,用于把报价模块映射回 Sprint。
#### 燃尽图 推荐列
#### 风险追踪 推荐列
#### 用户故事追溯 推荐列
#### Scrum仪式 推荐列
并建议在该页追加 Definition of Done 清单。
#### 样式与视觉规则
P0 红色、P1 橙色、P2 黄色¥#,##0#### 敏捷方式完成标准
根据上下文选择生成方式:
适用于:
.xlsx优先适用于:
当工作区已有类似 Python 脚本时,优先沿用其写法和样式约定。
当需要快速生成新脚本时,优先读取并复制以下模板骨架,再替换其中的占位数据:
使用原则:
为了降低每次生成脚本时的改动范围,优先使用统一参数接口:
output_file、project_name、customer_name、vendor_name、template_source、quote_date、tax_raterole_rates、change_request_rates、sales_contact、customer_contactiteration_cycle、duration_text、amount_ex_tax、amount_inc_tax、pm_days_total、pg_days_total如果客户模板需要新增字段,优先在标准参数的基础上做扩展,而不是随意改名或分裂成另一套命名体系。
生成内容必须兼顾商务美观与可维护性。
生成完成后至少检查以下内容:
#REF!、#DIV/0!、#VALUE! 等错误完成后向用户明确说明:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.