Skip to content
Back to skills

Spring Boot Init

ASecurity

Spring Boot / Maven 项目初始化(脚手架)助手——用内置 Maven 父子标准模板,经 scripts/init.mjs 一条命令生成项目骨架(复制模板 / 替换占位符 / 挪包目录 / 模块塑形一体),零网络、完全本地自包含; 禁止从零手写 pom.xml 与主启动类,也不依赖在线初始化器。在以下场景使用:用户要新建 / 初始化 / 搭建 Spring Boot、Maven 项目;用户说"建个 Spring Boot 项目 / 搭脚手架 / 建父子工程 / 多模块 / 微服务骨架 / init 一个 Java 项目";或 agent 正准备从零手写 pom、手动创建目录结构与主启动类时。 默认产物:根 pom(packaging=pom + <modules>)+ 子模块,单模块(只留一个 app 子模块)与多模块 一套模板覆盖;生成前引导式问询四检查点,禁止静默默认。项目已存在后的业务编码、ORM、认证鉴权、 单元测试不适用——由 spring-boot-dev / mybatis-plus-dev / sa-token-dev / java-unit-te...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 22, 2026
ai-agentsjavabashnodespringapi

Works with

  • api

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned October 22, 2026

npx -y skills add BaixuanZhu/skills --skill spring-boot-init --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spring Boot Init?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Spring Boot Init
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/baixuanzhu-spring-boot-init/badge)](https://www.skillsdirectory.com/skills/baixuanzhu-spring-boot-init)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: spring-boot-init
description: >-
  Spring Boot / Maven 项目初始化(脚手架)助手——用内置 Maven 父子标准模板,经 scripts/init.mjs
  一条命令生成项目骨架(复制模板 / 替换占位符 / 挪包目录 / 模块塑形一体),零网络、完全本地自包含;
  禁止从零手写 pom.xml 与主启动类,也不依赖在线初始化器。在以下场景使用:用户要新建 / 初始化 / 搭建
  Spring Boot、Maven 项目;用户说"建个 Spring Boot 项目 / 搭脚手架 / 建父子工程 / 多模块 /
  微服务骨架 / init 一个 Java 项目";或 agent 正准备从零手写 pom、手动创建目录结构与主启动类时。
  默认产物:根 pom(packaging=pom + <modules>)+ 子模块,单模块(只留一个 app 子模块)与多模块
  一套模板覆盖;生成前引导式问询四检查点,禁止静默默认。项目已存在后的业务编码、ORM、认证鉴权、
  单元测试不适用——由 spring-boot-dev / mybatis-plus-dev / sa-token-dev / java-unit-test 承接。
agent_created: true
version: 1.5.1
slug: spring-boot-init
displayName: Spring Boot 项目初始化
---

# Spring Boot 项目初始化(脚手架)

面向"新建 Java 项目"场景的**初始化助手**。核心理念:**不从零手写脚手架——`scripts/init.mjs` 从内置 Maven 父子标准模板一键生成。** 零网络依赖,完全本地自包含。补上 `spring-boot-dev`(只管写代码、不管建项目)的空白。

- **默认产物**:根 pom(`packaging=pom` + `<modules>`)+ 子模块。**单模块项目 = 只保留一个 app 子模块**(`--single`);多模块 = 库模块 + 可执行模块(`--core` / `--app` 命名)。一套模板覆盖全部场景,不分叉。
- **模板** `assets/maven-multimodule/`:常用插件齐备——enforcer(环境门禁)、flatten(`${revision}` CI-friendly 版本)、jacoco(覆盖率)、spotless(格式化)默认激活;failsafe / source / javadoc / deploy 已管理、按需启用。版本全部收敛在根 pom。lombok 为根公共依赖(全局生效);hutool-bom 在根 import(core / json / http 等按模块按需引,`references/02-dependencies.md`);内置阿里云镜像加速(用户级 settings.xml 镜像优先生效)。
- **初始依赖**:按项目类型问询决定(`references/02-dependencies.md`),不默认堆。

## 第 0 步:现状探测(收到任务先做)

| 探测项 | 方法 | 判定 |
|---|---|---|
| 是否已有项目 | 当前目录是否已有 `pom.xml` / `build.gradle` | 已有 Maven 工程 → **本技能不适用**(加模块 / 加依赖直接参照工程内现有模块的结构即可);空目录 → 整体初始化 |
| 子模块划分 | 预判(单服务 → 单模块形态;分层 / 多可部署单元 → 多模块),最终以 C1 问询为准 | 决定 `<modules>` 数量与命名(不预设 common/web 等固定划分) |
| Boot / JDK 版本 | 用户指定;否则按 C2 表默认 | 作为 init.mjs 的 `--boot` / `--jdk` 参数 |

## 何时使用本技能

| 信号 | 判定 |
|------|------|
| 用户说"新建 / 初始化 / 搭建 Spring Boot、Maven 项目""建父子工程""多模块""微服务骨架""init 一个 Java 项目" | 激活 |
| agent 正准备从零手写 `pom.xml` / 目录结构 / 主启动类 | 激活(改为 init.mjs 生成) |
| 要给新项目定初始依赖 | 激活 → `references/02-dependencies.md` |
| 项目已存在,要写 Controller / Service / 事务 / 配置 | **不适用** → spring-boot-dev |
| ORM CRUD / Mapper / 分页 | **不适用** → mybatis-plus-dev |
| 认证 / 鉴权 / token | **不适用** → sa-token-dev |
| 纯 Java 语言层(判空 / 集合 / 并发) | **不适用** → java-coding-guide-pro |
| 单元测试 | **不适用** → java-unit-test |
| 给已有工程加子模块 / 加依赖 | **不适用** → 参照工程内现有模块结构即可,无需本技能 |
| Gradle / 其他构建工具 | 首版不覆盖 → 告知用户本技能只出 Maven 骨架 |

> **检查点**:判定为「不适用」→ 告知用户该任务属哪个技能,建议切换。

## 生成流程(唯一路径:init.mjs 生成)

1. **第 0 步探测**:空目录?单模块还是多模块?Boot / JDK 版本?
2. **问询(必做,引导式)**:按「决策检查点」**一轮问完** C1~C4,每项附默认推荐;用户逐项答复或一句"都按推荐"后才进入下一步。**禁止不问就静默采用默认。**
3. **生成骨架**:`node <技能目录>/scripts/init.mjs <目标目录> --group <g> --artifact <a> --boot <b> --jdk <j> [--core 名 --app 名 | --single]`——复制模板、替换占位符、挪包目录、模块塑形一步完成(参数与内部步骤见 `references/01-template-usage.md`)。
4. **初始依赖**:按 `references/02-dependencies.md` 组合表往对应模块加;C4 勾选的可选插件(failsafe / source / javadoc)在模块内裸声明。
5. **自检交付**:`node <技能目录>/scripts/self-check.mjs <项目目录> --validate`(六查,明细见「自检与交付」;退出码 0 才算完成)。

## 决策检查点(生成前必须问询——引导式,禁止静默默认)

**一轮问完**(示例话术,按上下文裁剪;用户逐项答复或一句"都按推荐"即完成):

> 初始化 Spring Boot 项目前确认 4 件事:
> ① 工程坐标 + 模块划分:包名和项目名(如 org.acme.order / order-service)?单模块(只一个 app)还是多模块(core + app…各叫什么)?
> ② 版本:Boot 3.5.x + JDK 21(推荐)/ 存量 2.7.x / 4.x(JDK 25 优先),选哪个?
> ③ 初始依赖:什么类型的服务?(Web API / 全栈 / 定时批处理 / 消息 / 数据访问)
> ④ 可选插件:要集成测试(failsafe)或发布库模块(source / javadoc)吗?默认都不启用

| # | 必问 | 选项差异 | 默认推荐(用户明示"按推荐"才用) |
|---|------|---------|---------|
| C1 | 工程坐标 + 模块划分:包名(groupId)/ 项目名(artifactId)?单模块还是多模块?各模块叫什么? | **单模块**:父子结构只留 1 个 app 子模块<br>**多模块**:库模块 + 可执行模块按业务命名 | 项目名可取目录名;**包名无安全默认**——按组织域名反转 + 项目名(如 `org.acme.order`)给建议、用户拍板;明显单服务 → 单模块形态 |
| C2 | Boot / JDK? | 见下表 | 3.5.x 最新 + JDK 21 |
| C3 | 项目类型(初始依赖)? | 按 `references/02-dependencies.md` 类型组合表 | 空骨架(web + test 基线) |
| C4 | 可选构建插件? | failsafe(集成测试)/ source + javadoc(发布库模块),模块内裸声明即启用 | 都不启用 |

**Boot ↔ JDK 兼容表**(口径与 spring-boot-dev 一致):

| Boot 线 | JDK | 命名空间 | 定位 |
|---|---|---|---|
| 2.7.x | 8 / 11 | `javax.*` | 仅存量维护,新项目不选 |
| **3.5.x** | 17 / 21 | `jakarta.*` | **默认推荐**(3.x 末线) |
| 4.x | 25 优先(21 可,最低 17) | `jakarta.*` | 已 GA,需用户明示才用 |

## 核心强约束(Agent 必须遵守)

1. **一律经 `scripts/init.mjs` 生成**:禁止从零手写 `pom.xml` / 主类 / 目录结构,也不得手跑 sed / mv 复刻脚本步骤。
2. **聚合规则**:根 pom 必须 `packaging=pom` + `<modules>` 列全子模块;子模块 `<parent>` 指根(GAV 三行一致);`<modules>` 与实际目录名一一对应。
3. **版本收敛**:插件版本只在根 `pluginManagement`,依赖版本只在根 `dependencyManagement`(spring-boot-dependencies BOM import);工程版本统一 `${revision}`(flatten 在 install/deploy 时解析,发布/改版用 `-Drevision=1.0.0` 一次覆盖全工程);子模块一律不带版本。
4. **占位符零残留**:`init.mjs` 生成时终检 + `self-check.mjs` 复核(含 `com.example` 包路径),任一报残留即失败。
5. **repackage 只归可执行模块**:`spring-boot-maven-plugin` 只在 app 模块启用;库模块保持普通 jar。
6. **依赖必须真实**:starter 坐标只从 `references/02-dependencies.md` 组合表取;表外依赖先查 Maven Central 确认存在,禁止凭记忆拼 `spring-boot-starter-xxx`。
7. **JDK ↔ Boot 匹配**:按 C2 兼容表选,禁止越线组合(如 Boot 4.x 配 JDK 11)。

## 自检与交付

```bash
node <技能目录>/scripts/self-check.mjs <项目目录> --validate
```

脚本六查:①`{{...}}` 占位符零残留;②`com.example` 包路径零残留;③模块目录与根 `<modules>` 一一对应(防孤儿 / 缺失);④可执行模块存在且含主类(`static void main`);⑤package 声明与目录路径一致;⑥`mvn -q validate`(Windows 下自动调 `mvn.cmd`)。零依赖、跨平台,退出码 0 = 通过。

- 通过后交付:**只产出骨架**;业务编码指引用户转 `spring-boot-dev`,需要项目说明书(AGENTS.md)转 `repo-init`。

Files in this skill

  • SKILL.md8.8 KB
  • assets/maven-multimodule/gitignore.txt73 B
  • assets/maven-multimodule/pom.xml11.6 KB
  • assets/maven-multimodule/sample-app/pom.xml1.5 KB
  • assets/maven-multimodule/sample-app/src/main/java/com/example/Application.java303 B
  • assets/maven-multimodule/sample-app/src/main/resources/application.yml71 B
  • assets/maven-multimodule/sample-core/pom.xml619 B
  • references/01-template-usage.md7.6 KB
  • references/02-dependencies.md3 KB
  • scripts/init.mjs12.6 KB
  • scripts/self-check.mjs8.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.