工作量拆分-Cosmic

Other

基于 COSMIC 标准的工作量拆分工作流。将需求文档自动拆解为功能点与子过程明细(E/R/W/X 数据移动),生成拆解表格与 CSV 文件。当用户要求进行 COSMIC 拆分、功能点分析、COSMIC 工作量拆解时使用。

Install

openclaw skills install wenwei-cosmic

COSMIC 工作量拆分工作流

基于 COSMIC 标准,将需求文档拆解为功能点与子过程明细。通过多步骤工作流(工作区准备 → 功能点摸底 → 用户确认 → 执行拆解 → CSV 导出)完成自动化拆分。

何时调用

  • 用户要求根据需求文档进行 COSMIC 工作量拆分
  • 用户要求进行功能点分析或 CFP 度量
  • 用户提到 COSMIC 拆分、COSMIC 功能点等关键词

前置条件

  • 用户提供需求文档路径(支持 .md.docx 格式)
  • 项目根目录下存在 results/ 文件夹

工作流概览

本工作流包含 5 个步骤,通过 TodoWrite 工具追踪进度:

  1. 工作区准备 — 创建产出文件夹、转换文档格式(Task 子代理)
  2. 模块与功能点摸底 — 梳理功能点清单(Task 子代理)
  3. 摸底结果确认 — 与用户沟通确认功能点清单(主 Skill 处理)
  4. 执行 COSMIC 拆解 — 将功能点拆解为子过程描述(Task 子代理)
  5. 拆解结果审阅与 CSV 导出 — 用户审阅、生成最终 CSV(主 Skill 处理)

启动流程

第一步:接收需求文档

从用户消息中获取需求文档的路径。如果用户未提供路径,询问用户提供需求文档。

第二步:确定产出路径

根据需求文档文件名(去掉后缀)确定产出路径:results/<需求文档名>/

例如:需求文档为 docs/ID-E004-客户管理需求.md,则产出路径为 results/ID-E004-客户管理需求/

第三步:推断当前工作进度

检查产出路径下的文件来推断当前处于哪个步骤:

