technical-proposal-expert
GitHub强制中文正式文档写作技能,涵盖标书、方案、测试报告等场景。通过场景匹配、素材检索及深度写作协议,确保内容专业、合规且无编造。
Trigger Scenarios
Install
npx skills add yanhaoluo0/technical-proposal-expert-writing-skill --skill technical-proposal-expert -g -y
SKILL.md
Frontmatter
{
"name": "technical-proposal-expert",
"description": "MUST be used when writing, drafting, or polishing Chinese formal documents. Use when the user asks for 技术标书, 投标, 招标, 技术方案, 投标书, 方案设计报告, 系统设计说明, 测试报告, 测试总结, 工作周报, 周总结, or unspecified 公文\/方案\/文档. Also use when the document type is unclear and a writing scene must be chosen first."
}
technical-proposal-expert
把本 skill 当作强制指令集。写中文正式文档时,先完成本文件流程,再动笔。
违反条文等于违反精神。 不能用「先写个草稿」「通用公文更快」「用户没点名 skill」跳过匹配和读 reference;同样不能用「这次简单」「素材不好找」跳过素材检索与深度写作协议。
铁律
- 先匹配场景,再写。 未锁定场景、未读取对应 reference 之前,禁止输出正文。
- 场景 reference 优先于通用知识。 标书的零分点、设计报告的章节骨架,以 reference 为准。
- 通用书写要求与场景指引同时生效。 禁词表、去列表化、分段确认、素材检索对所有场景有效。
- 缺信息先问或写「待确认」,禁止编造 指标、业绩、测试数据、招标条款编号。
- 素材检索与知识库必做。 涉及技术实现时,先跑索引脚本并按需检索,禁止凭印象写泛泛而谈。
工作流
复制并跟踪:
- [ ] 1. 确定文档类型(未明确则询问,已明确则直接匹配)
- [ ] 2. 匹配唯一场景;冲突则问 1 句;都不中则 general
- [ ] 3. 确认文档使用场景(给谁看、什么场合)和撰写身份
- [ ] 4. 读取对应 references/*.md(整份)
- [ ] 5. 素材检索:检查索引 → 缺失则运行索引脚本(脚本在本 skill 的 `scripts/` 下,无参数;当前目录不是 skill 根目录时用完整路径)→ 按技术点/指标关键词检索命中行区间
- [ ] 6. 按该 reference 撰写;遵守通用书写要求与深度写作协议
- [ ] 7. 当前小节写完后自检禁词与列表;长文按约 1000 字暂停
- [ ] 8. 交付前跑复核清单(见「交付前复核」)
行业用语为可选项:用户明确需要时,再生成临时词表(如 writing-glossary-temp.txt),只在上下文合适时自然带入,禁止堆砌。
素材检索与知识库
两份内容来源:
- knowledge/:内置默认知识文档(技术卡片)。按需检索:写作每个功能点/技术点前,提取技术点与指标关键词 → 在
knowledge/.index.json中匹配 chunk(先看 preview)→ 用 start/end 行区间读取源文件命中部分,只读命中内容 - 素材库/:写作工作目录下的用户素材(仅 md/txt),不设全局素材库。把招标文件摘编、技术规范、历史标书等放入当前写作目录的
素材库/;命中相关即全文读取(用户素材通常体量小且直接相关)。项目写完素材随项目保留或清理,不跨项目混用
流程:
- 若
knowledge/.index.json或素材库/.index.json不存在,或素材有新增/变更,先运行索引脚本(无参数,自动生成两个索引):python scripts/index_materials.py。脚本位于本 skill 的scripts/目录;当前工作目录不是 skill 根目录时,用该脚本的完整路径运行(仍无参数)。脚本只索引「skill 的knowledge/」与「当前工作目录的素材库/」 - 读取两份索引,确认素材清单与结构
- 写作前按技术点/指标关键词检索 knowledge 索引;用户素材全部读取
- 把「素材使用清单」记入 plan.md 或草稿:功能点 → 使用了哪份素材的哪一节(保留来源以便核验)
- 规则:项目素材与内置知识冲突时以项目素材为准;索引只指向行区间,检索后必须回到源文件读原文,禁止凭索引编造内容;交付正文不出现「参考了某文档」痕迹(除非用户要求)
技术路由(knowledge/)
| 技术点关键词 | 默认知识目录 |
|---|---|
| 微服务、中台、服务治理 | knowledge/微服务与中台 |
| 大数据、离线/实时计算 | knowledge/大数据 |
| 视频AI、图像识别、算法 | knowledge/AI与视频分析 |
| 物联网、传感器、边缘计算 | knowledge/物联网与感知 |
| 信创、国产化、自主可控 | knowledge/信创与国产化 |
| 等保、安全、密码、数据安全 | knowledge/安全与等保 |
| 高可用、容灾、备份、集群 | knowledge/高可用与容灾 |
| 数据治理、数据交换、共享 | knowledge/数据治理与交换共享 |
| 低代码、BPM、流程引擎 | knowledge/低代码与BPM |
| 移动端、小程序、App | knowledge/移动端 |
| 云原生、K8s、容器、Redis、Kafka、Istio | knowledge/云原生与开源组件 |
| 测试方案、测试金字塔、质量模型 | knowledge/测试与质量 |
| 文档模板、SRS、SDD、DBDD、GJB 438C | knowledge/文档模板 |
| 标准引用、合规核对 | knowledge/合规与标准 |
未命中则跳过,不强行套用。目录内文件按「技术卡片」格式组织,见 knowledge/README.md。
深度写作协议(技术点必答六问)
每个关键技术点(选型、算法、架构决策)写作前强制回答,正文据此展开:
- 解决什么问题:对应哪个需求/指标/招标条款
- 为什么这么选:备选方案与取舍(禁止用「业界主流」「成熟稳定」搪塞)
- 关键机制与数据流:组件、协议、时序、核心算法
- 工程化落地:配置、部署、监控、灰度、回滚等可执行细节
- 如何验证:指标、测试方法、验收方式
- 风险与降级:失败模式、边界与应对
写完后自查:若一段话去掉修饰词后没有实质技术内容(组件、机制、数据流、数字),即为泛泛而谈,重写。
场景路由
| 用户说法 | 场景 | 必须读取 |
|---|---|---|
| 技术标书、投标、招标、投标书、标书 | technical-proposal | references/technical-proposal.md |
| 方案设计报告、设计报告、系统设计、研制方案 | design-report | references/design-report.md |
| 测试报告、测试总结、测试说明 | test-report | references/test-report.md |
| 周报、周总结、工作周报、周度汇报 | weekly-report | references/weekly-report.md |
| 其他、未明确、通用、一般文档 | general | references/general.md |
歧义:只说「技术方案」、未提投标/设计时,问一句是「投标技术标」还是「方案设计报告」,不要两套一起写。
同一对话锁定场景后不要中途更换,除非用户明确要求切换。
未说明类型时,用下面这段询问(不要先写正文):
已加载 technical-proposal-expert。支持:技术标书、方案设计报告、测试报告、周报;其他按常规文档处理。本次要写哪类文档?
撰写前必确认
- 使用场景:给谁看、什么场合(对外投标、内部汇报、甲方验收、留档等)
- 身份:撰写者或代表方(乙方技术负责人、项目经理、测试负责人等)
据此调整语气、详略与称谓。用户没给就简短追问,不要默认成空泛「我司」。
通用文本书写要求
禁词
| 禁止 | 改为 |
|---|---|
| 总的来说 / 总之 | 综上所述 / 基于上述… / 鉴于此 |
| 首先/其次/最后 | 第一,…;在此基础上,…;最终,… |
| 我们致力于 | 本方案旨在 / 项目组将重点投入 |
| 这是一个… | 该模块被定义为… / 该子系统主要承担… |
| 可以/能够 | 具备…能力 / 实现…功能 / 支持…操作 |
「可以/能够」指技术能力时改写;若表示允许性或条件成立(如「在X前提下可以…」)则保留,不机械替换。
去列表化
正文避免纯分点。优先叙述或「总—分—总」。表格、接口、参数、库表、清单可用列表或表。场景若规定「零分点」(标书),以该场景为准。
逻辑
段落用「基于上述分析」「在…前提下」「针对…场景」衔接。层级是否强制(一、 / 1.1)看场景 reference。
输出
- 每次输出完整小节或模块,不写半截;若小节自然结束时不足约 1000 字,先交付完整小节,不强行灌水
- 长文档约每 1000 个中文字符暂停,等用户确认再继续
- 写入文件时增量追加,不一次写完全文
交付前复核(每次交付前必做)
- 待确认清零:所有「待确认/待确认条款」从交付正文收敛为一份问题清单(单独文件或 plan.md 附录),正文清零后再交付;交付时附问题清单
- 禁词扫描:全文检查禁词表
- 需求/条款响应核对:标书逐条核对招标需求,设计报告核对需求与指标
- 指标一致性:指标数值与支撑设计一一对应,不允许「写了指标没写实现」或「写了实现没写指标」
- 素材来源核验:正文关键事实能在素材使用清单中找到来源;无来源内容已标「待确认」
- 完整性:章节骨架无缺漏(设计报告不合并删章)
找借口对照
| 借口 | 事实 |
|---|---|
| 用户只要一段正文 | 仍要先匹配场景并读 reference |
| 先按通用 SRS/方案写 | 场景骨架在 reference 里 |
| 禁词太严、先写后改 | 按禁词表直接写 |
| 标书用 bullet 更清晰 | 标书零分点;表结构除外;招标文件明确要求分点响应时例外 |
| 没说身份也能写 | 未提供则追问,不编造甲方/乙方口吻 |
| 这次简单,不用检索素材 | 素材检索是铁律;先看索引,命中才读,不增加负担 |
| 检索太麻烦,凭经验写 | 泛泛而谈的根源就是跳过检索;索引有 preview,能快速定位 |
红旗 — 停下重来
- 还没读对应 reference 就开始写
- 标书正文出现
-/*分点(招标文件明确要求除外) - 编造招标条款号、通过率、性能指标
- 没跑索引脚本就写技术实现,或技术点只有概念词没有机制与数据流
- 正文残留「待确认」就交付
- 长文一次倒出数千字且不暂停
最小示例
用户:「写一份政务监管平台的技术标书,模块有一张图和告警。」
- 路由 → technical-proposal → 读
references/technical-proposal.md - 确认场合=对外投标、身份=乙方技术负责人(若未说则问)
- 跑索引脚本(若索引缺失;脚本在 skill 的
scripts/下,无参数)→ 读两份索引;若工作目录有素材库/则用户素材全文读取;涉及视频/图像技术点检索 knowledge 对应卡片 - 默认大文本模式:建
plan.md,先收架构与需求清单,再按模块叙述撰写 - 每个功能点按六问协议展开(机制、数据流、指标支撑),正文零分点,并响应招标条款
- 交付前跑复核清单(待确认清零等)
Version History
- 22eb061 Current 2026-09-02 21:12


