# Plan To Tasks

> 根据 plan.md 拆解变更计划为可独立验证的子任务

- Skill: `cnife/plan-to-tasks` (Agent Skill)
- Install (CLI): `npx skillmds@latest add cnife/plan-to-tasks`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cnife/plan-to-tasks/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: cnife (https://skillmd.com/u/cnife)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cnife/plan-to-tasks

---


# Plan-to-Tasks — 任务拆解

读取 `plan.md`，将变更计划拆解为可独立验证的子任务，分析依赖关系，按拓扑分层。

## 输入

- 主输入：`$CHANGE_DIR/plan.md`，已锁定不可变
- 参考：`$CHANGE_DIR/change.md`（如有），仅了解历史，不推翻 plan.md

## 拆解规则

1. 一个子任务对应一个可独立验证的变更点——完成后能用一条明确的检查命令确认正确性
2. 修改配置 + 同步更新所有引用处 = 一个子任务。新建一个模块文件 = 一个子任务。重构一个函数的所有调用方 = 一个子任务
3. 不按文件行号或字段粒度机械切分
4. **优先按垂直切片拆分**：每个子任务应端到端穿透所有层，而非按技术层水平拆分
5. **例外**：当垂直切片会导致大量重复工作时，才考虑水平切一层做基础后再垂直切片

### 依赖分析

1. 子任务 B 调用了子任务 A 创建的接口/模块 → B 依赖 A
2. 两个子任务修改不同模块、无接口依赖 → 独立，可并行
3. 依赖使用完整 slug（如 `T02-实现取消状态机`），更新任务名时同步检查引用
4. 不凭空制造依赖

## 任务文件格式

每个子任务写入独立的 `$CHANGE_DIR/tasks/T<ID>-<slug>.md`：

```markdown
---
status: 待开始
priority: 高 | 中 | 低
depends_on: []
---

# T<ID>: <标题>

**目标**：<一句话描述这个任务要达成什么>

**涉及文件**：

- <文件路径>

**验证方式**：<验证命令或手动检查方法>
```

> `depends_on` 使用完整 slug（如 `[T01-拆分读写表]`）；更新任务文件名时需同步检查引用。

## 输出

在 `$CHANGE_DIR/` 下创建 `tasks/` 目录，每个子任务一个 `.md` 文件。

## change.md 追加

```markdown
---

# 变更 v{N}：任务拆解

## 产出文件

tasks/T01-xxx.md, ...

## 变更概述

将 plan.md 拆解为 {总数} 个可独立验证的子任务，按 {层数} 个并行层排列。

## 任务摘要

| ID | 子任务 | 涉及文件 |
|----|--------|---------|
| T1 | xxx | a.py |

## 并行分层

| 层 | 包含任务 | 依赖 |
|----|---------|------|
| 1 | T1, T3 | 无 |
| 2 | T2 | T1 |
```

## 停止条件

- plan.md 不存在或无法解析 → 停止
- plan.md 中存在无法确定子任务边界的模糊条目 → 提问，不猜测
- 所有 task 文件写入完毕且 change.md 追加完毕 → 停止

