Skip to content
Conduit

skill

spring-boot-skills

Agentic CLI skills for Spring Boot / Java backend engineering and DevOps

Dancan254/spring-boot-skillscommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/Dancan254/spring-boot-skills itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 26, 2026

Spring Boot Skills

Agent skills for building production-ready Spring Boot 4 / Java backends. They work in Claude Code, Codex, and Kimi Code CLI.

The scope is the code-and-ship loop: scaffolding, persistence, caching, messaging, DevOps, testing, and observability, plus AI engineering with Spring AI. Every skill is a plain SKILL.md folder under skills/. The three tools share that folder; only the thin manifests differ.


The skills

SkillWhat it does
spring-scaffoldScaffold a convention-compliant Spring Boot 4 project (pom, feature slices, global exception handling, ProblemDetail, Testcontainers, Dockerfile, GitHub Actions CI, project AGENTS.md, README).
devops-scaffoldAdd or update Dockerfile, docker-compose.yml, and GitHub Actions CI for an existing project.
spring-testingWrite and repair tests — Testcontainers 2.x setup, integration vs unit routing, and the Boot 4 test API (@MockitoBean, MockMvcTester, RestTestClient).
otel-setupWire OpenTelemetry end to end — OTLP export, the Logback appender Boot does not ship, a local Grafana LGTM backend, and a runbook that proves all three signals land.
spring-data-jpaAdd JPA persistence — entities, repositories, auditing, Flyway migrations, and integration tests.
redis-setupAdd Redis caching and rate limiting — Jackson 3 JSON serialization, per-cache TTLs, graceful cache failure, Bucket4j rate limiting, and a test that proves the cache intercepts calls.
http-resilienceAdd resilient outbound HTTP — RestClient with explicit timeouts, Resilience4j circuit breaker and retry, and a test that proves the circuit fails fast.
spring-ai-chatAdd LLM chat with Spring AI — ChatClient with system prompting, structured output to records, @Tool tool calling, Ollama or OpenAI.
spring-securityAdd JWT resource-server security — config, claim mapping, method security, and tests.
api-designAdd OpenAPI/SpringDoc docs, API versioning, and consistent ProblemDetail error schemas.
kafka-setupAdd Kafka producers/consumers — Spring Kafka config, JSON events, DLT handling, and Testcontainers tests.
rabbitmq-setupAdd RabbitMQ producers/consumers — Spring AMQP config, JSON events, DLX handling, and Testcontainers tests.
security-hardeningAdd DevSecOps hardening — OWASP dependency check, secrets scanning, container scanning, and SBOM.
pentest-auditPentest a running app — OWASP ZAP DAST scans (baseline + API), manual probes for auth/JWT/IDOR/CORS/actuator/headers, and a findings report with fixes.
spring-ai-ragAdd a RAG pipeline with Spring AI — PgVector with Flyway-owned DDL and HNSW index, Tika ingestion with token-aware chunking, a retrieval advisor with a similarity floor, and an end-to-end proof that answers are grounded in ingested documents.
mcp-serverExpose a Spring Boot service as an MCP server — streamable HTTP transport, use-case-shaped @McpTool tools with description/validation/error discipline, honest read-only/destructive hints, endpoint security, and verification with a real MCP client.
legacy-migrationMigrate Spring Boot 2.x/3.x apps to Boot 4.x — audit-first, OpenRewrite-led, one green build per hop (2.7 → 3.5 Jakarta jump → 4.0 Jackson 3 + modular starters → 4.1), with a symptom table for the changes that compile but break at runtime.

Build tool: the skills target Maven projects (pom.xml, ./mvnw). spring-testing and legacy-migration also handle Gradle; the rest do not yet.


Install

Claude Code

Install as a plugin from this repo's marketplace. Inside a session:

/plugin marketplace add Dancan254/spring-boot-skills
/plugin install spring-boot-skills@dancan254

Or from your shell: claude plugin marketplace add Dancan254/spring-boot-skills, then claude plugin install spring-boot-skills@dancan254. Skills are namespaced under the plugin, e.g. spring-boot-skills:spring-scaffold. Run /reload-plugins if a session was already open.

Without the plugin, copy or symlink the skill folders into ~/.claude/skills/ (user) or .claude/skills/ (project).

Codex

Codex scans .agents/skills/ in every directory from the working directory up to the repo root, and ~/.agents/skills/ for the user (official docs). Symlink each skill folder into the user directory — Codex follows symlinked skill folders:

