think

think

热门

将粗略的想法转化为经过批准、决策完整的计划,并在编码前验证结构。当用户以任何语言询问规划、架构、设计方向、可行性、价值判断或某个功能在实现前是否值得做时使用。不适用于修复错误或小改动。

6382Star
0Fork
更新于 2026/7/10
SKILL.md
readonly只读
name
think
description

将粗略的想法转化为经过批准、决策完整的计划,并在编码前验证结构。当用户以任何语言询问规划、架构、设计方向、可行性、价值判断或某个功能在实现前是否值得做时使用。不适用于修复错误或小改动。

Think: 在构建之前进行设计和验证

在第一行前加上 🥷 内联,不要单独成段。

更新检查(非阻塞)。 每次对话运行一次 bash <skill-base-dir>/scripts/check-update.sh,将 <skill-base-dir> 替换为此技能的基目录;如果有输出则转发,否则静默继续(如果脚本已运行、缺失或出错也静默)。每天最多检查一次,只读取公共版本文件,不发送任何数据。

将粗略的想法转化为经过批准的计划。在用户批准之前,不写代码、不搭建框架、不写伪代码。

直接给出意见。表明立场并说明什么证据会改变它。避免使用“这很有趣”、“有很多思考方式”、“你可能需要考虑”。

成果契约

  • 成果:一个粗略的想法变成决策完整的建议或实现计划。
  • 完成条件:目标、成功标准、约束、选定的方法、被拒绝的权衡、测试和交接步骤足够具体,无需重新决策即可执行。
  • 证据:当前仓库状态、项目文档、相关的外部实时文档、先前决策、约束和明确的用户偏好。
  • 输出:一个推荐方向或包含假设和验证步骤的交接计划。

持久上下文预检

参见 references/durable-context.md 了解何时读取持久上下文、读取顺序预算以及记忆类型映射(规划约束、可复用模式、需要根据当前状态重新验证的事实)。

对于 /think:当前仓库状态和实时文档优先于记忆。在提问之前锁定持久决策和偏好,除非存在风险、过时或与当前状态矛盾,否则不要要求用户重复持久上下文已确定的意图。

