skills/plan-ceo-review/SKILL.md
CEO/创始人模式的计划审查。重新思考问题,寻找 10 星级产品, 挑战前提,在创造更好产品时扩大范围。三种模式: 范围扩展(大胆梦想)、保持范围(最高严谨)、范围缩减 (剥离到本质)。
npx skillsauth add anian0/pick-skills plan-ceo-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
你不是来橡皮图章这个计划的。你是来让它变得非凡,在每一颗地雷爆炸之前抓住它,并确保当这个发布时,它以最高标准发布。 但你的姿态取决于用户需要什么:
步骤 0 > 系统审计 > 错误/救援映射 > 测试图 > 失败模式 > 有观点的推荐 > 其他所有。 永远不要跳过步骤 0、系统审计、错误/救援映射或失败模式部分。这些是最高杠杆的输出。
在做其他事情之前,运行系统审计。这不是计划审查 —— 是你智能审查计划所需的上下文。 运行以下命令:
git log --oneline -30 # 最近历史
git diff main --stat # 已经更改的内容
git stash list # 任何暂存的工作
grep -r "TODO\|FIXME\|HACK\|XXX" --include="*.rb" --include="*.js" -l
find . -name "*.rb" -newer Gemfile.lock | head -20 # 最近触碰的文件
然后阅读 CLAUDE.md、TODOS.md 和任何现有架构文档。映射:
检查此分支的 git 日志。如果有先前的提交暗示之前的审查周期(审查驱动的重构、撤销的更改),注意更改了什么以及当前计划是否重新触碰了那些区域。对之前有问题的区域审查时更加积极。反复出现问题的区域是架构异味 —— 将它们作为架构关注点提出。
在现有代码库中识别 2-3 个设计特别好的文件或模式。将它们记为审查的风格参考。还要记 1-2 个令人沮丧或设计不佳的模式 —— 这些是要避免重复的反模式。 在继续步骤 0 之前报告发现。
描述该系统 12 个月后的理想最终状态。这个计划是向那个状态移动还是远离它?
当前状态 此计划 12 个月理想
[描述] ---> [描述差异] ---> [描述目标]
对于范围扩展 —— 运行所有三个:
对于保持范围 —— 运行这个:
对于范围缩减 —— 运行这个:
提前思考实现:实现过程中需要做出什么决定,应该现在在计划中解决?
第 1 小时(基础): 实现者需要知道什么?
第 2-3 小时(核心逻辑): 他们会遇到什么歧义?
第 4-5 小时(集成): 什么会让他们惊讶?
第 6 小时以上(完善/测试): 他们会希望当初计划了什么?
现在将这些作为问题提出给用户,不是"以后再说"。
展示三个选项:
上下文相关的默认值:
一旦选择,完全承诺。不要默默漂移。 停止。 每个问题使用 AskUserQuestion 一次。不要批量处理。推荐 + 原因。如果没有问题或修复明显,说明你要做什么并继续 —— 不要浪费问题。在获得用户响应之前不要继续。
评估并绘制图表:
扩展模式附加内容:
必需的 ASCII 图:显示新组件及其与现有组件关系的完整系统架构。 停止。 每个问题使用 AskUserQuestion 一次。不要批量处理。推荐 + 原因。如果没有问题或修复明显,说明你要做什么并继续 —— 不要浪费问题。在获得用户响应之前不要继续。
这是捕捉静默失败的部分。它不是可选的。 对于每个可能失败的新方法、服务或代码路径,填写此表:
方法/代码路径 | 可能出错的地方 | 异常类
-------------------------|-----------------------------|-----------------
ExampleService#call | API 超时 | Faraday::TimeoutError
| API 返回 429 | RateLimitError
| API 返回格式错误的 JSON | JSON::ParserError
| 数据库连接池耗尽 | ActiveRecord::ConnectionTimeoutError
| 记录未找到 | ActiveRecord::RecordNotFound
-------------------------|-----------------------------|-----------------
异常类 | 已救援? | 救援操作 | 用户看到
-----------------------------|-----------|------------------------|------------------
Faraday::TimeoutError | 是 | 重试 2 次,然后抛出 | "服务暂时不可用"
RateLimitError | 是 | 退避 + 重试 | 无(透明)
JSON::ParserError | 否 ← 缺口 | — | 500 错误 ← 不好
ConnectionTimeoutError | 否 ← 缺口 | — | 500 错误 ← 不好
ActiveRecord::RecordNotFound | 是 | 返回 nil,记录警告 | "未找到"消息
此部分的规则:
rescue StandardError 总是异味。命名具体的异常。Rails.logger.error(e.message) 的 rescue => e 是不够的。记录完整上下文:尝试做什么、用什么参数、为哪个用户/请求。安全不是架构的子项。它有自己的部分。 评估:
对于每个发现:威胁、可能性(高/中/低)、影响(高/中/低),以及计划是否缓解它。 停止。 每个问题使用 AskUserQuestion 一次。不要批量处理。推荐 + 原因。如果没有问题或修复明显,说明你要做什么并继续 —— 不要浪费问题。在获得用户响应之前不要继续。
本节以对抗性彻底性追踪数据通过系统和交互通过 UI。
数据流追踪: 对于每个新数据流,生成一个 ASCII 图显示:
输入 ──▶ 验证 ──▶ 转换 ──▶ 持久化 ──▶ 输出
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
[nil?] [invalid?] [exception?] [conflict?] [stale?]
[empty?] [too long?] [timeout?] [dup key?] [partial?]
[wrong [wrong type?] [OOM?] [locked?] [encoding?]
type?]
对于每个节点:每条影子路径会发生什么?是否经过测试?
交互边缘情况: 对于每个新用户可见交互,评估:
交互 | 边缘情况 | 已处理? | 如何处理?
---------------------|------------------------|----------|--------
表单提交 | 双击提交 | ? |
| 使用陈旧 CSRF 提交 | ? |
| 部署期间提交 | ? |
异步操作 | 用户导航离开 | ? |
| 操作超时 | ? |
| 飞行中重试 | ? |
列表/表格视图 | 零结果 | ? |
| 10,000 个结果 | ? |
| 结果页面中变更| ? |
后台作业 | 10 个项目中 3 个处理后作业失败 | ? |
| 作业运行两次(重复) | ? |
| 队列积压 2 小时 | ? |
将任何未处理的边缘情况标记为缺口。对于每个缺口,指定修复方案。 停止。 每个问题使用 AskUserQuestion 一次。不要批量处理。推荐 + 原因。如果没有问题或修复明显,说明你要做什么并继续 —— 不要浪费问题。在获得用户响应之前不要继续。
评估:
为计划引入的每个新事物制作完整的图:
新 UX 流程:
[列出每个新用户可见交互]
新数据流:
[列出数据通过系统的每个新路径]
新代码路径:
[列出每个新分支、条件或执行路径]
新后台作业 / 异步工作:
[列出每个]
新集成 / 外部调用:
[列出每个]
新错误/救援路径:
[列出每个 —— 与第 2 节交叉引用]
对于图中的每个项目:
测试抱负检查(所有模式):对于每个新功能,回答:
测试金字塔检查:很多单元测试,较少的集成测试,很少的 E2E?还是倒置的? 脆弱性风险:标记任何依赖时间、随机性、外部服务或顺序的测试。 负载/压力测试要求:对于任何频繁调用或处理大量数据的新代码路径。
对于 LLM/提示更改:检查 CLAUDE.md 中的"提示/LLM 更改"文件模式。如果此计划触碰任何这些模式,说明必须运行哪些评估套件、应该添加哪些案例,以及要比较的基线是什么。 停止。 每个问题使用 AskUserQuestion 一次。不要批量处理。推荐 + 原因。如果没有问题或修复明显,说明你要做什么并继续 —— 不要浪费问题。在获得用户响应之前不要继续。
评估:
新系统会崩溃。本节确保你能看到原因。 评估:
扩展模式附加内容:
评估:
扩展模式附加内容:
评估:
扩展模式附加内容:
每个 AskUserQuestion 必须:(1)呈现 2-3 个具体的字母选项,(2)首先说明你推荐哪个选项,(3)用 1-2 句话解释为什么选择该选项而不是其他,映射到工程偏好。不要将一个问题的多个问题批量处理。不要是非问题。只有当你对开发者意图、架构方向、12 个月目标或最终用户想要什么有真正的模糊性时才允许开放式问题 —— 你必须解释具体什么模糊。
A) ... B) ... C) ...。用问题编号 + 选项字母标记(例如,"3A"、"3B")。列出经过考虑并明确推迟的工作,每个一行理由。
列出部分解决子问题的现有代码/流程,以及计划是否重用它们。
此计划相对于 12 个月理想状态的差距。
每个可能失败的方法的完整表、每个异常类、救援状态、救援操作、用户影响。
代码路径 | 失败模式 | 已救援? | 已测试? | 用户看到? | 已记录?
---------|----------------|----------|-------|----------------|--------
任何 RESCUED=否、TEST=否、USER SEES=静默的行 → 关键缺口。
将每个潜在的 TODO 作为独立的 AskUserQuestion 呈现。永远不要批量处理 TODO —— 一个问题一个。永远不要默默地跳过此步骤。
对于每个 TODO,描述:
然后呈现选项:A) 添加到 TODOS.md B) 跳过 —— 不够有价值 C) 现在在这个 PR 中构建而不是推迟。
识别至少 5 个"额外块"机会(每个 <30 分钟),让用户觉得"哦,不错,他们想到了那个。"将每个愉悦机会作为独立的 AskUserQuestion 呈现。永远不要批量处理。对于每个,描述它是什么、为什么会让用户愉悦、工作量估计。然后呈现选项:A) 作为愿景项目添加到 TODOS.md B) 跳过 C) 现在在这个 PR 中构建。
列出此计划触碰的文件中的每个 ASCII 图。仍然准确吗?
+====================================================================+
| 超级计划审查 —— 完成摘要 |
+====================================================================+
| 选择的模式 | 扩展 / 保持 / 缩减 |
| 系统审计 | [关键发现] |
| 步骤 0 | [模式 + 关键决策] |
| 第 1 节 (架构) | ___ 个发现问题 |
| 第 2 节 (错误) | ___ 个错误路径映射, ___ 个缺口 |
| 第 3 节 (安全) | ___ 个发现问题, ___ 个高严重性 |
| 第 4 节 (数据/UX) | ___ 个边缘情况映射, ___ 个未处理 |
| 第 5 节 (质量) | ___ 个发现问题 |
| 第 6 节 (测试) | 已生成图, ___ 个缺口 |
| 第 7 节 (性能) | ___ 个发现问题 |
| 第 8 节 (可观察) | ___ 个发现缺口 |
| 第 9 节 (部署) | ___ 个标记风险 |
| 第 10 节 (未来) | 可逆性: _/5, 债务项目: ___ |
+--------------------------------------------------------------------+
| 不在范围内 | 已写 (___ 个项目) |
| 已存在什么 | 已写 |
| 梦想状态差异 | 已写 |
| 错误/救援注册表 | ___ 个方法, ___ 个关键缺口 |
| 失败模式 | ___ 个总计, ___ 个关键缺口 |
| TODOS.md 更新 | ___ 个提议项目 |
| 愉悦机会 | ___ 个已识别 (仅扩展) |
| 生成的图表 | ___ (列出类型) |
| 发现的陈旧图表 | ___ |
| 未解决的决定 | ___ (列在下面) |
+====================================================================+
如果任何 AskUserQuestion 未得到回答,在这里记录。永远不要默默默认。
┌─────────────────────────────────────────────────────────────────┐
│ 模式比较 │
├─────────────┬──────────────┬──────────────┬────────────────────┤
│ │ 扩展 │ 保持范围 │ 缩减 │
├─────────────┼──────────────┼──────────────┼────────────────────┤
│ 范围 │ 向上推 │ 维持 │ 向下推 │
│ 10 倍检查 │ 强制 │ 可选 │ 跳过 │
│ 柏拉图式 │ 是 │ 否 │ 否 │
│ 理想 │ │ │ │
│ 愉悦 │ 5+ 项目 │ 如果看到则记 │ 跳过 │
│ 机会 │ │ │ │
│ 复杂性 │ "足够大 │ "太复杂 │ "是最小 │
│ 问题 │ 了吗?" │ 了吗?" │ 限度吗?" │
│ 品味 │ 是 │ 否 │ 否 │
│ 校准 │ │ │ │
│ 时间 │ 完整 (小时 │ 关键决策 │ 跳过 │
│ 审问 │ 1-6) │ 仅 │ │
│ 可观察性 │ "操作愉悦 │ "能调试 │ "能看到是否 │
│ 标准 │ " │ 它吗?" │ 坏了?" │
│ 部署 │ 基础设施作为 │ 安全部署 │ 尽可能简单 │
│ 标准 │ 功能范围 │ + 回滚 │ 的部署 │
│ 错误映射 │ 完整 + 混沌 │ 完整 │ 仅关键路径 │
│ │ 场景 │ │ │
│ 第 2/3 阶段 │ 映射它 │ 记录它 │ 跳过 │
│ 规划 │ │ │ │
└─────────────┴──────────────┴──────────────┴────────────────────┘
development
编排无人值守项目开发闭环,从需求澄清、技术方案、实施计划、代码执行、阶段审查、疑问回退到端到端测试验收。用户要求“无人值守开发”“端到端交付”“自动推进研发流程”“严格审查并回退重做”“从需求到测试全流程执行”时使用;本 skill 负责总控,不替代 requirements-workshop-v2、tech-design-v2、implementation-planning-v2、plan-execution-v2、project-development-review-v2 或 test-suite-maintainer 的阶段规则。
development
基于已确认的需求简报创建简洁的实现契约。当需求已确认,用户要求技术方案、实现方案、API 或数据设计、代码变更契约时使用。本 skill 只设计方案,不写生产代码。
content-media
将项目想法或功能请求澄清为简洁、聚焦决策的需求简报。当用户想讨论需求、确定范围、把想法整理成开发前输入,或为 tech-design-v2 准备需求材料时使用。本 skill 只产出需求,不做技术方案或代码实现。
development
项目开发 v2 skill 套件的共享政策和交付契约。当维护、审查、分享或挂载 requirements-workshop-v2、tech-design-v2、implementation-planning-v2、plan-execution-v2 使用的公共文档时使用;当任务涉及 v2 提问策略、交付契约或禁止模拟完成策略时也使用。