cd /path/to/spring-boot-skills
mkdir -p ~/.agents/skills
for d in skills/*/; do
  ln -s "$PWD/$d" ~/.agents/skills/"$(basename "$d")"
done

Verify the install inside Codex: run /skills to list them, or invoke one explicitly with $spring-scaffold. Codex detects new skills automatically; restart if one doesn't appear.

The root plugin.json is the portable Agent Plugins manifest — the route OpenAI recommends for distributing skills beyond a single machine.

The repo root also carries a portable plugin.json (Agent Plugins 1.0.0 schema) for plugin-based distribution.

Kimi Code CLI

Install as a plugin. These are slash commands inside Kimi Code CLI:

/plugins install https://github.com/Dancan254/spring-boot-skills

Then /reload or start a new session (/new). .kimi-plugin/plugin.json declares "skills": "./skills/", so every skill registers automatically.

Kimi also scans .kimi-code/skills/ or .agents/skills/ in the project, and ~/.kimi-code/skills/ or ~/.agents/skills/ for the user ($KIMI_CODE_HOME overrides ~/.kimi-code). The Codex symlink loop above into ~/.agents/skills/ covers both Codex and Kimi at once.


How to use

Describe the outcome you want in plain language; each skill's description is its trigger:

Scaffold a new Spring Boot project called order-service that manages Orders and Customers.

The matching skill (spring-scaffold) runs and generates the project. You rarely invoke a skill by name.


Layout

.
├── .claude-plugin/        # Claude Code plugin + marketplace manifests
├── .kimi-plugin/          # Kimi Code CLI plugin manifest
├── plugin.json            # Portable Agent Plugins manifest (Codex)
├── AGENTS.md              # Contributor notes (CLAUDE.md imports it)
├── CHANGELOG.md
├── VERSIONS.md            # Every pin, checked by scripts/LintSkills.java
├── evals/                 # Routing suite for `claude plugin eval`
├── scripts/
│   ├── LintSkills.java    # run with `java scripts/LintSkills.java` (JDK 25+)
│   ├── RunEvals.java      # cross-CLI eval runner, same launch style
│   ├── GoldenPath.java    # runs spring-scaffold for real, then compiles the result
│   └── MiniJson.java      # shared minimal JSON parser (stdlib has none)
├── README.md
└── skills/
    ├── spring-scaffold/
    │   ├── SKILL.md
    │   ├── assets/
    │   │   └── templates/     # Java, YAML, and doc templates the scaffold copies
    │   └── references/
    │       └── pagination.md
    ├── devops-scaffold/
    │   ├── SKILL.md
    │   └── references/
    │       └── parallel-agent-runs.md
    ├── spring-testing/
    │   ├── SKILL.md
    │   └── references/
    │       ├── containers.md
    │       └── conventions.md
    ├── otel-setup/
    │   ├── SKILL.md
    │   └── references/
    │       └── otel-reference.md
    ├── spring-data-jpa/
    │   ├── SKILL.md
    │   └── references/
    │       └── jpa-conventions.md
    ├── redis-setup/
    │   ├── SKILL.md
    │   └── references/
    │       └── redis-conventions.md
    ├── spring-security/
    │   ├── SKILL.md
    │   └── references/
    │       └── security-conventions.md
    ├── api-design/
    │   ├── SKILL.md
    │   └── references/
    │       └── openapi-conventions.md
    ├── kafka-setup/
    │   ├── SKILL.md
    │   └── references/
    │       └── kafka-conventions.md
    ├── rabbitmq-setup/
    │   ├── SKILL.md
    │   └── references/
    │       └── rabbitmq-conventions.md
    ├── security-hardening/
    │   ├── SKILL.md
    │   └── references/
    │       └── hardening-checklist.md
    ├── spring-ai-rag/
    │   ├── SKILL.md
    │   └── references/
    │       └── rag-reference.md
    ├── mcp-server/
    │   ├── SKILL.md
    │   └── references/
    │       └── mcp-reference.md
    └── legacy-migration/
        ├── SKILL.md
        └── references/
            └── migration-reference.md

Version policy

Every pin — Spring Boot, BOM-managed versions, container images, GitHub Actions — lives in VERSIONS.md. Each skill carries the command to re-verify its pins before writing, and java scripts/LintSkills.java (run in CI, JDK 25+) fails when any skill disagrees with VERSIONS.md.

Do not override testcontainers.version or opentelemetry.version by hand — the Spring Boot BOM owns them. If a newer release exists, that is a Boot upgrade, not a property change.


Evals

evals/ holds a routing suite for claude plugin eval: one case per skill checking that a natural request fires the right skill (and not its neighbour where two overlap), one case checking that a request naming no broker gets asked "Kafka or RabbitMQ?", and three negative cases where no skill may fire. Graders are tool_used and regex only, so no judge model is involved.

claude plugin eval . --ablation none --no-publish            # full suite, ~3 runs per case
claude plugin eval . --case add-kafka-consumer --runs 1 --ablation none   # one case, once

claude plugin eval --model <model> covers other Claude models. To run the suite on other agent CLIs, use scripts/RunEvals.java (JDK 25+):

java scripts/RunEvals.java --tool kimi --runs 3             # full suite on Kimi
java scripts/RunEvals.java --tool codex --case secure-api-with-jwt --runs 1
java scripts/RunEvals.java --tool claude --case 'add-*'     # thin wrapper over claude plugin eval

The kimi/codex arms drive each CLI's headless mode, seed a minimal pom.xml in the scratch dir so "this Spring Boot service" prompts route instead of refusing, and cut each run once the routing decision is made — those CLIs have no max-turns flag, so the runner enforces the cap itself. Graders are applied locally against the event stream. Limitations vs the Claude harness: no cost reporting, no ablation arms, and routing via a subagent (Agent tool) is invisible to the tool_used grader, so a model that delegates instead of firing Skill directly scores as a miss.

Every run is a real model call on your account (about $0.05–0.10 per run on Claude). Cases cap at 2 turns, so Reached maximum number of turns (2) in the notes is expected — routing is decided on the first turn; the second is slack for one tool call plus the answer. --ablation none is deliberate: skill-fired graders aren't scored in the no-plugin arm, so the baseline adds cost without signal for a routing suite.


License

MIT

↑↓ navigate openesc close