Skill: wed840313/wenwei-cosmic (version 1.0.0)

--- 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）


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)