文件状态推断结论进入步骤
产出文件夹不存在全新工作步骤 1
文件夹存在,无 需求摸底说明与拆分计划.md工作区已准备,摸底未开始步骤 2
需求摸底说明与拆分计划.md 存在,所有功能点均为 [ ](无 [x]摸底已完成,待用户确认步骤 3
需求摸底说明与拆分计划.md 存在,部分为 [x]、部分为 [ ]拆解进行中步骤 4
所有功能点为 [x]拆解明细.md 存在拆解完成步骤 5

第四步:生成 Todo 清单

使用 TodoWrite 工具生成待办事项,根据推断的进度设置各步骤状态:

id: cosmic-step-1, content: "工作区准备(创建文件夹、转换文档格式)"
id: cosmic-step-2, content: "模块与功能点摸底(梳理功能点清单)"
id: cosmic-step-3, content: "摸底结果确认(与用户沟通,确认功能点清单)"
id: cosmic-step-4, content: "执行 COSMIC 拆解(将功能点拆解为子过程描述)"
id: cosmic-step-5, content: "拆解结果审阅与 CSV 导出"

已完成的步骤标记为 completed,当前步骤标记为 in_progress,后续步骤标记为 pending

第五步:告知用户当前进度

向用户报告推断的进度状态,例如:

  • 全新工作:"检测到这是一份新的需求文档,将从头开始 COSMIC 拆分工作。"
  • 续接工作:"检测到上次工作已进行到【功能点摸底】阶段,将从该步骤继续。"

然后按照对应步骤开始执行。

路径约定

本 Skill 中所有相对路径均相对于 SKILL.md 所在目录解析。例如 prompts/xxx.md 即与本文件同目录下的 prompts/xxx.md。执行 Shell 命令时,需将相对路径拼接为绝对路径后使用。

文件访问链接格式

当主 Skill 向用户汇报已生成或已更新的产出文件时,除了说明文件名称和用途,还必须在 AI 回复中提供可点击的文件访问超链接。

规则如下:

  1. 链接只出现在 AI 回复里,不要写入产出文件正文。
  2. 链接格式优先使用 Markdown 链接 + file:/// 绝对路径 URI。
  3. Windows 本地路径转链接时,将反斜杠 \ 统一替换为正斜杠 /,例如:
- [需求摸底说明与拆分计划](file:///D:/workspace/14.cursor-workspaces/nesma-cosmic/results/xxx/需求摸底说明与拆分计划.md)
- [拆解明细](file:///D:/workspace/14.cursor-workspaces/nesma-cosmic/results/xxx/拆解明细.md)
- [拆解明细 CSV](file:///D:/workspace/14.cursor-workspaces/nesma-cosmic/results/xxx/拆解明细.csv)
  1. 如果平台对本地文件链接支持有限,仍应优先输出上述链接格式,必要时可同时附上绝对路径文本作为兜底。

子代理调度方式

重要:本工作流通过 Task 工具调度子代理,提示词模板存放在 prompts/ 目录下。调度步骤:

  1. 使用 Read 工具读取对应的提示词模板文件
  2. 在提示词前面拼接本次任务的具体参数(文件路径、运行模式等)
  3. 通过 Task 工具(subagent_type: generalPurpose)发起子代理执行

硬性执行约束

以下约束是强制要求,优先级高于"主 agent 自己把事情做完"的一般倾向:

  1. 步骤 1、步骤 2、步骤 4 必须通过 Task 工具执行。 主 agent 不得直接完成这些步骤的正文工作。
  2. 主 agent 在步骤 1、步骤 2、步骤 4 中,只允许做以下事情:
    • 推断当前工作进度
    • 读取提示词模板
    • 拼接运行参数
    • 发起 Task
    • 接收子代理结果
    • 更新 TodoWrite 状态
    • 向用户同步进度或请求确认
  3. 主 agent 在步骤 1、步骤 2、步骤 4 中,禁止做以下事情:
    • 直接读取需求正文后自行进行功能点摸底
    • 直接创建或修改 需求摸底说明与拆分计划.md
    • 直接创建或修改 拆解明细.md
    • 直接执行本应由子代理完成的文档复制、功能点识别、COSMIC 拆解工作
    • prompts/*.md 中的内容当作主 Skill 的执行正文直接照做
  4. 如果 Task 没有成功发起,或者子代理返回失败 / 阻塞,主 agent 必须停止降级执行。 此时只能:
    • 向用户说明当前卡在哪一步
    • 报告已尝试的 Task 调度
    • 请求用户确认是否重试或调整策略
  5. 如果你发现自己已经开始"准备直接做步骤 1 / 2 / 4 的业务内容",说明你偏离了本 Skill 的约束,必须立刻停止并改为先发起 Task。

Task 调度标准模板

在步骤 1、步骤 2、步骤 4 中,统一使用下面的调度顺序:

  1. Read 对应的提示词模板文件
  2. 组装 Task prompt,格式如下:
【本次运行参数】
- 参数 1:...
- 参数 2:...

【执行要求】
- 你必须在本次子代理上下文中完成任务
- 完成后返回产出文件路径、执行结果、是否存在阻塞

【提示词模板正文】
<template content>
  1. 立即发起 Task(subagent_type: generalPurpose
  2. 等待子代理返回结果
  3. 只有在子代理成功返回后,主 agent 才能更新 Todo 并进入下一步

步骤 1:工作区准备

  1. 读取提示词模板:prompts/workspace-prep.md
  2. 通过 Task 工具调度子代理,在提示词前拼接以下参数:
    • 需求文档路径:<实际路径>
    • 产出路径:<实际路径>

子代理完成后,更新 Todo(cosmic-step-1 → completed),进入步骤 2。

步骤 2:模块与功能点摸底

  1. 读取提示词模板:prompts/module-analyzer.md
  2. 通过 Task 工具调度子代理,在提示词前拼接以下参数:
    • 需求文档(Markdown)路径:<产出路径下的路径>
    • 需求扩充说明路径:<如存在则提供>
    • 运行模式:初次执行用户反馈修改
    • 用户反馈内容:<如有>
    • 产出路径:<实际路径>

子代理完成后,更新 Todo(cosmic-step-2 → completed),进入步骤 3。

步骤 3:摸底结果确认

此步骤由主 Skill 自身处理,不调度子代理。

  1. 读取 需求摸底说明与拆分计划.md 的内容
  2. 从文档中提取摘要,至少包括:
    • 功能大类数量与名称列表
    • 功能点总数
  3. 向用户展示摸底结果摘要时,必须同时附上 需求摸底说明与拆分计划.md 的访问超链接
  4. 询问用户:"以上功能大类划分和功能点清单是否合理?如有误收录的非需求内容、遗漏的业务功能点,或需要扩充的章节,请告诉我具体意见。"
  5. 根据用户反馈:
    • 用户说"合理"或类似肯定回复:更新 Todo(cosmic-step-3 → completed),进入步骤 4
    • 用户提出修改意见:将用户反馈内容记录,重新调度步骤 2(用户反馈修改 模式),Todo 状态回退(cosmic-step-2 → in_progress, cosmic-step-3 → pending)
    • 用户要求扩充需求:引导用户描述扩充内容,将扩充内容写入产出路径下的 需求扩充说明.md(如已存在则追加),然后重新调度步骤 2

步骤 4:执行 COSMIC 拆解

  1. 读取提示词模板:prompts/decomposer.md
  2. 通过 Task 工具调度子代理,在提示词前拼接以下参数:
    • 需求文档(Markdown)路径:<产出路径下的路径>
    • 需求扩充说明路径:<如存在则提供>
    • 需求摸底说明与拆分计划.md 路径:<实际路径>
    • 产出路径:<实际路径>
    • (必选)执行禁令:明确告知子代理——禁止使用 Python/脚本 批量生成 拆解明细.md;拆解内容须逐条人工撰写后写入 Markdown(与 prompts/decomposer.md 中「产出方式(硬性禁令)」一致)。

子代理每次最多处理 100 个功能点。子代理完成后,检查 需求摸底说明与拆分计划.md 中是否还有 [ ] 项:

  • 如有剩余:再次调度子代理处理下一批
  • 如全部为 [x]:更新 Todo(cosmic-step-4 → completed),进入步骤 5

步骤 5:拆解结果审阅与 CSV 导出

此步骤由主 Skill 自身处理。

  1. 读取 拆解明细.md,统计拆解结果摘要:
    • 功能点总数
    • CFP 总数(子过程描述总行数,每个数据移动 = 1 CFP)
    • 数据移动类型分布(E / R / W / X 各多少个)
  2. 向用户展示摘要时,必须同时附上 拆解明细.md 的访问超链接,然后询问是否满意
  3. 如果用户满意,执行 CSV 导出:
python scripts/md2csv.py "<产出路径>/拆解明细.md" "<产出路径>/拆解明细.csv"
  1. 告知用户 拆解明细.csv 已生成,并在回复中附上 拆解明细.csv 的访问超链接;可一并附上 需求摸底说明与拆分计划.md拆解明细.md 的访问超链接,方便用户统一审阅
  2. 更新 Todo(cosmic-step-5 → completed)