
Create Spring Boot Kotlin Project
Spin up a reactive Spring Boot Kotlin API skeleton with Gradle, Docker, and common data-store starters from start.spring.io in one agent session.
Overview
Create Spring Boot Kotlin Project is an agent skill for the Build phase that downloads and unpacks a Spring Initializr Gradle Kotlin template with reactive WebFlux and data dependencies.
Install
npx skills add https://github.com/github/awesome-copilot --skill create-spring-boot-kotlin-projectWhat is this skill?
- Checks Java 21 via terminal before generating the project
- Downloads start.spring.io starter.zip with configurable artifactId, packageName, and bootVersion 3.4.5
- Bundles Gradle Kotlin, WebFlux, R2DBC PostgreSQL, reactive Redis/Mongo, validation, cache, and Testcontainers
- Documents Docker and Docker Compose as required host prerequisites
- Unzips into a named folder and removes the zip after extraction
- Spring Boot bootVersion default 3.4.5
- Java version pinned to 21
- 10+ start.spring.io dependencies in the template curl
Adoption & trust: 8.5k installs on skills.sh; 34.6k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want a consistent Spring Boot Kotlin backend starter but keep re-selecting dependencies and versions in the browser.
Who is it for?
Solo builders bootstrapping a reactive Java 21 API with Docker-backed local dependencies who prefer scripted Initializr over manual UI clicks.
Skip if: Teams that need an existing monorepo module, non-Kotlin Spring MVC-only stacks, or environments without Java 21 and Docker installed.
When should I use this skill?
You need a new Spring Boot Kotlin Gradle project with reactive data stores and have Java 21 plus Docker available.
What do I get? / Deliverables
You get an unzipped Gradle Kotlin project tree with documented customization hooks for name and Spring Boot version, ready for your agent to implement features.
- Unzipped Gradle Kotlin Spring Boot project directory
- starter.zip removed after extraction
- Documented artifactId, packageName, and bootVersion override points
Recommended Skills
Journey fit
How it compares
Use instead of one-off chat requests to “create Spring Boot”—this skill fixes Initializr parameters and shell steps to a repeatable recipe.
Common Questions / FAQ
Who is create-spring-boot-kotlin-project for?
Indie and solo backend developers using Claude Code, Cursor, or Codex who want a standardized Spring Boot 3 Kotlin Gradle skeleton with reactive starters.
When should I use create-spring-boot-kotlin-project?
Use it in the Build phase when starting a new API service, after Validate scope is set and before you wire business logic or deploy pipelines.
Is create-spring-boot-kotlin-project safe to install?
It runs shell commands (curl, unzip) and pulls templates from start.spring.io; review the Security Audits panel on this Prism page and inspect generated files before committing.
SKILL.md
READMESKILL.md - Create Spring Boot Kotlin Project
# Create Spring Boot Kotlin project prompt - Please make sure you have the following software installed on your system: - Java 21 - Docker - Docker Compose - If you need to custom the project name, please change the `artifactId` and the `packageName` in [download-spring-boot-project-template](#download-spring-boot-project-template) - If you need to update the Spring Boot version, please change the `bootVersion` in [download-spring-boot-project-template](#download-spring-boot-project-template) ## Check Java version - Run following command in terminal and check the version of Java ```shell java -version ``` ## Download Spring Boot project template - Run following command in terminal to download a Spring Boot project template ```shell curl https://start.spring.io/starter.zip \ -d artifactId=${input:projectName:demo-kotlin} \ -d bootVersion=3.4.5 \ -d dependencies=configuration-processor,webflux,data-r2dbc,postgresql,data-redis-reactive,data-mongodb-reactive,validation,cache,testcontainers \ -d javaVersion=21 \ -d language=kotlin \ -d packageName=com.example \ -d packaging=jar \ -d type=gradle-project-kotlin \ -o starter.zip ``` ## Unzip the downloaded file - Run following command in terminal to unzip the downloaded file ```shell unzip starter.zip -d ./${input:projectName:demo-kotlin} ``` ## Remove the downloaded zip file - Run following command in terminal to delete the downloaded zip file ```shell rm -f starter.zip ``` ## Unzip the downloaded file - Run following command in terminal to unzip the downloaded file ```shell unzip starter.zip -d ./${input:projectName:demo-kotlin} ``` ## Add additional dependencies - Insert `springdoc-openapi-starter-webmvc-ui` and `archunit-junit5` dependency into `build.gradle.kts` file ```gradle.kts dependencies { implementation("org.springdoc:springdoc-openapi-starter-webflux-ui:2.8.6") testImplementation("com.tngtech.archunit:archunit-junit5:1.2.1") } ``` - Insert SpringDoc configurations into `application.properties` file ```properties # SpringDoc configurations springdoc.swagger-ui.doc-expansion=none springdoc.swagger-ui.operations-sorter=alpha springdoc.swagger-ui.tags-sorter=alpha ``` - Insert Redis configurations into `application.properties` file ```properties # Redis configurations spring.data.redis.host=localhost spring.data.redis.port=6379 spring.data.redis.password=rootroot ``` - Insert R2DBC configurations into `application.properties` file ```properties # R2DBC configurations spring.r2dbc.url=r2dbc:postgresql://localhost:5432/postgres spring.r2dbc.username=postgres spring.r2dbc.password=rootroot spring.sql.init.mode=always spring.sql.init.platform=postgres spring.sql.init.continue-on-error=true ``` - Insert MongoDB configurations into `application.properties` file ```properties # MongoDB configurations spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.authentication-database=admin spring.data.mongodb.username=root spring.data.mongodb.password=rootroot spring.data.mongodb.database=test ``` - Create `docker-compose.yaml` at project root and add following services: `redis:6`, `postgresql:17` and `mongo:8`. - redis service should have - password `rootroot` - mapping port 6379 to 6379 - mounting volume `./redis_data` to `/data` - postgresql service should have - password `rootroot` - mapping port 5432 to 5432 - mounting volume `./postgres_data` to `/var/lib/postgresql/data` - mongo service should have - initdb root username `root` - initdb root password `rootroot` - mapping port 27017 to 27017 - mounting volume `./mongo_data` to `/data/db` - Insert `redis_data`, `postgres_data` and `mongo_data` directories in `.gitignore` file - Run gradle clean test command to check if the project is working ```shell ./gradlew clean test ``` - (Optional) `