--- name: scope-lock description: A1 计划范围锁定——引导用户填写项目概述 + 技术栈 + 需求索引,并按模块子目录生成 REQ 卡片骨架(CC 推断 req_id/title/goal/rules/constraints/acceptance;输入/输出 主从表骨架留 `-` 等人工填;依赖表/依赖接口模板写死 `TBD(A3/A5 自动补)` 由后续 skill 回填)。 user-invocable: false allowed-tools: Read Write Edit Grep Skill AskUserQuestion Bash(mkdir *) --- **所有输出必须使用中文。** # scope-lock ## 执行步骤 ### 步骤 0:打印当前位置流程图 向用户展示当前在 A 阶段流程中的位置: ``` ┌──────────────────────────────────────────────────────┐ │ 📋 阶段 A:规划(一次性) │ │ │ │ A0 初始化项目 → ▶ A1 锁范围(REQ 卡片) │ │ ↓ │ │ ⏸ 等你审阅 REQ,重新运行 /plan-start 继续 │ │ ↓ │ │ A2 生成骨架 → A3 生成 DB 设计 → A4 初始化 DB → A5 生成下游文档│ │ ↓ │ │ 规划阶段到此结束 │ └──────────────────────────────────────────────────────┘ ``` ### A. 提示用户填写项目概述并等待 向用户输出: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [scope-lock] 请填写项目概述 📄 文件位置: ./CLAUDE.md 📌 编辑位置: § 🎯 项目概述 请将以下占位符替换为实际值: - 项目名称 - 项目简述 - 目标用户 - 部署方式 改完后回来选择「继续」。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 用 `AskUserQuestion` 询问: - **question**: `项目概述填写完毕了吗?` - 用户选择「继续」→ 用 `Grep` 在 `CLAUDE.md` 搜索 `【人工填写:`(限定 § 🎯 项目概述 节)。命中 → 打印残留行 + 路径,重新弹出同样的 AskUserQuestion;0 命中 → 勾选并进入步骤 B。 - 用户选择「有疑问想先沟通」→ 回答用户问题后,再次弹出同样的 QA。 0 命中后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选: - ` - [ ] 项目概述已填写(CLAUDE.md § 🎯 项目概述)` ### B. 提示用户检查默认技术栈并等待 `docs/04-技术规范.md` 已由 A0 `project-init` 用模板复制(默认技术栈,见 `project-init/templates/docs-04-stack-template.md`)。本步骤让用户检查 / 调整 § 零。 向用户输出: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [scope-lock] 技术栈已保存 📄 文件位置: ./docs/04-技术规范.md(由 A0 模板生成) 📌 编辑位置: § 零、技术栈总览 请检查技术栈表: - 不需要的行直接删除(如纯后端项目删前端行) - 需要替换的技术直接改 - 需要新增的条目直接加行 改完后回来选择「继续」。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 用 `AskUserQuestion` 询问: - **question**: `技术栈检查完毕了吗?` - 用户选择「继续」→ 进入步骤 C。 - 用户选择「有疑问想先沟通」→ 回答用户问题后,再次弹出同样的 QA。 完成后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选: - ` - [ ] 技术栈已确认(docs/04 § 零)` ### C. 提示用户填写需求清单并等待 `docs/01-需求清单/index.md` 已由 `project-init` 写入占位符模板,这里让用户补齐模块清单。 向用户输出: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [scope-lock] 请填写需求清单模块索引 📄 文件位置: ./docs/01-需求清单/index.md 📌 编辑位置: § 模块索引(表格) 请按业务列出所有模块: - 每行一个模块(如 SYS 系统管理 / PUR 采购 / SAL 销售) - 「核心功能点」只需关键词,CC 会拆分为 REQ 卡片骨架(卡片内输入 / 输出的主从表字段由你后续人工填) 改完后回来选择「继续」。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 用 `AskUserQuestion` 询问: - **question**: `需求清单模块索引填写完毕了吗?` - 用户选择「继续」→ 进入步骤 D。 - 用户选择「有疑问想先沟通」→ 回答用户问题后,再次弹出同样的 QA。 完成后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选: - ` - [ ] 需求清单索引已填写(docs/01-需求清单/index.md)` ### D. 生成 REQ 卡片骨架并停下等人工审阅 1. 用 `Grep` 校验 `docs/01-需求清单/index.md` 无 `【人工填写:` 残留;有则回步骤 C。 2. 用 `Read` 读 `index.md` 解析模块索引。 3. 对每个模块: - 基于「核心功能点」推断出 N 个 REQ,每个 REQ 产出六元组 `{req_id, title, goal, rules, constraints, acceptance}`: - `req_id` / `title`:从核心功能点拆分命名(如「用户/角色/权限」→ `REQ-SYS-001 用户管理`、`REQ-SYS-002 角色管理`、`REQ-SYS-003 权限管理`) - `goal`:用一句话展开 `title` - `rules` / `constraints` / `acceptance`:业务语义层面的合理起草,待人工审阅修订 - **不推断输入 / 输出的主从表字段**——模板内保留 `主表 + 从表1` 骨架(每张表表头 + 1 行 `-`),等人工按业务自行复制行 / 增删从表 - 用 `Bash`: `mkdir -p docs/01-需求清单/-` 创建模块目录 - 用 `${CLAUDE_SKILL_DIR}/templates/_module-template.md` 渲染 `_module.md`,填充 `{module_code, module_name, module_brief}`,`Write` 到 `docs/01-需求清单/-/_module.md` - 对每个 REQ:用 `${CLAUDE_SKILL_DIR}/templates/req-card-template.md` 渲染(渲染约定见模板顶部 HTML 注释),替换 6 个占位符,`Write` 到 `docs/01-需求清单/-/.md` 4. 用 `Edit` 在 `docs/08-模块任务管理.md` 勾选(A1 子项 + A1 顶层): - ` - [ ] REQ 卡片骨架已生成(docs/01-需求清单//REQ-*.md,业务内容留待人工填写)` - `- [ ] A1 范围锁定 — scope-lock` 5. 打印停下横幅并**停止**: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [scope-lock] ✅ A1 范围锁定完成 产出: ✓ CLAUDE.md § 🎯 项目概述 ✓ docs/04 § 零 技术栈 ✓ docs/01-需求清单/index.md 模块索引 ✓ docs/01-需求清单//_module.md 模块头 ✓ docs/01-需求清单//REQ-*.md REQ 卡片骨架 ⏸ 现在请你逐张打开 REQ 卡片: - **必填**:输入(主表 + N 从表)、输出(主表 + N 从表) · 每张表先把 `-` 行按实际字段数复制;没有从表就删掉 `从表1` 整段,多于一个就复制为 `从表2 / 从表3 / ...` - **审阅**:目标 / 跨字段规则 / 边界 / 验收(CC 已起草,对照业务校正) - **保留**:依赖表 / 依赖接口 行的 `TBD(A3/A5 自动补)` 不要改,由 A3/A5 自动回填 审阅是 Plan 阶段的关键人工关口,请认真逐张过一遍。 审阅完成后,运行以下命令继续进入 A2: /erp-workflow:plan-start (入口会读取 docs/08 进度,自动派发到 A2 skeleton-gen) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ## 参考 - `CLAUDE.md` § 🎯 项目概述(写入目标) - `docs/04-技术规范.md`(技术栈输出,供 skeleton-gen 读取使用) - `docs/01-需求清单/index.md`(模块索引输入) - `docs/01-需求清单//_module.md`(模块头输出) - `docs/01-需求清单//REQ-*.md`(REQ 卡片骨架输出,A3 db-design-gen / A5 downstream-gen 会回填 TBD 字段) - `${CLAUDE_SKILL_DIR}/templates/req-card-template.md` - `${CLAUDE_SKILL_DIR}/templates/_module-template.md`