Summary
辅助书写高质量技术方案文档。用户要写技术方案、技术设计、方案评审、研发设计文档、接口方案、库表变更方案、上线方案、交付执行方案,或希望把 PRD/需求/代码上下文整理成可评审方案时,必须使用本 skill。它会先识别需求复杂度,按 L0 交付执行单、L1 轻量技术方案、L2 标准技术方案、L3…
xmzdesign/santong-skill · Archived
?
npx skills add xmzdesign/santong-skill --skill by-tech-plan
辅助书写高质量技术方案文档。用户要写技术方案、技术设计、方案评审、研发设计文档、接口方案、库表变更方案、上线方案、交付执行方案,或希望把 PRD/需求/代码上下文整理成可评审方案时,必须使用本 skill。它会先识别需求复杂度,按 L0 交付执行单、L1 轻量技术方案、L2 标准技术方案、L3…
This repository is archived — consider an actively maintained alternative.
初始化、维护和执行 by-harness 工作流时?
45 installs在当前项目一键初始化 Harness Engineering 框架。适用于用户提到 'harness'、'init harness'、'initi…
2 installs将需求拆解为结构化任务清单,生成长时运行 Agent 的任务管理系统(基于 Anthropic Effective harness…
1 installsComprehensive technology stack blueprint generator that analyzes codebases to create detailed a…
9K installsRelated neighbors and high-traction skills in the same topics — useful to compare before installing.
Guidance for distinctive, intentional visual design when building new UI or reshaping an existi…
866.4K installsBrowser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
810.4K installsReview UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "chec…
617.3K installsBuild, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and …
576.5K installsDebug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe …
568.9K installsOther skills from xmzdesign/santong-skill.
npx skills add xmzdesign/santong-skill
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Files included with this skill beyond the listing page.
SKILL.md
32,373 B
SUMMARY.md
649 B
使用本 skill 辅助研发同学产出可评审、可落地、可上线的技术方案文档。重点不是把模板填满,而是先识别需求复杂度,暴露隐藏假设、澄清关键取舍,并留下能让研发、测试、发布和运维团队共同执行的方案。
最终文档必须先按 方案类型识别 选择输出结构。风险判断必须完成,但只有命中的风险维度才需要在正文展开;未命中的维度可以省略,或用一句话说明“不涉及,原因是...”。L2/L3 使用完整模板,L0/L1 使用轻量模板。
开始拷问或起草前,先明确用户本次真正要完成的事情。
进入拷问或起草前,先做一次简短校准,避免静默选择错误方向。
起草前先给出推荐方案类型,并说明判断依据。默认从轻量类型开始,命中风险触发条件后再升级;不要一上来默认套完整模板。
| 类型 | 适用场景 | 输出重点 |
|---|---|---|
| L0 交付执行单 | 需求明确、单点改动、无架构取舍、无库表/接口契约/跨系统影响 | 改动明细、执行步骤、验收方式 |
| L1 轻量技术方案 | 单系统或单模块,有少量流程、接口、配置或页面调整,但风险局部可控 | 方案细节、核心流程、涉及项设计、验证上线 |
| L2 标准技术方案 | 多模块或多系统协作,涉及库表、接口契约、兼容、灰度、数据迁移或运维观察 | 使用完整 9 章模板,展开关键设计和取舍 |
| L3 深度评审方案 | 核心交易/资金/履约链路,强一致性、高并发、安全权限、外部依赖或复杂回滚 | 在 L2 基础上强化 ADR、压测、监控、应急预案和人工恢复 |
命中下列任一条件时,不能使用 L0;命中多项或影响核心链路时优先升级到 L2/L3:
如果用户明确要求轻量输出,但材料命中升级条件,先指出升级原因,再给出“轻量正文 + 风险附录”或建议使用 L2/L3。
L0/L1 不是缩小版完整技术方案,而是面向交付的方案细节文档。正文优先回答“具体怎么改、按什么步骤做、怎么验收、怎么上线/回滚”,其他模块尽量省略。
根据当前上下文选择模式。
当用户只有粗略想法、PRD 链接、半成品方案,或明确说“帮我梳理/帮我完善/帮我拷问方案”时,使用拷问模式。
- P0 阻塞决策:不确认会影响方案方向、系统边界、数据归属、主方案取舍、库表设计、兼容策略或上线回滚。P0 问题逐个确认,单轮最多提出 1-3 个。 - P1 重要假设:影响方案质量,但可以先按推荐答案推进。P1 问题批量确认,每批最多 5-8 个。 - P2 非阻塞信息:负责人、精确排期、指标阈值、数据量精确值等暂不影响初稿方向的信息,直接采用推荐假设并写入 问题记录。
当当前对话、PRD、代码库和文档已经提供足够信息时,使用合成模式,但不要直接起草方案。先把已经掌握的信息和推荐方案类型简要复述给用户,给用户一次校正机会,再进入对应模板起草。
CONTEXT.md / CONTEXT-MAP.md,使用其中的项目领域词汇。在询问用户架构或现状行为之前,先查找本地证据:
CONTEXT-MAP.md:用于识别多上下文仓库。CONTEXT.md:用于确认规范领域语言。docs/adr/:用于确认已经存在的技术决策。如果没有 CONTEXT.md,不要主动创建,除非当前正在和用户共同解决领域术语问题。若某个术语已经被明确,并且后续会继续影响方案,请按 CONTEXT-FORMAT.md 创建或更新 CONTEXT.md。
谨慎提出 ADR。只有同时满足下面三个条件时,才建议创建 ADR:
写 ADR 时使用 ADR-FORMAT.md。
质量门禁是风险扫描清单,不是正文展开清单。所有方案都要先扫描;L0/L1 只展开命中的风险维度,L2/L3 才按完整模板逐项展开。没有命中的维度不要硬写长段落,可以省略,或用一句话说明“不涉及,原因是...”。
按推荐方案类型选择模板。L0/L1 聚焦方案细节,只保留“目标、方案细节、验收上线、问题记录”;背景、人力、运维、架构图等模块默认省略。L2/L3 使用完整 9 章结构,一级标题保持不变。
用于需求非常明确、无明显技术取舍、无升级触发条件的交付任务。
# 一、目标与验收
**需求目标:** {一句话说明本次要交付什么}
**验收口径:**
- {可被产品/测试/业务验证的结果}
# 二、方案细节
**改动明细:**
| 改动项 | 当前情况 | 目标结果 | 具体做法 | 验证方式 |
| --- | --- | --- | --- | --- |
| {页面/接口/配置/脚本/文档/代码模块} | {现状} | {交付后结果} | {具体怎么改} | {如何验证} |
**执行步骤:**
1. {步骤 1}
2. {步骤 2}
3. {步骤 3}
**关键约束:** {没有则省略;例如配置值、开关、输入输出、数据处理边界}
# 三、测试与上线
**测试范围:**
- {测试点}
**上线方式:**
- {发布/配置/脚本执行方式}
**回滚方式:**
- {如何回滚;如果不需要,说明原因}
# 四、问题记录
| 问题 | 当前判断/推荐答案 | 状态 | 负责人 |
| --- | --- | --- | --- |
| {问题} | {推荐答案或假设} | 待确认/已确认 | {负责人} |
用于单系统或单模块的局部变更。不要引入完整架构图、伪代码、SQL、压测等章节,除非风险扫描命中。
# 一、目标与范围
**PRD/需求来源:** {链接或“暂无”}
**目标:** {1-3 句话说明本次要交付什么}
**范围边界:** {只写本期关键边界;没有则省略}
**推荐方案类型:** L1 轻量技术方案,原因:{判断依据}
# 二、方案细节
**改动明细:**
| 影响对象 | 当前行为 | 目标行为 | 具体做法 | 验收口径 |
| --- | --- | --- | --- | --- |
| {模块/接口/页面/配置/数据项} | {现状} | {目标} | {具体怎么改} | {可验证结果} |
**核心流程:**
{用步骤说明正常路径和必要异常路径;如有复杂分支再补 Mermaid。}
**涉及项设计:**
- 数据:{只写新增/修改/读取规则;不涉及则省略}
- 接口:{只写接口、字段、错误码、兼容点;不涉及则省略}
- 配置:{只写配置项、默认值、开关策略;不涉及则省略}
- 任务/消息:{只写触发、重试、幂等、补偿;不涉及则省略}
# 三、测试与上线
**测试重点:**
- {测试点}
**上线方式:**
- {发布顺序、配置、验收}
**回滚方式:**
- {回滚动作或“不涉及,原因是...”}
# 四、问题记录
| 问题 | 当前判断/推荐答案 | 状态 | 负责人 |
| --- | --- | --- | --- |
| {问题} | {推荐答案或假设} | 待确认/已确认 | {负责人} |
L2 使用下面完整结构。L3 在 L2 基础上必须强化 ADR/取舍背景、容量与压测、监控告警、应急预案、人工恢复和跨团队发布协同。
````md
| 版本 | 变更日期 | 变更人 | 变更内容 |
|---|---|---|---|
| v0.1 | YYYY-MM-DD | {姓名/角色} | 初稿 |
PRD: {PRD 链接或“暂无”}
接口文档: {接口文档链接或“暂无”}
背景说明: {说明业务背景、现状问题、目标用户/业务方、为什么现在要做。}
目标:
非目标:
| 需求点 | 说明 | 优先级 | 依赖/约束 | 验收口径 |
|---|---|---|---|---|
| {需求点} | {说明} | P0/P1/P2 | {依赖或约束} | {可验证结果} |
边界与场景:
{用几段话说明整体思路、涉及系统、关键链路、主要取舍。}
{说明为什么当前方案是最小可落地方案;如果没有采用更简单方案,说明原因;如果没有采用更复杂方案,说明不做的原因。}
{先说明本次变更的系统边界、上下游依赖、是否影响存量链路。不要只写服务名。}
| 影响对象 | 类型 | 影响方式 | 具体变化 | 兼容/迁移策略 | 验证方式 | 负责人 | 风险等级 |
|---|---|---|---|---|---|---|---|
| {系统/模块/资源} | 应用/模块/接口/任务/消息/缓存/数据库/配置/权限/监控/发布 | 新增/修改/依赖/废弃/无影响 | {具体影响} | {兼容、灰度、回滚、迁移或“不涉及”} | {单测/联调/回归/观测项} | {负责人} | 高/中/低 |
{涉及多个工程或代码仓库时必须填写;单工程也写一行。若无代码改动,写“不涉及”。仓库名未知时写当前假设,并同步记录到 九、问题记录。}
| 代码仓库/工程 | 所属系统/应用 | 改动模块 | 改动类型 | 主要改动 | 依赖/联动仓库 | 发布顺序 | 验证方式 | 负责人 |
|---|---|---|---|---|---|---|---|---|
| {repo/project} | {系统/应用} | {模块/包/目录或“不涉及”} | 新增/修改/删除/配置/脚本/无代码改动 | {具体改动点} | {依赖的 repo/project 或“不涉及”} | 第 1/2/3 步或“不限制” | {单测/集成/联调/回归/观测项} | {负责人} |
{先给出高维度整体架构图,再给出核心业务流程。若目标文档平台不支持 Mermaid,说明需要转成图片贴入。}
{用 Mermaid flowchart 表达系统、模块、上下游、存储、缓存、消息和外部依赖之间的关系,帮助评审者先理解系统边界。}
flowchart LR
User[用户/业务方] --> Entry[入口系统/页面/接口]
Entry --> Core[核心服务/领域模块]
Core --> DB[(数据库)]
Core --> Cache[(缓存)]
Core --> MQ[[消息/任务]]
Core --> External[外部系统]
{用 Mermaid sequenceDiagram / flowchart 表达正常路径、关键分支、失败路径、重试路径和补偿路径。}
sequenceDiagram
participant User as 用户/业务方
participant Entry as 入口系统
participant Core as 核心服务
participant Store as 存储/外部依赖
User->>Entry: 发起请求/操作
Entry->>Core: 参数校验与业务调用
Core->>Store: 读写数据或调用依赖
Store-->>Core: 返回结果
Core-->>Entry: 业务处理结果
Entry-->>User: 返回响应/状态
{说明新增/变更表、字段、索引、状态流转、数据迁移/回填。若涉及库表修改,必须重点罗列 SQL schema 和关键 SQL,不能只用文字概括。}
-- 1. 新增表 / 修改表结构
CREATE TABLE / ALTER TABLE ...
-- 2. 索引与唯一约束
CREATE INDEX / CREATE UNIQUE INDEX ...
-- 3. 初始化数据
INSERT INTO ...
-- 4. 数据迁移 / 回填
UPDATE ... / INSERT INTO ... SELECT ...
-- 5. 回滚 SQL
ALTER TABLE ... / DROP INDEX ... / DELETE FROM ...
{对关键算法、复杂状态流转、幂等判断、补偿流程、并发控制或核心分支给出 Java 8 风格伪代码。伪代码要表达主要判断、事务边界、锁释放、异常处理和数据写入顺序,不需要贴真实业务代码。}
public class CoreFlowService {
public Result handleCoreFlow(Request request) {
validateRequest(request);
String idempotencyKey = buildIdempotencyKey(request);
Optional<Result> processedResult = idempotencyRepository.findResult(idempotencyKey);
if (processedResult.isPresent()) {
return processedResult.get();
}
LockResult lockResult = lockService.tryLock(idempotencyKey, 10, TimeUnit.SECONDS);
if (!lockResult.isSuccess()) {
return Result.pending("request is processing");
}
try {
return transactionTemplate.execute(status -> {
BizRecord record = bizRepository.selectForUpdate(request.getBizId());
if (!record.canProcess()) {
return Result.fail("invalid state");
}
record.markProcessing();
bizRepository.update(record);
OutboxEvent event = OutboxEvent.create(record.getId(), EventType.BIZ_PROCESSING);
outboxRepository.insert(event);
Result result = Result.success(record.getId());
idempotencyRepository.saveResult(idempotencyKey, result);
return result;
});
} catch (RetryableException ex) {
retryTaskRepository.insert(RetryTask.from(request, ex));
return Result.pending("retry later");
} finally {
lockService.unlock(lockResult);
}
}
}
{列出 HTTP、RPC、MQ/Event、定时任务等契约。包含入参、出参、错误码、幂等字段、兼容策略。}
{说明重复请求、重复回调、并发更新、事务边界、锁、去重、重试、补偿。所有方案都要按分布式、高并发、多实例部署场景审视,明确是否需要唯一索引、乐观锁、分布式锁、消息去重、顺序消费、限流、降级、熔断和缓存一致性策略。}
{说明预估量级、热点路径、缓存、分页、批处理、限流、降级。}
{说明对现有业务、历史数据、老客户端、旧接口、配置开关的影响。若暂无,写“暂无”。}
| 方案 | 优点 | 缺点 | 结论 |
|---|---|---|---|
| 方案一 | {...} | {...} | 主方案 |
1. HTTP: {method} {path}【{接口说明}】
param:
{name} {type} {required} {description}
result:
{示例 JSON}
2. RPC: {interface}#{method}
dependency:
{依赖包/版本}
param:
{name} {type} {required} {description}
result:
{示例 JSON}
| 目标 | 内容 | 时间安排 | 负责人 |
|---|---|---|---|
| {目标} | {任务内容} | {起止时间/deadline} | {负责人} |
| 测试类型 | 测试重点 | 覆盖范围 | 责任人 |
|---|---|---|---|
| 单元测试 | {外部可观察行为,不测实现细节} | {模块/能力} | {负责人} |
| 集成/联调测试 | {跨系统链路} | {系统/接口} | {负责人} |
| 回归测试 | {历史逻辑兼容} | {业务范围} | {负责人} |
| 异常测试 | {失败、重试、并发、幂等} | {场景} | {负责人} |
{说明发布顺序、配置变更、数据库变更、数据初始化、灰度策略、回滚策略、发布时间点。}
| 观察项 | 指标/日志 | 预期 | 异常处理 |
|---|---|---|---|
| {观察项} | {metric/log/dashboard} | {预期范围} | {处理方式} |
{说明监控、告警、日志、巡检、手工补偿、数据修复、应急联系人。}
| 问题 | 当前判断/推荐答案 | 状态 | 负责人 |
|---|---|---|---|
| {问题} | {推荐答案或假设} | 待确认/已确认 | {负责人} |
````
输出最终方案前,先按下面清单自检并修正文档。除非用户要求,不需要把自检过程完整输出。
v0.1 修改历史默认使用当前日期,除非用户提供其他日期。Optional、try/catch/finally、枚举或 DTO 命名;不要使用 function xxx:、隐式变量、Python/JavaScript 风格语法。- 系统边界、上下游、存储、缓存、消息和外部依赖用 flowchart。 - 跨系统时序调用用 sequenceDiagram。 - 分支较多的业务逻辑用 flowchart。 - 数据关系用 erDiagram 或表格。
当用户从模糊需求开始时,按下面方式开场:
我理解本次是要为{需求/项目}产出一份可评审的技术方案,重点解决{核心问题}。为了让方案贴近真实代码和评审口径,请先把 PRD/需求文档、接口文档或代码仓库地址发我;如果暂时没有,我会基于当前上下文先推进。
我会先判断本次适合 L0 交付执行单、L1 轻量技术方案、L2 标准技术方案还是 L3 深度评审方案;默认从轻量输出开始,命中风险触发条件再升级。
我会先把待确认点分成 P0/P1/P2:
- P0 阻塞决策:{1-3 个必须确认的问题,每个给推荐答案}
- P1 重要假设:{最多 5-8 个可批量确认的问题,每个给推荐答案}
- P2 非阻塞信息:{直接采用的默认假设}
你可以回复“全部按推荐继续”,也可以只改其中几项;未修改项我会按推荐答案进入初稿,并放入“问题记录”。
当上下文已经足够时,先做信息回放,不要立刻起草方案正文:
我先复述一下当前已知信息,避免直接起草时理解偏差:
1. 需求目标:{一句话说明要解决的问题}
2. 本期成功标准:{业务/技术/上线验收口径}
3. 推荐方案类型:{L0/L1/L2/L3,说明判断依据和升级触发检查结果}
4. 已知材料:{PRD/接口文档/代码仓库/现有说明}
5. 涉及系统/仓库:{系统、模块、代码仓库清单}
6. 核心链路:{入口、核心处理、数据写入、下游依赖}
7. 已确认事实:{来自材料或用户明确确认的信息}
8. 推荐假设:{可以先按推荐推进的信息}
9. 待确认问题:{真正需要用户确认的阻塞点}
请先确认这些理解是否准确;确认后我再按推荐方案类型起草文档,未确认的信息会放进“问题记录”。
当用户要求发布到飞书或其他文档系统时,先产出 Markdown 方案,再使用对应文档工具创建或更新在线文档。