408K人装的AI编码技巧
用 Claude Code、Cursor 写代码,最烦的不是 AI 写不好——是它写完了你才发现它根本没理解你的需求。
你描述了功能、举了例子、列了边界条件。AI 点头说"明白了"。然后哗啦啦写一通。你一看:业务约束漏了、跟现有架构冲突、复杂度想简单了。
于是开始改。token 烧了,时间花了,循环了好几轮才对齐。
● ● ●
反转:别让 AI 写代码,让它拷问你
Matt Pocock——TypeScript 教育家、Total TypeScript 创始人——写了一个叫 grill-me 的 skill,思路跟常规反着来。
普通的用法是你给 AI 下指令。grill-me 是 AI 来提问,沿着决策树一个分支一个分支往下走,直到你们对方案有共识。它的核心 prompt 就这几行:
Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering.
If a question can be answered by exploring the codebase, explore the codebase instead.
就这几行。原理很简单:把没说出口的假设摊开,风险提前冒出来。
这个 skill 是 Pocock 开源仓库 mattpocock/skills 里安装量最高的——408.9K 次安装。整个仓库 158K stars,45 个 skill,总安装量 550 万。grill-me 的安装量碾压第二名(improve-codebase-architecture,336.5K)。比第二名多了 7 万——大家不缺代码工具,缺的是动手之前先把事想清楚的东西。
workflow
● ● ●
两个真实案例
博客园作者 guangzan 在一篇博客里详细记录了 grill-me 在自己项目里的使用体验。他的场景是一个多租户中后台项目。
案例一:加个批量导入
需求听起来简单:加个批量导入,支持 Excel 和 API。
他以前的做法是直接描述需求让 AI 写。第一版翻车——审计日志没考虑、事务一致性没想清楚、配额和大文件处理也漏了。
换成 grill-me 后,AI 先翻了现有导入模块和权限模型,然后才开始一个一个问:
「批量导入是谁触发的?手动上传、定时任务,还是第三方 webhook?」
答完接着问:「成功和失败怎么通知?要不要异步?失败重试几次?」
每答一个,AI 会给推荐方案,并确认依赖——「这会动到现有权限模型吗?」
几轮下来,功能边界清楚了,跟领域模型的冲突也提前暴露。最终实现基本一次过。
案例二:订单支持部分取消
这个更难。已发货订单原先只能整单取消,产品要求支持部分取消。是一条老链路,改不好就是线上事故。
grill-me 没有先写方案。它顺着 OrderService 的状态机往下追,发现取消会触发退款、库存回滚和仓库 webhook;又追到 PromoEngine,看到满减是按整单算的。然后才开始问:
- 部分取消后,满减要不要重算?代码里三种算法——你定哪一种?
- 混合支付(余额 + 微信)时,退款按什么比例拆?现有
RefundService只处理整单,没有部分退的路径。 - 仓库 webhook 是 fire-and-forget,没有幂等键。部分取消如果重试,会不会重复通知?
有些问题能从代码推断答案;有些连开发都说不准——历史上运营改过口径,文档没更新。grill-me 的价值恰恰是把这些问题提前拎出来,而不是写完了才发现。
如果直接改,大概率只会动 OrderService 的状态判断,漏掉满减重算、混合支付拆账和 webhook 幂等。上线后就是"取消成功但退款不对"或者"仓库收到两次取消通知"。
grill-me 逼着把每条分支走一遍,该写 ADR 的写,该找运营确认的当场记下来。改完跑回归,没有冒出新的边角问题。
● ● ●
不止 grill-me
Pocock 的 45 个 skill 不是随机堆的。它们背后是四类最常见的 AI 编码翻车场景:
| 失败模式 | 症状 | 对应 skill |
|---|---|---|
| **需求错位** | AI 理解了错误的意图,写出"正确但没用"的代码 | `grill-me` |
| **过于冗长** | AI 生成大量上下文,核心逻辑被淹没 | `CONTEXT.md` |
| **代码不可用** | 写出来的代码跑不通或逻辑有 bug | `tdd`(强制红-绿-重构循环) |
| **系统腐烂** | 多次修改后代码结构退化 | `improve-codebase-architecture` |
四个 skill 分别对应经典软件工程里的不同传统——DDD(领域驱动设计的对齐思路)、XP(极限编程的 TDD)、《程序员修炼之道》(架构腐化)。但实现方式全是纯 prompt,没有任何 SDK 依赖、不绑特定模型、跨 8 个 agent 平台可移植。
Pocock 本人靠 Total TypeScript 课程有 7 万+付费学员(课程约 $499)。开源 Skills 不是自毁商业模式——是他把个人用的 prompt 公开了,反哺 AI Hero 新课和 Newsletter 获客。开源即获客。
● ● ●
局限
guangzan 说有些模型追问过细,"这也并没有什么不好"。对简单任务确实 overkill——如果只是改个按钮文案,不需要决策树。
还有一个点:grill-me 需要你能回答 AI 的问题。如果有些决策你自己也说不准(比如"运营规则到底是哪一种?"),它会逼你去确认。这不是 bug——不确定的决策扔给 AI 替你做,结果多半是错的。
● ● ●
怎么用
一行命令:
npx skills add https://github.com/mattpocock/skills --skill grill-me
然后在 Claude Code、Cursor 或任何支持的 agent 里输入 /grill-me 加上你的初步计划。
guangzan 推荐配合 Cursor 的 Plan Mode 使用——先通过 grill-me 构建共识,然后再用 Plan Mode 出方案、执行。修遗留 bug 时也是这个流程:grill-me 复现代码路径 → 问影响范围和回归点 → 再改。
一句话:花 10 分钟被 AI 拷问,省掉后面 2 小时的返工。这 10 分钟值。
参考来源:
- cnblogs.com/guangzan/p/20774394
- github.com/mattpocock/skills