SKILL.md 10.6 KB

name: init description: 计划第 1 段——项目初始化 + 范围锁定。复制 CLAUDE.md/docs(01/04/08) 模板、依赖检查、git init,引导项目概述+技术栈+需求索引,生成 REQ 卡片骨架,停下等人工审阅 REQ。 user-invocable: false

allowed-tools: Glob Read Edit Grep Skill AskUserQuestion Bash(mkdir ) Bash(cp *) Bash(sed *) Bash(bash *) Bash(cat *) Bash(git init) Bash(command -v *) Bash(uname *) Bash(brew *) Bash(apt *) Bash(apt-get *) Bash(yum *) Bash(apk *) Bash(export PATH=) Bash(echo *)

所有输出必须使用中文。

你负责完成计划第 ① 段:项目初始化 + 范围锁定。

执行步骤

步骤 0:打印计划流程图

Bash 向用户展示整体流程图(▶ 位于"计划 ①"):

cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow.txt" 2>/dev/null || true

注:flow.txt 由 Task 7 创建,当前若文件不存在,命令静默忽略,不影响后续执行。

打印分发横幅:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [init] 计划 ① 初始化 + 范围锁定
 ▶ 当前位置:计划 ① / 共 ③
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

A. 幂等复制模板文件

Bash 一次性完成。cp -n 表示"不覆盖已存在的文件":

mkdir -p docs/01-需求清单
cp -n "${CLAUDE_SKILL_DIR}/templates/CLAUDE-template.md" CLAUDE.md
cp -n "${CLAUDE_SKILL_DIR}/templates/docs-01-index-template.md" docs/01-需求清单/index.md
cp -n "${CLAUDE_SKILL_DIR}/templates/docs-04-stack-template.md" docs/04-技术规范.md
cp -n "${CLAUDE_SKILL_DIR}/templates/docs-08-initial-template.md" docs/08-模块任务管理.md

完成后,用 Editdocs/08-模块任务管理.md 中勾选:

  • - [ ] 项目文件骨架已创建(CLAUDE.md + docs/01 index + docs/04 + docs/08)

B. 依赖检查 + 自动安装(命令行工具)

git、mysql 两个工具依次执行以下流程:

  1. 如果缺失,尝试自动安装。
  2. 如果检测到不在 PATH,尝试添加进 PATH,并加载。

全部通过后打印单行汇总再进入步骤 C:

[init] 依赖检查: git ✓  mysql ✓

完成后,用 Editdocs/08-模块任务管理.md 中勾选:

  • - [ ] 依赖检查通过(git / mysql)

C. 初始化 Git(如尚未初始化)

Glob 检查 .git/ 目录是否存在。

  • 不存在 → 用 Bash 执行 git init
  • 已存在 → 跳过。

完成后,用 Editdocs/08-模块任务管理.md 中勾选:

  • - [ ] Git 已初始化

打印完成横幅:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [init] 项目初始化完成

 已创建:
   ✓ CLAUDE.md(从插件模板复制)
   ✓ docs/01-需求清单/index.md(待人工填写模块索引)
   ✓ docs/04-技术规范.md(默认技术栈,步骤 E 让用户确认)
   ✓ docs/08-模块任务管理.md(全流程进度跟踪)
 已勾选:初始化子项 3 项

 下一步:引导项目概述 + 技术栈 + 需求索引 + 生成 REQ 卡片
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

D. 提示用户填写项目概述并等待

向用户输出:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [init] 请填写项目概述

 📄 文件位置: ./CLAUDE.md
 📌 编辑位置: § 🎯 项目概述

 请将以下占位符替换为实际值:
   - 项目名称
   - 项目简述
   - 目标用户
   - 部署方式
 改完后回来选择「继续」。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AskUserQuestion 询问:

  • question: 项目概述填写完毕了吗?
    • 用户选择「继续」→ 用 GrepCLAUDE.md 搜索 【人工填写:(限定 § 🎯 项目概述 节)。命中 → 打印残留行 + 路径,重新弹出同样的 AskUserQuestion;0 命中 → 勾选并进入步骤 E。
    • 用户选择「有疑问想先沟通」→ 回答用户问题后,再次弹出同样的 QA。

0 命中后,用 Editdocs/08-模块任务管理.md 中勾选:

  • - [ ] 项目概述已填写(CLAUDE.md § 🎯 项目概述)

E. 提示用户检查默认技术栈并等待

docs/04-技术规范.md 已由步骤 A 用模板复制(默认技术栈)。本步骤让用户检查 / 调整 § 零。

向用户输出:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [init] 技术栈已保存

 📄 文件位置: ./docs/04-技术规范.md(由模板生成)
 📌 编辑位置: § 零、技术栈总览

 请检查技术栈表:
   - 不需要的行直接删除(如纯后端项目删前端行)
   - 需要替换的技术直接改
   - 需要新增的条目直接加行
 改完后回来选择「继续」。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AskUserQuestion 询问:

  • question: 技术栈检查完毕了吗?
    • 用户选择「继续」→ 进入步骤 F。
    • 用户选择「有疑问想先沟通」→ 回答用户问题后,再次弹出同样的 QA。

