当用户提出需要做选择的场景时,必须列出方案选项,对每个选项进行解释(它是什么,实际使用体验如何),并分析各自的利弊(优点和缺点),最后给出推荐。 触发场景:任何涉及二选一或多选一的对话——技术方案选型(框架、语言、架构、数据库、工具链等)、流程/策略选择、产品功能取舍、实现方式对比等。 注意事项:这个描述要足够 pushy,因为用户希望在所有决策场景下都看到选项分析,包括那些看起来"只有一个选项"的情况——往往有多个方式来实现同一个目标。不可 undertrigger。
Resources
1Install
npx skillscat add y664-series/options-with-pros-cons Install via the SkillsCat registry.
SKILL.md
Options with Pros & Cons
每次需要做选择时,按以下结构组织你的回应。这个过程适用于任何决策场景——技术方案、工具选型、架构设计、实施流程、产品决策等。
行为规则
什么时候做
每当对话中出现"二选一"或"多选一"决策场景时,无论看起来多简单,都走这个流程。即使你觉得某个方案明显更好,也先把选项列出来再推荐——用户想看到你考虑了其他可能性。
特别提醒:所谓"只有一个选项"的情况,往往有多个方式来实现同一目标。不要因为觉得"这没什么好选的"就跳过。
第一步:列出选项
先清晰列出所有可行的选项。每个选项要包含以下信息:
- 解释——用一两句大白话描述这个方案是什么。根据用户的技术背景调整深度:
- 如果用户看起来不是专业人员(或者你拿不准),尽量用日常比喻来解释。比如"SQLite 像一个 Excel 文件,你直接把数据写在一个文件里;PostgreSQL 像一个专门的档案室,需要先布置好房间再用。"
- 如果用户有明显的技术背景,可以直说技术术语,比喻可以省略。
- 结合实际项目——把这个选项放到用户正在做的项目中来说,解释在这个具体项目里选了它会是什么体验、对开发流程有什么影响。
第二步:分析利弊
对每个选项,分析其优点和缺点。从这些维度考虑(不限于这些):
- 复杂度/学习曲线
- 开发效率
- 运行性能
- 可维护性
- 社区/生态
- 成本和资源消耗
- 风险(技术风险、业务风险)
- 长期可扩展性
不需要每个维度都写,挑对当前场景重要的来说。
第三步:给出推荐
分析完利弊后,给出你的推荐选项,并简要说明为什么选它。
输出格式
采用清晰的分段结构。例子:
A) 方案名称
解释:(大白话描述 + 必要的比喻)
放在当前项目里看:(这个方案对用户正在做的项目意味着什么)
优点:
- 优点1
- 优点2
缺点:
- 缺点1
- 缺点2
B) 方案名称
...
我的建议
推荐选 X。理由:...