#664 by GitHub stars
piomin/claude-ai-spring-boot
Claude Code template for Spring Boot and other staff (included in the tags)
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/code-quality/SKILL.md
Week of Nov 2, 2026 · +41 / −317 lines
Before Instructions only → After Instructions only
77966b6804a2 → 8d0eeefe2cd5
- 3 description: Comprehensive code review for Java - clean code principles, API contracts, null safety, exception handling, and performance. Use when user says "review code", "refactor", "check API", or before merging changes.
+ 3 description: Review checklist for Java / Spring Boot code - correctness, security, performance, Spring signals, REST semantics, and code smells; project rules are referenced from conventions, not repeated. Use when user says "review code", "check this PR", "refactor", "check API", or before merging changes.
- 8 Systematic code review combining clean code principles, API design, and Java best practices.
+ 8 Knowledge for reviewing Java / Spring Boot changes: **what to flag** and how to recognize it. The review process, scope, and report format belong to the `code-reviewer` agent; project rules belong to the `conventions` skill.
+ 9
+ 10 **No duplication:** this skill holds only what no other skill states (generic Java quality, smells, REST semantics, detection signals). Project rules live in `conventions`, `spring-boot`, and `jpa-patterns`; the references here point to them and never restate them, so a rule change is made in one place.
- 14 - Before merging PR or releasing API changes
+ 16 - Before merging a PR or releasing API changes
- 16 ## Review Strategy
+ 18 ## What to Load
- 18 1. **Quick scan** - Understand intent, identify scope
- 19 2. **Checklist pass** - Apply relevant categories below
- 20 3. **Summary** - List findings by severity (Critical → Minor → Good)
+ 20 Read only the references that match the changed files.
- 22 ---
+ 22 | If the change contains | Read |
+ 23 |------------------------|------|
+ 24 | Any Java code | `references/correctness.md`, `references/spring-conventions.md` (signals; rules in `conventions`) |
+ 25 | Controllers, DTOs, OpenAPI, error handling | `references/api-contract.md` |
+ 26 | Input handling, auth, config, secrets, actuator | `references/security.md` |
+ 27 | Repositories, queries, entity loops | `references/performance.md` |
+ 28 | Entities, `*.sql` migrations, `spring.jpa.*`, Flyway | `conventions` → Relational Database Schema (Flyway); `spring-boot` → `references/data.md` |
+ 29 | Any non-trivial logic | `references/smells.md` |
- 24 ## Clean Code Principles
+ 31 Related skills, loaded only when the diff needs them:
- 26 ### DRY - Don't Repeat Yourself
+ 33 | Topic | Skill |
+ 34 |-------|-------|
+ 35 | Project rules (No Lombok, RestClient, Flyway, Problem Details) | `conventions` |
+ 36 | Lazy loading, fetching, optimistic locking | `jpa-patterns` |
+ 37 | Test quality, `RestTestClient`, Testcontainers | `testing-patterns` |
+ 38 | Log levels, MDC, structured logging | `logging-patterns` |
+ 39 | UI contract details | `spring-boot` → `references/ui-contract.md` |
+ 40 | Records, sealed types, pattern matching | `java-modern` |
- 28 **Violation:**
- 29 ```java
- 30 // ❌ Duplicated validation logic
- 31 public void createUser(UserRequest req) {
- 32 if (req.getEmail() == null || !req.getEmail().contains("@")) {
- 33 throw new ValidationException("Invalid email");
- 34 }
- 35 }
+ 42 ## Severity
- 37 public void updateUser(UserRequest req) {
- 38 if (req.getEmail() == null || !req.getEmail().contains("@")) {
- 39 throw new ValidationException("Invalid email");
- 40 }
- 41 }
- 42 ```
+ 44 - **Critical** - security, data loss, crash risk → must fix before merge
+ 45 - **Important** - correctness, performance, maintainability → should fix
+ 46 - **Code Smell** - style, complexity, minor issues → nice to have (always phrased as a heuristic, see `references/smells.md`)
+ 47 - **Good** - positive feedback worth reinforcing
- 44 **Fix:**
- 45 ```java
- 46 // ✅ Single source of truth
- 47 public class EmailValidator {
- 48 public void validate(String email) {
- 49 if (email == null || !email.contains("@")) {
- 50 throw new ValidationException("Invalid email");
- 51 }
- 52 }
- 53 }
- 54 ```
+ 49 ## Non-Goals
- 56 ### KISS - Keep It Simple
+ 51 - Formatting, import order, naming style that a formatter or linter enforces
+ 52 - Personal taste or rewrites that do not fix a concrete problem
+ 53 - Rules the repo contradicts on purpose: when `CLAUDE.md`, `conventions`, or an existing documented decision overrides a rule here, the repo wins
- 58 **Violation:**
- 59 ```java
- 60 // ❌ Over-engineered
- 61 public interface UserFactory {
- 62 User createUser();
- 63 }
- 64 public class ConcreteUserFactory implements UserFactory {
- 65 public User createUser() { return new User(); }
- 66 }
- 67 ```
+ 55 ## Quick Reference
- 69 **Fix:**
- 70 ```java
- 71 // ✅ Simple
- 72 public User createUser() { return new User(); }
- 73 ```
- 74
- 75 ### YAGNI - You Aren't Gonna Need It
- 76
- 77 **Violation:**
- 78 ```java
- 79 // ❌ Premature abstraction
- 80 public class ConfigurableUserServiceFactoryProvider { }
- 81 ```
- 82
- 83 **Fix:**
- 84 ```java
- 85 // ✅ Implement when actually needed
- 86 public class UserService { }
- 87 ```
- 88
- 89 ---
- 90
- 91 ## API Contract Review
- 92
- 93 ### HTTP Verb Semantics
- 94
- 95 | Verb | Use For | Idempotent | Safe |
- 96 |------|---------|------------|------|
- 97 | GET | Retrieve resource | Yes | Yes |
- 98 | POST | Create new resource | No | No |
- 99 | PUT | Replace entire resource | Yes | No |
- 100 | PATCH | Partial update | No* | No |
- 101 | DELETE | Remove resource | Yes | No |
- 102
- 103 **Common Mistakes:**
- 104 ```java
- 105 // ❌ POST for retrieval
- 106 @PostMapping("/users/search")
- 107 public List<User> search(@RequestBody SearchCriteria criteria) { }
- 108
This preview is limited. See the complete change on GitHub.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 77966b6804a2
No earlier version was observed for comparison.
skills/conventions/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
77966b6804a2 → 8d0eeefe2cd5
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 77966b6804a2
No earlier version was observed for comparison.
skills/design-patterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
77966b6804a2 → 8d0eeefe2cd5
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 77966b6804a2
No earlier version was observed for comparison.
skills/java-modern/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
77966b6804a2 → 8d0eeefe2cd5
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 77966b6804a2
No earlier version was observed for comparison.
skills/jpa-patterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
77966b6804a2 → 8d0eeefe2cd5
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 77966b6804a2
No earlier version was observed for comparison.
skills/logging-patterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
77966b6804a2 → 8d0eeefe2cd5
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 77966b6804a2
No earlier version was observed for comparison.
skills/spring-boot/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
77966b6804a2 → 8d0eeefe2cd5
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 77966b6804a2
No earlier version was observed for comparison.
skills/testing-patterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
77966b6804a2 → 8d0eeefe2cd5
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 77966b6804a2
No earlier version was observed for comparison.
Verified commit 8d0eeefe2cd52876bb750fc7677bbe45ae5c026c
git clone --filter=blob:none --no-checkout https://github.com/piomin/claude-ai-spring-boot.git .hotskills/piomin-claude-ai-spring-boot && git -C .hotskills/piomin-claude-ai-spring-boot checkout --detach 8d0eeefe2cd52876bb750fc7677bbe45ae5c026c
# Copy each selected skill directory from .hotskills/piomin-claude-ai-spring-boot into .claude/skills/<skill-name>/Heat
4.4- Star growth, last 7 daysAhead of 75% of tracked repositories
- Star growth, last 24 hoursAhead of 3% of tracked repositories
- Rank movement, last 7 daysAhead of 21% of tracked repositories
- Commits, last 30 daysAhead of 90% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- code-quality
skills/code-quality - conventions
skills/conventions - design-patterns
skills/design-patterns - java-modern
skills/java-modern - jpa-patterns
skills/jpa-patterns - logging-patterns
skills/logging-patterns - spring-boot
skills/spring-boot - testing-patterns
skills/testing-patterns
How it works
code-quality
When your agent uses it
Review checklist for Java / Spring Boot code - correctness, security, performance, Spring signals, REST semantics, and code smells; project rules are referenced from conventions, not repeated. Use when user says "review code", "check this PR", "refactor", "check API", or before merging changes.
What it loads into context
Frontmatter
68 tokensAlways available to the agent
SKILL.md
799 tokensWhen the skill is activated
Reference documents
1,702 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- What to Load
- Severity
- Non-Goals
- Quick Reference
Files
../../.claude-plugin/icon.pngasset68,817 bytes../../.claude-plugin/marketplace.jsonasset317 bytes../../.claude-plugin/plugin.jsonasset665 bytesSKILL.mdcore3,377 bytesreferences/api-contract.mddoc981 bytesreferences/correctness.mddoc1,653 bytesreferences/performance.mddoc413 bytesreferences/security.mddoc993 bytesreferences/smells.mddoc1,380 bytesreferences/spring-conventions.mddoc1,634 bytes
Read SKILL.md
# Code Quality Review Skill
Knowledge for reviewing Java / Spring Boot changes: **what to flag** and how to recognize it. The review process, scope, and report format belong to the `code-reviewer` agent; project rules belong to the `conventions` skill.
**No duplication:** this skill holds only what no other skill states (generic Java quality, smells, REST semantics, detection signals). Project rules live in `conventions`, `spring-boot`, and `jpa-patterns`; the references here point to them and never restate them, so a rule change is made in one place.
## When to Use
- "review this code" / "code review" / "check this PR"
- "refactor" / "clean this code" / "improve readability"
- "review API" / "check endpoints" / "REST review"
- Before merging a PR or releasing API changes
## What to Load
View the complete source on GitHubconventions
When your agent uses it
Spring Boot project conventions and mandatory rules. Auto-loads when working with Spring Boot, Java, or Maven projects. Enforces No-Lombok, constructor injection, RestClient, Flyway for relational databases, Problem Details errors, and other standards; adds OpenAPI contract rules when the API is built for a UI.
What it loads into context
Frontmatter
150 tokensAlways available to the agent
SKILL.md
1,577 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Mandatory Rules
- Code Quality Standards
- REST API Built for a UI (OpenAPI Contract)
- Relational Database Schema (Flyway)
Files
SKILL.mdcore6,544 bytesSKILL.mdcore6,544 bytes
Read SKILL.md
# Spring Boot Project Conventions
These conventions apply to ALL code generated or reviewed in the project. Follow them strictly.
## Mandatory Rules
- **No Lombok** — write explicit constructors, getters, setters; use `LoggerFactory.getLogger()` for loggers
- **Constructor injection** — no `@Autowired` on fields
- **RestClient** over RestTemplate/WebClient for blocking HTTP calls
- **RestTestClient** with `@AutoConfigureRestTestClient` for integration tests
- **Testcontainers** with `@ServiceConnection` (not `@DynamicPropertySource`)
- **Jakarta Persistence** (not `javax.persistence`)
- **Java records** for DTOs: `<Resource>Response`, `<Resource>CreateRequest`, `<Resource>UpdateRequest`; controllers never expose entities
- **Maven** for dependency managementView the complete source on GitHubdesign-patterns
When your agent uses it
Design patterns with Java examples - classic (Factory, Builder, Strategy, Observer, Decorator, Adapter) and enterprise/microservices (Saga, Outbox, CQRS). Use when user asks about patterns, designing extensible components, or distributed transaction strategies.
What it loads into context
Frontmatter
60 tokensAlways available to the agent
SKILL.md
3,143 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- Quick Reference: When to Use What
- Creational Patterns
- Behavioral Patterns
- Structural Patterns
- Enterprise / Microservices Patterns
- Pattern Selection Guide
- Anti-Patterns to Avoid
Files
SKILL.mdcore15,647 bytes
Read SKILL.md
# Design Patterns Skill
Quick reference for common design patterns in Java.
## When to Use
- User asks to implement a specific pattern
- Designing extensible/flexible components
- Refactoring rigid code
## Quick Reference: When to Use What
| Problem | Pattern | Use When |
|---------|---------|----------|
| Complex object construction | **Builder** | Many parameters, some optional |View the complete source on GitHubjava-modern
When your agent uses it
Java 21+ features for Spring Boot - records, sealed classes, pattern matching, virtual threads, text blocks. Use when user asks about modern Java, Java 21 features, or when modernizing existing code.
What it loads into context
Frontmatter
50 tokensAlways available to the agent
SKILL.md
1,959 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- Records (Java 16+)
- Sealed Classes (Java 17+)
- Pattern Matching
- Virtual Threads (Java 21 + Spring Boot 4.x)
- Text Blocks (Java 15+)
- Sequenced Collections (Java 21)
- Quick Decision Guide
Files
SKILL.mdcore9,019 bytes
Read SKILL.md
# Java Modern Skill
Java 21+ language features and how to use them in Spring Boot applications.
## When to Use
- Building new Spring Boot 4.x applications (default to modern features)
- Modernizing/refactoring existing Java code
- User asks about records, sealed classes, pattern matching, virtual threads
---
## Records (Java 16+)
### DTOsView the complete source on GitHubjpa-patterns
When your agent uses it
JPA/Hibernate patterns and common pitfalls (N+1, lazy loading, transactions, queries). Use when user has JPA performance issues, LazyInitializationException, or asks about entity relationships and fetching strategies.
What it loads into context
Frontmatter
51 tokensAlways available to the agent
SKILL.md
4,118 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- Quick Reference: Common Problems
- N+1 Problem
- Lazy Loading
- Transaction Management
- Optimistic Locking
- Entity Design
- Modern Hibernate Features
- Query Best Practices
- Quick Decision Guide
Files
SKILL.mdcore18,064 bytes
Read SKILL.md
# JPA Patterns Skill
Best practices and common pitfalls for JPA/Hibernate in Spring applications.
## When to Use
- User mentions "N+1 problem" / "too many queries"
- LazyInitializationException errors
- Questions about fetch strategies (EAGER vs LAZY)
- Transaction management issues
- Entity relationship design
- Query optimization
---
View the complete source on GitHublogging-patterns
When your agent uses it
Java logging best practices with SLF4J, structured logging (JSON), and MDC for request tracing. Includes AI-friendly log formats for Claude Code debugging. Use when user asks about logging, debugging application flow, or analyzing logs.
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
3,183 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- AI-Friendly Logging
- Quick Setup (Spring Boot 4.x)
- Setup for Spring Boot < 3.4 (Legacy)
- SLF4J Basics
- MDC (Mapped Diagnostic Context)
- Quick Reference
Files
SKILL.mdcore13,009 bytesSKILL.mdcore13,009 bytesSKILL.mdcore13,009 bytes
Read SKILL.md
# Logging Patterns Skill
**Rule: JSON is the default log format.** Plain text logging is only for local development with `human-logs` profile. Production, CI/CD, and Kubernetes environments must use structured JSON.
## When to Use
- User says "add logging" / "improve logs" / "debug this"
- Analyzing application flow from logs
- Setting up structured logging (JSON)
- Request tracing with correlation IDs
- AI/Claude Code needs to analyze application behavior
---
## AI-Friendly LoggingView the complete source on GitHubspring-boot
When your agent uses it
Spring Boot 4.x development - REST APIs, JPA, Security, Testing, and Cloud-native patterns. Use for building enterprise Java applications with Spring Boot.
What it loads into context
Frontmatter
101 tokensAlways available to the agent
SKILL.md
2,476 tokensWhen the skill is activated
Reference documents
25,523 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Workflow
- Quick Start Templates
- Reference Guide
- Constraints
- Architecture Patterns
- Common Annotations
- Reactive WebFlux Endpoint
- Spring Security JWT
- Knowledge Base
Files
SKILL.mdcore11,377 bytesreferences/cloud.mddoc23,122 bytesreferences/data.mddoc18,564 bytesreferences/security.mddoc18,170 bytesreferences/testing.mddoc16,474 bytesreferences/ui-contract.mddoc20,949 bytesreferences/web.mddoc18,198 bytes
Read SKILL.md
# Spring Boot Skill
Enterprise Spring Boot 4.x development with focus on clean architecture and production-ready code.
## Core Workflow
1. **Analyze** - Understand requirements, identify service boundaries, APIs, data models
2. **Design** - Plan architecture, confirm design before coding
3. **Implement** - Build with constructor injection and layered architecture; for a relational database, write Flyway migrations alongside entities (`ddl-auto: validate`)
4. **Secure** - Add Spring Security, OAuth2, method security; verify tests pass
5. **Test** - Write unit, integration tests; run `./mvnw clean verify` and confirm all pass, with integration tests running (not skipped)
6. **Deploy** - Configure health checks via Actuator; validate `/actuator/health` returns UP and `/actuator/info` shows `build.version`
## Quick Start TemplatesView the complete source on GitHubtesting-patterns
When your agent uses it
Testing patterns for Spring Boot - JUnit 5, Mockito, MockMvc, Testcontainers, positive and negative test cases. Use when user asks about testing, writing tests, test coverage, or test failures.
What it loads into context
Frontmatter
50 tokensAlways available to the agent
SKILL.md
3,077 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- Test Pyramid
- Unit Tests (Service Layer)
- Controller Slice Tests (@WebMvcTest)
- Repository Slice Tests (@DataJpaTest)
- Integration Tests (@SpringBootTest)
- Testcontainers Reusable Config
- Parameterized Tests
- Quick Reference
- Naming Convention
Files
SKILL.mdcore13,797 bytesSKILL.mdcore13,797 bytes
Read SKILL.md
# Testing Patterns Skill
Testing strategies for Spring Boot applications. Always write both positive and negative test cases.
## When to Use
- "write tests" / "add test coverage" / "test this"
- Test failures or debugging test issues
- Choosing between unit, slice, and integration tests
---
## Test Pyramid
| Level | Annotation | Speed | Scope | When to Use |View the complete source on GitHubSkills included
- code-quality
- conventions
- design-patterns
- java-modern
- jpa-patterns
- logging-patterns
- spring-boot
- testing-patterns
Repository facts
- License
- Apache-2.0
- Created
- Feb 16, 2026
- Last pushed
- Oct 30, 2026
- Forks
- 455
- Open issues
- 6
- Project activity
- Active
Rank over the last 12 weeks
Now #664 · best #482 · down 100 in 30 days
- #650 on Oct 30
- #652 on Oct 31
- #655 on Nov 1
- #657 on Nov 2
- #663 on Nov 3
- #664 since Nov 4
46 earlier periods
- #506 on Aug 1
- #476 on Aug 7
- #473 on Aug 9
- #494 on Aug 10
- #488 on Aug 12
- #496 from Aug 13 to Aug 14
- #488 on Aug 17
- #502 on Aug 18
- #498 on Aug 21
- #482 on Aug 22
- #504 on Aug 23
- #506 on Aug 24
- #506 on Aug 26
- #517 on Aug 27
- #518 on Aug 28
- #502 on Aug 29
- #517 on Aug 31
- #518 on Sep 7
- #537 on Sep 8
- #531 on Sep 15
- #542 on Sep 16
- #543 on Sep 18
- #540 on Sep 20
- #543 on Sep 21
- #553 on Sep 22
- #535 on Sep 24
- #534 on Sep 26
- #559 on Sep 28
- #565 on Oct 2
- #554 on Oct 4
- #564 on Oct 5
- #577 on Oct 10
- #590 on Oct 12
- #610 on Oct 14
- #593 on Oct 16
- #572 on Oct 17
- #567 on Oct 18
- #583 on Oct 19
- #591 on Oct 20
- #596 on Oct 21
- #583 on Oct 22
- #574 on Oct 23
- #566 on Oct 24
- #629 on Oct 25
- #645 on Oct 28
- #647 on Oct 29
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Risk level changed on Nov 3, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 4 notes
skills/conventions/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/logging-patterns/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/logging-patterns/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/testing-patterns/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 68 network referencesin 6 files: spring-boot/references/cloud.md:22 spring-boot/references/security.md:39 spring-boot/references/web.md:321 and 3 more
- No hidden or obfuscated text
- No instruction overrides
- No executable scripts
- 2 references to secretsin 1 file: spring-boot/references/cloud.md:807
- No requests to vote in Hot
Show all 70 signals by file
.claude-plugin/plugin.json
- Network accessline 6
"author": { "name": "Piotr Mińkowski", "url": "https://github.com/piomin" - Network accessline 7
"name": "Piotr Mińkowski", "url": "https://github.com/piomin" }, - Network accessline 8
"url": "https://github.com/piomin" - Network accessline 9
}, "repository": "https://github.com/piomin/claude-ai-spring-boot", "homepage": "https://piotrminkowski.com/2026/03/24/claude-code-template-for-spring-boot/", - Network accessline 10
"repository": "https://github.com/piomin/claude-ai-spring-boot", - Network accessline 11
"homepage": "https://piotrminkowski.com/2026/03/24/claude-code-template-for-spring-boot/",
skills/jpa-patterns/SKILL.md
- Network accessline 23
|---------|---------|----------| | N+1 queries | Many SELECT statements | JOIN FETCH, @EntityGraph | | LazyInitializationException | Error outside transaction | DTO projection, JOIN FETCH (not Open Session in View) | - Network accessline 24
| N+1 queries | Many SELECT statements | JOIN FETCH, @EntityGraph | | LazyInitializationException | Error outside transaction | DTO projection, JOIN FETCH (not Open Session in View) | | Slow queries | Performance issues | Pagination, projec - Network accessline 25
| LazyInitializationException | Error outside transaction | DTO projection, JOIN FETCH (not Open Session in View) | - Network accessline 61
### Solution 1: JOIN FETCH (JPQL)
skills/spring-boot/references/cloud.md
- Network accessline 22
server: git: uri: https://github.com/example/config-repo - Network accessline 23
git: uri: https://github.com/example/config-repo default-label: main - Network accessline 24
uri: https://github.com/example/config-repo - Network accessline 42
name: user-service config: import: "configserver:http://localhost:8888" - Network accessline 43
config: import: "configserver:http://localhost:8888" cloud: - Network accessline 44
import: "configserver:http://localhost:8888" - Network accessline 100
fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ - Network accessline 102
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ - Network accessline 119
client: service-url: defaultZone: http://localhost:8761/eureka/ - Network accessline 120
service-url: defaultZone: http://localhost:8761/eureka/ registry-fetch-interval-seconds: 5 - Network accessline 121
defaultZone: http://localhost:8761/eureka/ registry-fetch-interval-seconds: 5 instance: - Network accessline 215
public ExternalApiService(RestClient.Builder builder) { this.restClient = builder .baseUrl("https://api.external.com") - Network accessline 216
this.restClient = builder .baseUrl("https://api.external.com") .build(); - Network accessline 217
.baseUrl("https://api.external.com") - Network accessline 278
otlp: tracing: endpoint: http://localhost:4318/v1/traces - Network accessline 280
endpoint: http://localhost:4318/v1/traces - Network accessline 306
zipkin: tracing: endpoint: http://localhost:9411/api/v2/spans - Network accessline 308
endpoint: http://localhost:9411/api/v2/spans - Network accessline 361
public UserClientService(RestClient.Builder builder) { this.restClient = builder .baseUrl("http://user-service") - Network accessline 362
this.restClient = builder .baseUrl("http://user-service") .build(); - Network accessline 363
.baseUrl("http://user-service") - Network accessline 584
spec: acme: server: https://acme-v02.api.letsencrypt.org/directory - Network accessline 585
acme: server: https://acme-v02.api.letsencrypt.org/directory email: admin@example.com - Network accessline 586
server: https://acme-v02.api.letsencrypt.org/directory - Network accessline 699
public UserClient userClient(RestClient.Builder builder) { RestClient restClient = builder .baseUrl("http://user-service") - Network accessline 700
RestClient restClient = builder .baseUrl("http://user-service") .build(); - Network accessline 701
.baseUrl("http://user-service") - Network accessline 776
FROM eclipse-temurin:21-jre-alpine RUN addgroup -S app && adduser -S app -G app && apk add --no-cache curl WORKDIR /app - Network accessline 777
RUN addgroup -S app && adduser -S app -G app && apk add --no-cache curl WORKDIR /app COPY --from=build /workspace/app/target/*.jar app.jar - Network accessline 779
COPY --from=build /workspace/app/target/*.jar app.jar USER app HEALTHCHECK --interval=30s --timeout=3s CMD curl -sf http://localhost:8080/actuator/health || exit 1 - Network accessline 780
USER app HEALTHCHECK --interval=30s --timeout=3s CMD curl -sf http://localhost:8080/actuator/health || exit 1 ENTRYPOINT ["java", "-jar", "app.jar"] - Network accessline 781
HEALTHCHECK --interval=30s --timeout=3s CMD curl -sf http://localhost:8080/actuator/health || exit 1 - Access to secretsline 807
[Credential-related source omitted] - Access to secretsline 810
[Credential-related source omitted]
skills/spring-boot/references/security.md
- Network accessline 39
public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOrigins(List.of("http://localhost:3000")); - Network accessline 40
CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOrigins(List.of("http://localhost:3000")); configuration.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS")); - Network accessline 41
configuration.setAllowedOrigins(List.of("http://localhost:3000")); - Network accessline 437
@Bean public JwtDecoder jwtDecoder() { return JwtDecoders.fromIssuerLocation("https://auth.example.com"); - Network accessline 438
public JwtDecoder jwtDecoder() { return JwtDecoders.fromIssuerLocation("https://auth.example.com"); } - Network accessline 439
return JwtDecoders.fromIssuerLocation("https://auth.example.com"); - Network accessline 492
public RestClient secureRestClient(RestClient.Builder builder, SslBundles sslBundles) { return builder .baseUrl("https://internal-service") - Network accessline 493
return builder .baseUrl("https://internal-service") .apply(b -> b.requestFactory( - Network accessline 494
.baseUrl("https://internal-service")
skills/spring-boot/references/ui-contract.md
- Network accessline 3
Rules for an API whose web UI (or other client) is **generated from its OpenAPI contract**, for example a UI made from [crud-ui-blueprint](https://github.com/mmartofel/crud-ui-blueprint). The UI builds its client code, forms, validation, er - Network accessline 247
- **Roles:** realm roles `<realm>-viewer` (read) and `<realm>-editor` (read and write). Reads need either role; writes need `<realm>-editor`. - **Clients:** `<realm>-ui`, public, standard flow only, PKCE `S256`, redirect URI `http://localho - Network accessline 248
- **Clients:** `<realm>-ui`, public, standard flow only, PKCE `S256`, redirect URI `http://localhost:5173/*`, web origin `http://localhost:5173`. `<realm>-api`, confidential, service account with `<realm>-editor`, secret `<realm>-api-secret - Network accessline 283
The JWT is validated with `spring.security.oauth2.resourceserver.jwt.jwk-set-uri: ${JWK_SET_URI:http://localhost:8080/realms/<realm>/protocol/openid-connect/certs}`. - Network accessline 315
VITE_OIDC_AUTHORITY=http://localhost:8080/realms/<realm> - Network accessline 316
VITE_OIDC_CLIENT_ID=<realm>-ui VITE_OIDC_ROLES_CLAIM=realm_access.roles API_PROXY_TARGET=http://localhost:8081 - Network accessline 317
VITE_OIDC_ROLES_CLAIM=realm_access.roles API_PROXY_TARGET=http://localhost:8081 CONTRACT_SOURCE=../<project>/contract/openapi.json - Network accessline 318
API_PROXY_TARGET=http://localhost:8081
skills/spring-boot/references/web.md
- Network accessline 321
public RestClient restClient(RestClient.Builder builder) { return builder .baseUrl("https://api.example.com") - Network accessline 322
return builder .baseUrl("https://api.example.com") .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - Network accessline 323
.baseUrl("https://api.example.com") - Network accessline 366
public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://localhost:3000", "https://example.com") - Network accessline 367
registry.addMapping("/api/**") .allowedOrigins("http://localhost:3000", "https://example.com") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") - Network accessline 368
.allowedOrigins("http://localhost:3000", "https://example.com") - Network accessline 408
null); setTitle("User Not Found"); setType(URI.create("https://api.example.com/errors/user-not-found")); - Network accessline 409
setTitle("User Not Found"); setType(URI.create("https://api.example.com/errors/user-not-found")); } - Network accessline 410
setType(URI.create("https://api.example.com/errors/user-not-found"));
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 64 facts
- Network access in prose of the SKILL.mdjpa-patterns/SKILL.md:23Low confidence
- Network access in prose of the SKILL.mdjpa-patterns/SKILL.md:24Low confidence
- Network access in prose of the SKILL.mdjpa-patterns/SKILL.md:25Low confidence
- Network access in prose of the SKILL.mdjpa-patterns/SKILL.md:61Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:22Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:23Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:24Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:42Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:43Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:44Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:100Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:102Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:119Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:120Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:121Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:215Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:216Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:217Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:278Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:280Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:306Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:308Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:361Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:362Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:363Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:584Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:585Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:586Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:699Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:700Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:701Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:776Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:777Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:779Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:780Low confidence
- Network access in code of documentationspring-boot/references/cloud.md:781Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valuespring-boot/references/cloud.md:807Low confidence
- Access to secrets in code of documentationspring-boot/references/cloud.md:810Low confidence
- Network access in code of documentationspring-boot/references/security.md:39Low confidence
- Network access in code of documentationspring-boot/references/security.md:40Low confidence
- Network access in code of documentationspring-boot/references/security.md:41Low confidence
- Network access in code of documentationspring-boot/references/security.md:437Low confidence
- Network access in code of documentationspring-boot/references/security.md:438Low confidence
- Network access in code of documentationspring-boot/references/security.md:439Low confidence
- Network access in code of documentationspring-boot/references/security.md:492Low confidence
- Network access in code of documentationspring-boot/references/security.md:493Low confidence
- Network access in code of documentationspring-boot/references/security.md:494Low confidence
- Network access in prose of documentationspring-boot/references/ui-contract.md:3Low confidence
- Network access in prose of documentationspring-boot/references/ui-contract.md:247Low confidence
- Network access in prose of documentationspring-boot/references/ui-contract.md:248Low confidence
and 14 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/code-quality/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/code-quality/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/code-quality/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/code-quality/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/code-quality/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/piomin-claude-ai-spring-boot/)