back
loading skill details...
基于 COSMIC 标准的工作量拆分工作流。将需求文档自动拆解为功能点与子过程明细(E/R/W/X 数据移动),生成拆解表格与 CSV 文件。当用户要求进行 COSMIC 拆分、功能点分析、COSMIC 工作量拆解时使用。
--- name: wenwei-cosmic description: 基于 COSMIC 标准的工作量拆分工作流。将需求文档自动拆解为功能点与子过程明细(E/R/W/X 数据移动),生成拆解表格与 CSV 文件。当用户要求进行 COSMIC 拆分、功能点分析、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 本地路径转链接时,将反斜杠 `\` 统一替换为正斜杠 `/`,例如: ```markdown - [需求摸底说明与拆分计划](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) ``` 4. 如果平台对本地文件链接支持有限,仍应优先输出上述链接格式,必要时可同时附上绝对路径文本作为兜底。 ## 子代理调度方式 **重要**:本工作流通过 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,格式如下: ```text 【本次运行参数】 - 参数 1:... - 参数 2:... 【执行要求】 - 你必须在本次子代理上下文中完成任务 - 完成后返回产出文件路径、执行结果、是否存在阻塞 【提示词模板正文】 <template content> ``` 3. 立即发起 Task(`subagent_type: generalPurpose`) 4. 等待子代理返回结果 5. 只有在子代理成功返回后,主 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 导出: ```bash python scripts/md2csv.py "<产出路径>/拆解明细.md" "<产出路径>/拆解明细.csv" ``` 4. 告知用户 `拆解明细.csv` 已生成,并在回复中附上 `拆解明细.csv` 的访问超链接;可一并附上 `需求摸底说明与拆分计划.md`、`拆解明细.md` 的访问超链接,方便用户统一审阅 5. 更新 Todo(cosmic-step-5 → completed)
don't have the plugin yet? install it then click "run inline in claude" again.