| name | project-spark |
|---|---|
| description | 快速新建项目骨架 Skill。通过问答或配置单方式,从一句话项目描述出发,搭建符合 AI 团队协作规范(SDD 六阶段 + AGENTS.md + 推荐 Skills/MCP)的项目根目录结构,并可选自动 git clone 芋道后端/前端并批量改名。用于快速新建 Spring Boot 多模块项目时,快速拉齐 AI 协作上下文。当用户说“初始化项目”、“新建项目骨架”、“/project-spark”、“搭建新项目”、“create new project scaffold”、“项目脚手架”时触发。触发后 **MUST** 以模式选择问答(B 引导式 / C 配置单式)作为第一响应;即使上下文已包含调研/汇报/PRD 等素材,也 **MUST NOT** 直接推导字段、生成配置单或调用任何脚本——素材只能作为问答的候选建议来源。 |
一条 Skill 解决新项目第一天的 3 件事:根目录编排 + 后端/前端骨架获取(可选) + AI 协作规则注入。
不维护 Java 代码模板,复用开源芋道脚手架 + git clone + 批量改名。
本 Skill 按行为契约编写,适用于 Claude Code / Qoder / Trae / Codex CLI / Cursor 等多家智能体,不绑定任何具体厂商的工具名。核心术语:
| 术语 | 含义(实现不拘) | 各智能体参考映射 |
|---|---|---|
| 结构化问答 | 阻塞式、多选项、必须等用户明确回复才能继续的交互 | Claude Code / Qoder:AskUserQuestion 工具;Codex CLI:交互式确认提示;Trae:用户消息确认回合;其他:向用户提出多选问题并阻塞等待明确回复 |
| 逐字段显式确认 | 每个字段都要用户亲自选定"保留/修改/接受默认",禁止静默通过 | 工具实现可能有差异,但最终效果相同:用户看到每个字段并做出明确选择 |
| 阶段门 | 流程硬门禁;未完成前一步 MUST NOT 进入下一步 | 不依赖工具——由智能体严格执行 SKILL.md 的顺序约束 |
⚠️ MUST / MUST NOT / SHOULD 采用 RFC 2119 语义,不可绕过。无论哪家智能体执行本 Skill,违反 MUST/MUST NOT 都视为 Skill 执行失败,必须回滚产出重新开始。
🔧 下文出现的
结构化问答/逐字段显式确认均指这里的行为契约,请各智能体自行映射到自己的工具名。
用户输入形如:
/project-spark 数字商城系统,面向会员和运营后台,包含商品、订单、营销、支付
/project-spark --mode=guide 数字商城系统
/project-spark --mode=config 数字商城系统
若用户未指定 --mode,默认询问选择哪种模式。
第 1 轮 身份字段 (3 问) → 第 2 轮 架构形态 (4 问) → 第 3 轮 AI 协作 (3 问)
↓
生成 project-init.json 配置单给用户确认
↓
确认 → 执行生成
根据描述给默认值建议 → 生成 project-init.json 草稿(仅在会话展示,不落盘)
→ MUST 发起结构化问答让用户逐字段审阅/修改
→ 全部字段确认 OK 后,才写入 <nameEn>-docs/0.0项目会话记录/project-init.json
→ 再执行第 5 步渲染
⚠️ "智能填默认值" ≠ "跳过用户确认"。即使上下文完整,也 MUST 让用户逐字段 review;任何未经用户显式确认的字段 MUST NOT 直接落盘,MUST NOT 触发任何脚本。
两种模式最终都产出 project-init.json 配置单,落盘到项目根目录的 <英文名>-docs/0.0项目会话记录/project-init.json,供审计与复现。
⛔ 阶段门(硬门禁 · 本 Skill 最重要的行为红线)
- 未完成 第 2 步(用户已在 B/C 之间做出选择)MUST NOT 进入第 3 步。
- 未完成 第 3 步(所有字段每一项都已由用户显式敲定或显式确认默认值)MUST NOT 进入第 4 步。
- 未完成 第 4 步(用户对渲染出的
project-init.json显式点"确认生成")MUST NOT 调用render_root.py,MUST NOT 在任何目录写入任何*init*.json文件。跨门的常见诱惑:上下文已含调研/汇报/PRD 文档 → 智能体自动推导字段 → 偷跑脚本。这是最严重的 Skill 规范违反,见第六节红线 8。素材的正确用法是:把它的信息放进结构化问答的候选选项里让用户挑,而不是替用户决定。
从用户输入提取:
- 项目中文名(从描述抽)
- 业务领域关键词(招投标 / 订单 / 会员 / 合同…)
- 特殊需求(多租户 / 对公网 / 移动端…)
若描述少于 10 字或信息不足,必须追问 2-3 个澄清问题(业务场景、主要角色、是否对公网)。
若用户未指定 --mode,MUST 发起结构化问答让用户二选一(未得到用户回复 MUST NOT 进入第 3 步):
- B 引导式(推荐新人):3 轮问答
- C 配置单式(老手):一次性出 JSON 草稿 + 逐字段确认
字段定义详见 references/field-dict.md。核心 10 个字段:
| 组 | 字段 | 来源 |
|---|---|---|
| 身份 | nameZh / nameEn / groupId / artifactPrefix / javaPackage / version | 第 1 轮 |
| 架构 | backend.action / backend.keepModules / frontend.admin / frontend.member | 第 2 轮 |
| AI | aiCollab.agents / aiCollab.presetSkills / aiCollab.presetMcp / aiCollab.rulesSource | 第 3 轮 |
命名规则严格校验(见 references/naming-rules.md):
nameEn:小写字母 + 数字,3-20 字符,不含中划线下划线groupId:符合 Maven 规范com.xxx.xxxjavaPackage:不使用保留字,不超过 5 级- 校验失败必须重新输入,不能静默修正
把收集到的字段渲染为 project-init.json(MUST 使用此固定命名,禁止 .xxx-init.json / init.json / <nameEn>-init.json 等任何变体——这类变体会绕开下一步的 render_root.py 入口校验,属于红线 8 违规),先在会话里展示完整 JSON 预览(不落盘),然后 MUST 发起结构化问答让用户确认:
- 确认生成 → 落盘到
<nameEn>-docs/0.0项目会话记录/project-init.json→ 进入第 5 步 - 修改某字段 → 回到第 3 步
- 取消 → 退出 Skill
未得到用户"确认生成"的回复 MUST NOT 调用
render_root.py;MUST NOT 在用户确认前提前在任何目录落盘任何*init*.json文件。
调用 scripts/render_root.py,把 templates/ 下的模板按 project-init.json 占位符替换,生成:
<location>/<nameEn>/
├── AGENTS.md ← 由 agents-md-snippets 拼装
├── CLAUDE.md ← 从 rule/CLAUDE.md 继承 + 项目定制
├── README.md ← 项目启动指引
├── .gitignore
├── .claude/settings.local.json ← 会话目录
└── <nameEn>-docs/ ← SDD 六阶段骨架 + LLM-Wiki 知识库
├── 0.0项目会话记录/
│ ├── project-init.json ← 配置单归档
│ └── 会话记录.txt ← 种子记录
├── 1.0产品调研/
│ ├── README.md
│ ├── {{nameZh}}-立项书.md ← 立项方案(完整模板)
│ ├── {{nameZh}}-计划.md ← AI 辅助开发计划(12 个 task)
│ ├── {{nameZh}}-PRD.md ← 需求文档(仅一/二级骨架)
│ ├── 参考材料/ ← 放客户提供的原始资料
│ └── UI设计描述/ ← 放 UI 设计描述文档
├── 2.0需求分析/README.md
├── 3.0测试案例/README.md
├── 4.0需求实施/README.md
├── 5.0功能测试/README.md
├── 6.0项目管理/README.md
├── README.md ← 三层架构总览(Raw/LLM-Wiki/views)
└── LLM-Wiki/ ← AI 唯一可写区(仅对项目文档生效)
├── AGENTS.md ← 知识库编译器行为契约
├── SCHEMA.md ← 5 类页面模板
├── README.md / index.md / overview.md
├── summaries/ concepts/ synthesis/ queries/ views/
└── entities/{modules,services,tables,apis,roles}/
若 backend.action === "clone":
- 在
<location>/<nameEn>/下执行git clone --depth=1 <backend.source>到临时目录 - 调用
scripts/clone_and_rename.py批量替换:cn.iocoder.yudao→<javaPackage>yudao-→<nameEn>-(目录名 + pom.xml)cn.iocoder.boot→<groupId>
- 按
backend.keepModules删掉不要的*-module-* - 删除临时
.git目录
若 backend.action === "skip":只在 README 中写上推荐命令供用户手工执行。
frontend.admin.action === "clone":克隆 admin 前端 → 改package.json的namefrontend.member.action === "clone":同上,目录命名<nameEn>-ui-member
打印:
- ✅ 生成物清单(具体路径)
- 📋 下一步命令(mvn clean install / pnpm install & run dev / GitNexus 索引)
- 🎯 推荐的下一条 Skill(例如
/read-drawio开始产品调研) ⚠️ 手动 TODO 清单(数据库创建、Nacos 配置等无法自动化的步骤)
项目 AGENTS.md 不是从空白生成,而是按 3 层拼装:
┌─ 第 1 层 · 全局继承 ─────────────────────┐
│ 从 workspace 的 rule/AGENTS.md 引用 │
│ (任务启动前置流程、通用开发规范等) │
└─────────────────────────────────────────┘
+
┌─ 第 2 层 · 团队规范条款 ─────────────────┐
│ 按 aiCollab.presetSkills / presetMcp / docs 勾选情况 │
│ 从 references/agents-md-snippets/ 注入 │
│ - core-sdd.md (必注入) │
│ - progressive-disclosure.md (必注入) │
│ - memory-bootstrap.md (必注入) │
│ - gitnexus-workflow.md (若选 GitNexus MCP · 代码层) │
│ - llm-wiki.md (若 docs.llmWiki=true · 文档层) │
│ - testing-guardrail.md (若选 api-auto-test) │
└─────────────────────────────────────────┘
+
┌─ 第 3 层 · 项目专属规则 ──────────────────┐
│ 从问答动态生成: │
│ - Java 包路径 / artifactId / docs 目录 │
│ - 数据库类型 / 缓存方案 │
│ - 推荐 Skills 清单 │
└─────────────────────────────────────────┘
这是本 Skill 区别于普通脚手架生成器的核心价值:每次初始化都把团队的 AI 协作经验自动注入新项目,实现"分享会听一次 → 每个项目 AI 天天遵循"。
执行完毕后用户目录应为:
<your-workspace>/<nameEn>/
├── AGENTS.md ✅ 必有
├── CLAUDE.md ✅ 必有
├── README.md ✅ 必有
├── .gitignore ✅ 必有
├── .claude/ ✅ 必有
├── <nameEn>-docs/ ✅ 必有(6 阶段目录 + 会话记录 + LLM-Wiki)
│ └── 1.0产品调研/ ✅ 内含:README.md(产出物索引)
│ + <nameZh>-立项书.md / <nameZh>-计划.md / <nameZh>-PRD.md
│ + UI设计描述/(00-全局设计规范.md / 10-设计稿页面清单.md)
│ + 参考材料/(README.md)
├── <nameEn>-service/ ✅ 必有(含 .gitkeep + README;skip 时为占位目录等待手工 clone)
├── <nameEn>-ui-admin/ ✅ 必有(同上)
└── <nameEn>-ui-member/ ✅ 必有(同上)
说一套做一套检查点(第 5 步渲染完后 MUST 自检):
render_root.py日志里必须出现------ 创建代码占位目录 ------一节 + 3 个[OK] <nameEn>-service/、-ui-admin/、-ui-member/行;若无此节,说明脚本版本过旧,必须刷新 Skill 后重跑。1.0产品调研/下实际磁盘文件数 = README.md(已渲染)+ 3 个<nameZh>-*.md+UI设计描述/+参考材料/共 6 项;缺任一项视为渲染失败。- 3 个代码占位目录即使 action=skip 也必须建(含
.gitkeep+README.md说明跳过理由与手工 clone 命令);缺失视为渲染失败。
- 命名冲突检测:执行前
list_dir检查<location>/<nameEn>/是否已存在,存在则报错,要用户确认覆盖或换名 - Windows 路径:跨平台路径必须用
/或pathlib.Path,不能硬编码\\ - PowerShell 命令:所有 shell 命令示例用
;而不是&& - git clone 失败兜底:网络失败时提示用户手动 clone 并在
project-init.json标记clone: pending - 改名的原子性:
clone_and_rename.py先改临时目录,全部成功后再重命名到最终位置;中途失败就整个回滚 - 敏感字段校验:Java 包路径不能用
java、system等保留字 - Skill 自身执行日志:每一步打印到控制台,用户可以随时 Ctrl+C 中断
- 问答纪律红线(Skill 最核心的行为约束):禁止智能体代替用户填写任何身份/架构/AI 字段。
- 即使上下文已含调研文档、汇报文档、PRD 等素材,它们也只能作为问答的候选选项来源——放进结构化问答的选项里让用户挑,而不是替用户直接决定。
- MUST NOT 跳过第 2/3/4 步任一问答直接生成配置单。
- MUST NOT 用
.xxx-init.json等自制文件名绕开第 4 步确认门(render_root.py入口会拒绝非project-init.json的文件名,除非显式--force)。 - MUST NOT 在未通过第三节阶段门的情况下调用
render_root.py或写入目标项目目录。 - 违反任何一条都视为本 Skill 执行失败,必须回滚产出并重新从第 2 步开始。
| 文件 | 作用 | 何时加载 |
|---|---|---|
references/field-dict.md |
10 个核心字段定义与默认值 | 第 3 步收集字段前 |
references/naming-rules.md |
命名规则与校验正则 | 校验时 |
references/yudao-source-list.md |
芋道后端/前端 git 源清单 | 第 6/7 步拉取前 |
references/agents-md-snippets/*.md |
6 个 AGENTS.md 可注入条款(含 llm-wiki) | 第 5 步拼装 AGENTS.md |
templates/*.tpl |
根目录级模板(占位符) | 第 5 步渲染 |
templates/docs-scaffold/ |
SDD 六阶段 + docs 根 README.tpl | 第 5 步渲染 |
templates/docs-scaffold/LLM-Wiki/ |
知识库编译器骨架(仅对项目文档生效) | 第 5 步渲染(按 docs.llmWiki) |
scripts/render_root.py |
渲染根目录模板 | 第 5 步执行 |
scripts/clone_and_rename.py |
git clone + 批量改名 | 第 6 步执行 |
scripts/validate.py |
字段合法性校验 | 第 3 步校验 |
- v0.4(当前):根目录模板 + git clone + AGENTS.md 条款注入 + LLM-Wiki 文档层知识库(完整)
- 后续:v0.5 支持自定义条款库、v0.6 支持 presetMcp 自动注册