Task breakdown
面向开发者的 Claude Code skills 套件 | A developer-focused Claude Code skills suite
npx -y skills add Lion-1209/Lion-Skills --skill task-breakdownAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
需把需求拆成可执行任务并排依赖时。
SKILL.md
11.0 KB, as published. Nobody here has run it
Task Breakdown
概述
把一个需求拆成"今天就能动手、做完就能验证"的小任务。核心:每个任务是一次端到端的价值交付,而不是一层架构的横切——前者让你随时有可验证的进展,后者让你做到最后才看见东西跑起来。
何时使用
- 拿到一个需求/用户故事,要转成开发任务
- 面对一个大需求,不知从何下手
- 已有任务清单,想审查拆得对不对
- 要排开发顺序和依赖关系
不该用:需求本身已经是一个明确的小改动(直接做);纯调研性命题(用 spike 流程,见下文)。
与相邻 skill 的衔接:task-breakdown 在"写 spec → 拆任务 → 执行"流水线的中间。理想入口是拿到一份定稿的 spec(用 spec-writing 产出)——方案决策已定,拆出的任务才有稳固依据;只有模糊需求时,先澄清/写 spec 再拆,否则任务建立在假设沙地上。
核心内容
先判断任务大小
不是所有需求都该拆,也不是越细越好。拿到需求先问两个方向:
- 拆不够:它能不能在一次提交里端到端做完、且做完就能验证?能 → 别拆,直接做;不能 → 用下面的流程拆。
- 拆过细:清单里有没有一堆"半小时以内的微步骤"(如"建表"和"加字段"分开、"写接口"和"加路由"分开)?有 → 合并回可独立验证的粒度。每个任务都有管理开销(上下文切换、状态追踪),碎任务的成本会淹没价值。
过度拆分比不拆还糟。粒度的尺子:一个任务做完后,能独立验证、独立合并、独立回滚——到这个粒度就停,再大不好做、再小是浪费。
澄清未知
模糊需求直接拆,会拆出一堆基于错误假设的任务。拆之前先把"会影响切片方式的未知"问清楚,不要凭猜往下走。典型该问的:
- 范围边界:哪些在 scope 内、哪些不在?("支持邮件通知"——只发交易邮件还是也发营销?)
- 规模/量级:影响技术选型和切片顺序(日活 100 vs 100 万,缓存策略天差地别)
- 完成标准:怎样算"做完了"?(性能要求、合规要求、可观测性要求)
- 已知约束:必须用的技术、不能动的部分、截止时间
分优先级问,别一次性甩给用户。未知通常很多,一次列十几条会淹没用户。按"是否阻塞第一刀"分两类:
- 阻塞项(不答就没法切第一片)——先问。例:通知系统"发什么类型、给谁发"不答,第一刀都没法落。
- 非阻塞项(先用合理默认假设推进,遇到再问)——后问或直接用假设。例:通知系统"是否多语言"——先用"只做中文"的假设推进,等做到模板那片再确认。
问的方式:把你的假设显式写出来让用户确认("我假设 X,不对就纠正我"),而不是连环追问——前者用户一句话就能校正方向,后者消耗耐心。每条最好带一句"为什么问"(这个未知如何影响切片),并在意控量(一次别超 6-8 条);spec-writing 的"澄清问题怎么问"对此有更细的展开,可参考。
反例:用户说"做个通知系统",你直接拆成"建表/写 API/写 UI"——所有切片都建立在"通知是什么、发给谁、怎么算成功"都未定义的沙地上。
选切片方向:垂直切片,别横切
这是拆任务最关键的决策。有两种切法:
- 横切层(糟糕的默认):按架构层切——"先建数据库表 → 再写后端 API → 再写前端 → 最后联调"。直觉上像"循序渐进",实则把价值验证堆到最后:你做完前 3 个任务,什么可运行的东西都没有,直到联调那一刻才暴露所有集成错误。
- 垂直切片(推荐):按端到端的价值切——"邮件通知:从 DB 读用户 → 调邮件服务发送 → 用户能在收件箱看到"。每个切片自己走完所有层,做完就有一个可验证的、跑通的功能增量。
为什么垂直切片更优:
- 早验证:第一个切片做完就能演示,错也错得早、错得便宜。
- 早集成:集成风险被摊到每个切片,而不是堆到最后爆炸。
- 进度可见:完成 N 个切片 = N 个可演示功能,而不是"后端 80% 完成"这种无法验证的进度。
一个完整的垂直切片长这样:选一个最小但真实的数据 → 走通它的 DB schema + API + 业务逻辑 + UI + 测试。第一片可以很糙(hardcode 数据、丑 UI),但要端到端跑通。
重构/迁移场景:价值换成"风险消化",切片换成"渐进可回滚"。上面定义的切片是"新功能语言"(DB+API+UI+测试、用户可演示的价值)。但重构、迁移、框架升级、性能改造这类任务没有用户可感知的新价值——用户看不到"项目变成了 TS"或"换了状态管理库"。这时机械套用"垂直切片"会卡壳,但别因此退化成横切。
理解垂直切片的本质——它不是"用户价值",而是 "做完一片就能验证、就能回滚、就把这部分风险消化掉了"。把这点迁移到重构场景:
- 切片单位 = 一个可独立验证、独立回滚的子范围(通常按模块/目录/路由切),而非"一个用户故事"。
- 每片做完,整个项目仍能构建、测试全绿、可运行——这是重构可验证的等价物(新功能的"能演示"= 重构的"仍能构建且测试绿")。
- 顺序按依赖图从叶子往根部(叶子 = 被依赖多、本身不依赖别人的基础模块),让每一片的影响范围可控。
- 典型反模式(必踩的坑):"先全局改后缀/先全局换语法/先一次性升级大依赖"——改完整个项目编译不过、无法验证、无法回滚,等同于新功能里"先建完所有表再联调"的横切。
例:JS→TS 迁移,按 utils → constants → services → components → pages 渐进迁移,每迁一个目录全项目 tsc --noEmit 仍通过、测试仍绿、可独立合并回滚。第一片可以很糙(只迁 utils,且暂时 any 不卡),但要保持项目始终可构建。
用户已有清单时的渐进改法:真实场景里,用户的清单很少是纯横切,往往是横切和合理项的混合。别要求用户推倒重来。先挑出最该改的那一刀——通常是"第一个本该端到端、却被横切的任务"——改给它看,让用户感受到差别,再决定要不要把其余的也改了。一次改太多,用户接不住、也容易引发抵触。
横切任务在垂直切片下会自然消失:用户清单里常见的"联调""写单元测试""部署"单独成项,往往是横切思维的产物——垂直切片每片都端到端跑通,"联调"在每片里就发生了;测试是每片的完成定义的一部分;部署是每片合并时自动发生。改写时把它们并入各切片的完成定义,而不是留作后置任务。
什么时候允许横切:仅当某一层是"所有切片都依赖的公共地基"(如先把 CI 跑起来、先建空项目骨架),且它本身规模小、做完即不再返工。这种横切的"基础设施片"应该很少,且排在最前。
每个任务带完成定义
每个任务必须能回答"怎样算做完了"——不是"写完代码",而是可验证的标准:
- 差的完成定义:"实现邮件发送接口"(写完?跑通?测过?)
- 好的完成定义:"在测试环境调用 POST /notify/email,能在 Mailtrap 收件箱看到测试邮件,且失败时有日志"
完成定义让任务"可验收",也防止"看起来做完了实际没做完"。一个简单的检查:**任务清单里的每一条,你能不能说出它做完后怎么验证?**说不出来 → 任务定义不清,补完成定义。
研究和执行分开
有些任务不是"写代码"而是"搞清楚能不能做、怎么做"——这种叫 spike(调研打桩)。比如"缓存方案选 Redis 还是 Memcached"在没调研前,你拆不出执行任务,只能拆出研究任务。
把研究和执行分开标记:
- 研究任务(spike):产出是结论/决策/技术选型,不是代码。例:"调研三家短信服务商的送达率和价格,给出选型建议"。完成后可能改变后续执行任务的结构。
- 执行任务:产出是可验证的代码/配置变更。
研究任务通常排在执行任务之前,且完成后要回头修订执行计划(因为研究结论可能让原计划失效)。
依赖排序
拆完后检查依赖关系、排出可执行的顺序:
- 研究 → 执行:执行依赖研究的结论,研究先行
- 地基 → 上层:基础设施片排在垂直切片之前
- 解耦的任务可并行:主动标出来——哪些切片之间无依赖、可以并行推进(如多个独立通道、多个独立查询接口)。并行机会不标出来,团队就会串行做完、白白浪费并发空间
排完序的理想形态:从头到尾做下去,每个任务做完都能验证、都能合并,而不是攒一堆到某个点才能集成。
产出形态
最终交给用户的是一份精简的任务清单,不是论证长文。规则:
- 清单优先:用户要的是"做什么、什么顺序",给编号任务清单 + 每条的完成定义。别把推理过程、skill 原文引用、为什么这样切的论证全倒给用户——那是你的工作记录,不是交付物。
- 澄清要精炼:澄清问题用编号列表,阻塞项在前、非阻塞假设在后("以下我用默认假设推进,不对请纠正")。一次别超过 6–8 条,多了用户接不住。
- 改写要有对照:审查已有清单时,给"原条目 → 改写"的对照,让用户看到具体差异,而非抽象批评。
记住:skill 的产出是帮用户决策和执行,不是展示你分析得多彻底。
常见错误
| 问题 | 修法 |
|---|---|
| 模糊需求直接拆 | 先澄清会影响切片方式的未知,显式写假设让用户确认 |
| 横切层切片(按架构分层) | 改成垂直切片,每个切片端到端走通 |
| 重构/迁移任务一次性横切("先全局改后缀/换语法/升大依赖") | 按模块渐进,每片做完项目仍能构建测试全绿、可回滚 |
| 任务无完成定义 | 每个任务写明"做完后怎么验证" |
| 把所有任务都当执行任务 | 区分研究(spike)和执行,研究先行且回头修订计划 |
| 过度拆分(一堆半小时任务) | 合并同一切片内的微步骤,保留可独立验证的粒度 |
| 任务顺序靠直觉排 | 按研究→地基→垂直切片的依赖关系排 |
| 一次甩十几条澄清问题淹没用户 | 分优先级:阻塞项先问,非阻塞项用默认假设推进 |
| 把推理过程当产出倒给用户 | 交付精简任务清单,论证留在工作记录里 |