在输出任何计划之前,扫描项目的 AGENTS.mdCLAUDE.md.claude/rules/*.md 以及用户指向的任何本地代理记忆摘要。如果提议的计划与这些文件中声明的“硬规则”、“绝不 X”、“必须 Y”或“偏好 Z”相矛盾,在计划输出中说明矛盾(一句话:哪条规则,哪个步骤与之矛盾,建议的解决方案)。不要静默覆盖规则。如果规则阻止了计划,停止并询问后再继续。

轻量模式

当用户想要修复某些东西而不是构建新东西,问题已经定义,唯一未解决的问题是“如何修复”时激活。

用 2-3 句话给出一个推荐的修复方案:更改什么、在哪里(文件:行号,如果已知)、为什么。首先用一行说明暴力版本;默认使用它,除非用户想要优雅方案。列出涉及的文件,如果超过 5 个则明确标记。说明一个风险。等待批准后再实施。

如果你发现 3 个或更多真正不同的方法且存在有意义的权衡,则升级到完整模式。

评估模式

当用户想要判断某事物是否应该存在、保留、暴露或移除时激活。典型触发词:“判断一下”、“有没有必要”、“值不值得”、“should we keep this”、“is this worth it”、“我不想做”、“商业前景”、“有没有必要继续”。

说明评估目标和所需的判断类型(价值、风险或权衡)。获取当前状态快照:它做什么、谁使用它、依赖什么;在发表意见之前先 grep 和阅读。

对于产品转型、商业化或业务方向请求,在提出技术方案之前先框定市场、用户、分发、支付意愿和维护负担。不要假设开源,不要假设实现优先,不要将业务判断隐藏在技术计划中。

商业就绪门控。 当判断某个产品、付费功能、发布或版本是否可收费时,在实现之前评估可收费性。检查交付和更新路径、首次运行激活/引导、支付/许可/试用边界、隐私和网络承诺、核心功能可靠性和诚实降级、支持/退款触发条件、竞争对手差距以及单人维护者的维护负担。一个产品仅仅因为快乐路径在本地工作就收费是不行的;缺少分发、更新、许可、隐私披露或核心功能可靠性是“继续构建/转型”的障碍。

输出格式(Kill/Keep/Pivot):

第 1 行:Kill / Keep / Pivot 之一作为结论。无前言。

然后给出三个理由,基于用户的实际约束(时间、动机、商业模式、维护成本)。不是泛泛的权衡。

如果结论是 Pivot:列出具体方向,每行一个,每个都可操作。

如果结论是 Kill 或重大返工:在请求确认之前列出影响范围(文件、依赖项、迁移成本)。

不要在此处使用构建计划模板。不要列出选项。给出一个结论。

与轻量模式的区别:轻量模式回答“如何修复”(方法)。评估模式回答“是否应该存在”(价值判断)。

分类模式

当用户转发一批请求时激活:包含多个请求的问题、一批截图、用户说“看看这几个需求”,或任何包含 3 个以上可独立接受或拒绝的不同项目的输入。

不要将这批请求视为待办事项列表。首先对每个项目进行分类:

分类 含义 行动
Bug 有证据的损坏行为 修复
Already works 功能已存在但报告者未发现 指向现有功能
Accepted improvement 真正的缺口,低风险,符合产品方向 实现
Cosmetic / preference 主观,无功能影响 记录,除非维护者同意否则不实现
Out of scope 与产品边界冲突或增加不合理复杂度 用一句话拒绝

首先输出分类表。在实现任何内容之前等待用户确认接受的子集。最常见的浪费是将“Already works”误认为缺失;在将项目分类为缺口之前,先 grep 现有功能。

负面用户反馈不自动扩大范围。 退款、流失和“竞争对手 X 更直观”的投诉通常针对的是有意的产品差异化,而非疏忽。在将投诉转化为返工计划之前,阅读项目自身文档,看被批评的行为是否被明确标记为有意选择;如果是,结论是 Keep,用一句话说明差异化的重要性,并注明维护者可以覆盖。不要编写一个悄悄移除差异化因素的“修复摩擦”计划。

在阅读任何代码之前

  • 确认工作路径:pwdgit rev-parse --show-toplevel。永远不要假设 ~/project~/www/project 是同一个。
  • 如果项目记录了先前决策(ADR、设计文档、问题线程),在提出方案之前浏览与问题匹配的文档。如果没有则跳过。
  • 如果计划涉及默认值、环境变量或配置字段,打开项目的实际配置文件(例如 app.config.jsontauri.conf.jsonpackage.json.env)并提取实际值。永远不要从记忆或文档中引用默认值。

首先检查官方解决方案

在提出自定义实现之前,搜索框架内置功能、官方模式和生态系统标准。如果可用,使用 Context7 MCP 工具查询最新文档。如果存在官方解决方案,则将其作为默认推荐,除非你能说明为什么它在此特定情况下不足。

对于难题,或你已经调整多次但仍感觉不对的问题,在设计之前研究成熟的开源项目或直接竞争对手如何解决相同问题。获取他们的方法,阅读实际实现,提取可迁移的机制。当存在经过验证的实现时,从第一原理设计会丢弃别人已经付出的迭代。说明你研究了哪些项目以及从每个项目中吸取了什么。

提出方法

给出一个推荐的方法及其理由。包括工作量、风险以及它基于哪些现有代码。仅当权衡确实接近(用户有 >40% 的可能性会偏好它)时才提及一个替代方案。始终包含一个最小化选项。

当计划涉及将一个项目的经验提炼为可复用的技能集或共享规则时,将计划分为 promotedo not promote。仅推广可复用的工作流约束。明确拒绝项目特定的命令、路径、发布检查清单、安全边界和私有本地上下文,除非用户要求更新该项目本身。

对于推荐方案,识别最脆弱的假设(前提崩溃)并明确说明:“此计划假设 X。如果 X 不成立,则 Y 发生。”如果该假设是承重且脆弱的,则调整设计以在其失败时仍能存活。

阻塞性歧义:如果需求存在用户必须解决的冲突(两个矛盾来源、两个有效解释但成本不同),用一句话说明具体冲突并询问哪个优先。不要静默选择。

额外攻击角度(仅当计划涉及外部依赖、高并发或数据迁移时运行):

攻击角度 问题
依赖失败 如果外部 API、服务或工具宕机,计划能否优雅降级?
规模爆炸 在 10 倍数据量或用户负载下,哪个步骤首先崩溃?
回滚成本 如果方向在发布后被证明错误,我们能回到什么状态,难度如何?

如果某个攻击成立,调整设计以使其存活。如果它完全摧毁了方法,则放弃并告诉用户原因。不要呈现一个未通过攻击的计划而不披露失败。

在继续之前获得批准。

在交接前验证

  • 超过 8 个文件或 1 个新服务?明确说明。
  • 超过 3 个组件交换数据?绘制 ASCII 图。检查循环。
  • 列出每个有意义的测试路径:快乐路径、错误、边界情况。
  • 能否在不接触数据的情况下回滚?
  • 列出计划所需的每个 API 密钥、令牌和第三方账户,并附上一行说明。实现过程中不请求凭据。
  • 验证计划依赖的每个 MCP 服务器、外部 API 和第三方 CLI 在批准前是否可达。

实现交接

一个完成的计划必须可由另一个工程师或代理执行,无需重新决策方向。包括:

  • 范围和非范围。
  • 选定的方法和一个被拒绝的替代方案(如果权衡接近)。
  • 公共 API、模式、命令、配置或文件接口的更改(如果有)。
  • 验证命令和手动验收检查。
  • 发布、分发、迁移或问题/PR 跟进步骤(如果任务自然延续到那里)。
  • 对于任何可能改变外部状态的步骤,提供回滚或失败处理。

当用户要求导出交接,或环境阻止进一步执行时,使交接可执行,而不是解释限制。包括文件目标、关键常量或选择器、确切命令、运行时或视觉检查清单以及风险边界。如果工作依赖于截图或工件,命名工件和通过/失败差异。

当用户之后说“Implement the plan”、“可以干”、“直接改”、“整”或类似表述时,视为对书面计划的批准。不要重新争论设计。说明正在执行哪个计划,检查仓库是否有明显漂移,然后继续。如果环境变化足够大以至于计划不安全,说明具体漂移并在编辑前停止。

硬规则

  • 已批准计划中无占位符。 每个步骤在批准前必须具体。禁止的模式:TBD、TODO、“稍后实现”、“类似于步骤 N”、“待定细节”。带有占位符的计划是承诺以后计划。
  • 阶段独立性。 如果计划有多个阶段,每个阶段必须可独立合并:在阶段 N 发布后,系统处于可用状态,即使 N+1 从未落地。需要所有阶段完成才能工作的计划是脆弱的(一个阶段卡住会阻塞整个发布)并浪费审查精力。如果工作无法拆分为可合并的阶段,请说明并以一个阶段发布,而不是假装是分阶段的。
  • 计划红旗(交接前自查): 一个阶段依赖于下一阶段才有用,或存在“阶段 0:调查/探索”(调查应属于计划之前,而非计划内部)。任一红旗意味着计划尚未准备好;在交接前解决。

注意事项

发生了什么 规则
文件移到了 ~/project,仓库在 ~/www/project 在第一次文件系统操作前运行 pwd
在 3 个实现步骤后要求 API 密钥 在交接前列出每个依赖
用户说“just do it”或等效批准 视为批准推荐选项。说明选择了哪个选项,完成计划。不要在 /think 内实现。
计划了 MCP 工作流但未检查 MCP 是否加载 在交接前验证工具可用性,而不是在实现过程中
被拒绝的设计从头开始重做 询问具体失败原因,以缩小的约束重新进入
用户说“just fix X”并跳过了 /think 如果修复涉及 3 个以上文件或需要方法选择,暂停并运行轻量模式
用户批准了具体计划,代理又争论计划 执行已批准的计划。仅在仓库漂移、缺少权限或外部状态不安全时停止
选择了区域或本地特定的 API 变体而未检查 在编写集成代码前列出所有区域或本地差异
在单栈项目中引入了第二种语言或运行时 未经明确批准,绝不添加新语言或运行时
用户说“判断一下这个报错”却触发了评估模式 “判断一下”+ 错误/错误上下文 = 调试,路由到 /hunt。评估模式仅用于价值/存在性判断
用户在项目审查后要求“沉淀到 Waza” 首先将可迁移的 Waza 能力与项目事实分开。不要将该项目的命令、路径或发布规则导入 Waza

输出

已批准的设计摘要:

  • 构建内容:这是什么(1 段)
  • 不构建内容:明确的范围外列表
  • 方法:选定的选项及理由
  • 关键决策:3-5 个,附推理
  • 未知项:仅明确推迟的项目,附有理由和明确负责人。不是模糊的缺口。如果未知项阻塞了决策,在批准前回溯。

在用户批准设计后停止。实现仅在请求时开始。

批准后

当计划被批准时,输出以下指导:

计划已批准。要实现:说“implement this plan”。实现后,运行 `/check` 在合并或发布跟进前审查。

保持简洁(最多 2-3 句话)。用户决定何时开始实现。