| name | task-dep-analysis |
| description | 任务依赖分析 — dev-plan 任务表的依赖关系建模、关键路径计算、环检测、Sprint 分组。仅处理任务依赖,不含代码模块依赖。 |
| argument-hint | <DEV-PLAN文档路径> |
| suggested-tools | file_read, file_grep, shell_exec |
| depends | [] |
| disable-model-invocation | false |
| user-invocable | true |
任务依赖分析 (task-dep-analysis)
能力边界
- 能做: 任务间依赖关系建模、拓扑排序、关键路径计算、循环依赖检测、Sprint分组建议
- 不做: 任务内容定义、代码实现、代码模块依赖图(→ code-review scan --focus coupling)
输入规范
- dev-plan#§1 Sprint任务表(任务ID + 依赖列)
- dev-plan#§2 依赖图(文本DAG关系)
- 任务卡的depends_on字段(如存在)
输出规范
- 环检测结果(通过/失败 + 循环路径)
- 拓扑排序(有效执行顺序)
- 关键路径(基于复杂度权重)
- Sprint分组建议(按拓扑层级和并行度)
- 落盘: 上述产物经 §执行流程写入 dev-plan 文档对应章节(依赖图 Mermaid → dev-plan#§2、关键路径与 Sprint 分组 → dev-plan#§4)
执行流程
Step 1: 提取依赖数据
数据源(自动):
- 优先经图谱取依赖边 — 用 context 的 query 分支把"列出所有任务依赖边(T→T)"翻译为只读追溯查询并执行,返回的 src→dst 对直接拼成
--edges "T-001→T-002,...",无需再读 Markdown。
- 回退读文档 — 追溯后端不可用时,从 dev-plan#§1 Sprint 任务表(任务 ID + 依赖列)、§2 依赖图(文本 DAG,T-001 ─→ T-002)、任务卡
depends_on 字段提取,合并去重成边列表。
任一路径都必须输出边列表((src, dst) 元组),交给 Step 2 的脚本。
Step 2: 运行依赖分析脚本
调用约定(单一入口): 一律通过 cataforge skill run <skill-id> -- <args> 触发,由框架解析 SKILL.md 元数据并派发到内置脚本或项目覆写脚本。不得直接 python .cataforge/skills/.../scripts/*.py——该路径为框架内部实现细节,不保证存在。
使用Bash执行:
cataforge skill run task-dep-analysis -- \
--edges "T-001→T-002,T-002→T-003,..." \
[--weights "T-001:S,T-002:M,T-003:L,..."] \
[--format json]
脚本功能:
- 环检测(DFS): 输出循环路径或PASS
- 拓扑排序(Kahn算法): 输出有效执行顺序
- 关键路径计算: 基于复杂度权重(S=1,M=2,L=3,XL=5)
- Sprint分组建议: 按拓扑层级和并行度分组
输出: --format json(默认且唯一)输出 JSON 结构化分析数据。依赖图的 Mermaid 可视化由 cataforge viz tasks --format mermaid --edges "..." 产出(同一图算法、同一关键路径高亮)。
JSON输出示例:
{
"cycle_detected": false,
"cycles": [],
"topological_order": ["T-001","T-002"],
"critical_path": ["T-001","T-003"],
"critical_path_weight": 7,
"sprint_groups": [["T-001","T-004"],["T-002","T-005"]]
}
cataforge viz tasks --format mermaid 输出示例:
graph LR
T-001 --> T-002
T-001 --> T-003
T-003 --> T-005
style T-001,T-003,T-005 fill:#f96,stroke:#333,stroke-width:2px
Step 3: 应用分析结果
- 有环 → 报告环路径,建议打破方式,status=blocked
- 无环 → 执行以下操作:
- 使用
cataforge viz tasks --format mermaid --edges "..." 获取 Mermaid 依赖图
- 通过
cataforge context write-narrative 将 Mermaid 图写入 dev-plan §2(包裹在 ```mermaid 代码块中)
- 使用
cataforge skill run task-dep-analysis -- --format json 获取关键路径和 Sprint 分组数据
- 将关键路径信息写入 dev-plan#§4
Anti-Patterns
- 禁止: 引入"先做A再做B更顺手"这种人为依赖 —— 依赖只能基于数据流 / 接口契约 / consumer-producer 关系,否则 sprint_groups 会过窄、并行度白丢
- 禁止: 检测到环依赖时静默改图绕过 —— 必须 FAIL 并要求 tech-lead 由 task-decomp 重新拆 task 或引入抽象层
- 禁止: 把 dep-analysis 报告写入 dev-plan#§2 之外的位置 —— 该 section 是 orchestrator §Parallel Task Dispatch 读 sprint_groups 的唯一入口
- 避免: 未跑
--format json 就让 LLM 估算关键路径 —— 关键路径是确定性图算法的输出,LLM 估算既不必要也不可靠
效率策略
- 使用确定性Python脚本执行图算法,不依赖LLM推理