完成后,用 Editdocs/08-模块任务管理.md 中勾选:

  • - [ ] 技术栈已确认(docs/04 § 零)

F. 提示用户填写需求清单并等待

docs/01-需求清单/index.md 已由步骤 A 写入占位符模板,这里让用户补齐模块清单。

向用户输出:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [init] 请填写需求清单模块索引

 📄 文件位置: ./docs/01-需求清单/index.md
 📌 编辑位置: § 模块索引(表格)

 请按业务列出所有模块:
   - 每行一个模块(如 SYS 系统管理 / PUR 采购 / SAL 销售)
   - 「核心功能点」只需关键词,CC 会拆分为 REQ 卡片
 改完后回来选择「继续」。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AskUserQuestion 询问:

  • question: 需求清单模块索引填写完毕了吗?
    • 用户选择「继续」→ 进入步骤 G。
    • 用户选择「有疑问想先沟通」→ 回答用户问题后,再次弹出同样的 QA。

完成后,用 Editdocs/08-模块任务管理.md 中勾选:

  • - [ ] 需求清单索引已填写(docs/01-需求清单/index.md)

G. 生成 REQ 卡片骨架并停下等人工审阅

  1. Grep 校验 docs/01-需求清单/index.md【人工填写: 残留;有则回步骤 F。
  2. Readindex.md 解析模块索引。
  3. 单次 Bash 写入所有文件(替代 N×9 次 Edit):
  • 每模块推断:三元组 {module_code, module_name, module_brief} + N 个 REQ 的六元组 {req_id, title, goal, rules, constraints, acceptance}req_id/title 从核心功能点拆分;goal 展开 titlerules/constraints/acceptance 起草业务语义。不推断输入 / 输出(模板原样保留示例)。
  • 单次 Bash:调 ${CLAUDE_SKILL_DIR}/scripts/render.sh 落盘所有文件(脚本内部完成模板读取 + 占位符替换 + HTML 注释剥离)。下面是调用形态示例,<MOD> / <模块名> / <REQ-MOD-NNN> 等尖括号位置 CC 按 index.md 实际值替换:

     R="${CLAUDE_SKILL_DIR}/scripts/render.sh"
     # 每个模块:mkdir + 1 个 render module + N 个 render req(每 REQ 一行)
     mkdir -p "docs/01-需求清单/<MOD>-<模块名>"
     bash "$R" module "docs/01-需求清单/<MOD>-<模块名>/_module.md" "<MOD>" "<模块名>" "<module_brief>"
     bash "$R" req    "docs/01-需求清单/<MOD>-<模块名>/<REQ-MOD-NNN>.md" "<REQ-MOD-NNN>" "<title>" "<goal>" "<rules>" "<constraints>" "<acceptance>"
    
  • 兜底:值含字面 $xxx}} 的 REQ 单独走 cp + Edit。

  1. Editdocs/08-模块任务管理.md 勾选(计划 ① 子项 + ① 顶层):

    • - [ ] REQ 卡片骨架已生成(docs/01-需求清单/<module>/REQ-*.md)
    • - [ ] 计划 ① 初始化 + 范围锁定 — init
  2. 打印停下横幅并停止,不自动派发 design:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [init] ✅ 计划 ① 完成

 产出:
   ✓ CLAUDE.md § 🎯 项目概述
   ✓ docs/04 § 零 技术栈
   ✓ docs/01-需求清单/index.md 模块索引
   ✓ docs/01-需求清单/<module>/_module.md 模块头
   ✓ docs/01-需求清单/<module>/REQ-*.md REQ 卡片骨架

 ⏸ 现在请你逐张打开 REQ 卡片:
   - **必改**:输入 / 输出 两段
     · `表1` / `表2` 是模板示例,按本 REQ 业务**改字段 / 增删行 / 增删整张表**
   - **审阅**:目标 / 跨字段规则 / 边界 / 验收(已起草,对照业务校正)
   - **保留**:`TBD` 不要改,由之后流程自动回填

 审阅完成后,运行以下命令进入计划 ②:
   /erp-workflow:plan-start

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

STOP:此处是人工审阅 REQ 的闸门。停止执行,等待用户运行 /erp-workflow:plan-start 后由 plan-start 派发 design。

参考

  • ${CLAUDE_SKILL_DIR}/templates/CLAUDE-template.md(项目级 CLAUDE.md 模板)
  • ${CLAUDE_SKILL_DIR}/templates/docs-01-index-template.md(需求索引初稿)
  • ${CLAUDE_SKILL_DIR}/templates/docs-04-stack-template.md(默认技术栈)
  • ${CLAUDE_SKILL_DIR}/templates/docs-08-initial-template.md(计划阶段进度初始化)
  • ${CLAUDE_SKILL_DIR}/templates/req-card-template.md(REQ 卡片模板)
  • ${CLAUDE_SKILL_DIR}/templates/_module-template.md(模块头模板)
  • ${CLAUDE_SKILL_DIR}/scripts/render.sh(步骤 G 渲染助手,dispatch module / req 两种模式)
  • 下游:人工审阅 REQ 后运行 /erp-workflow:plan-start,由 plan-start 派发 design(计划 ②)