#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.

Compare 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.

Compare on GitHub

skills/conventions/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

77966b6804a2 → 8d0eeefe2cd5

Compare 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.

Compare on GitHub

skills/design-patterns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

77966b6804a2 → 8d0eeefe2cd5

Compare 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.

Compare on GitHub

skills/java-modern/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

77966b6804a2 → 8d0eeefe2cd5

Compare 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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

skills/logging-patterns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

77966b6804a2 → 8d0eeefe2cd5

Compare 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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

skills/testing-patterns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

77966b6804a2 → 8d0eeefe2cd5

Compare 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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
1.4kGitHub stars
8stars in 7 days
8skills in this repository
46commits in 30 days

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

Jul 31, 2026Nov 5, 20261,445

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

799 tokens

When the skill is activated

Reference documents

1,702 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. When to Use
  2. What to Load
  3. Severity
  4. Non-Goals
  5. Quick Reference

Files

  • ../../.claude-plugin/icon.pngasset68,817 bytes
  • ../../.claude-plugin/marketplace.jsonasset317 bytes
  • ../../.claude-plugin/plugin.jsonasset665 bytes
  • SKILL.mdcore3,377 bytes
  • references/api-contract.mddoc981 bytes
  • references/correctness.mddoc1,653 bytes
  • references/performance.mddoc413 bytes
  • references/security.mddoc993 bytes
  • references/smells.mddoc1,380 bytes
  • references/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 GitHub

Skills 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

  1. #650 on Oct 30
  2. #652 on Oct 31
  3. #655 on Nov 1
  4. #657 on Nov 2
  5. #663 on Nov 3
  6. #664 since Nov 4
46 earlier periods
  1. #506 on Aug 1
  2. #476 on Aug 7
  3. #473 on Aug 9
  4. #494 on Aug 10
  5. #488 on Aug 12
  6. #496 from Aug 13 to Aug 14
  7. #488 on Aug 17
  8. #502 on Aug 18
  9. #498 on Aug 21
  10. #482 on Aug 22
  11. #504 on Aug 23
  12. #506 on Aug 24
  13. #506 on Aug 26
  14. #517 on Aug 27
  15. #518 on Aug 28
  16. #502 on Aug 29
  17. #517 on Aug 31
  18. #518 on Sep 7
  19. #537 on Sep 8
  20. #531 on Sep 15
  21. #542 on Sep 16
  22. #543 on Sep 18
  23. #540 on Sep 20
  24. #543 on Sep 21
  25. #553 on Sep 22
  26. #535 on Sep 24
  27. #534 on Sep 26
  28. #559 on Sep 28
  29. #565 on Oct 2
  30. #554 on Oct 4
  31. #564 on Oct 5
  32. #577 on Oct 10
  33. #590 on Oct 12
  34. #610 on Oct 14
  35. #593 on Oct 16
  36. #572 on Oct 17
  37. #567 on Oct 18
  38. #583 on Oct 19
  39. #591 on Oct 20
  40. #596 on Oct 21
  41. #583 on Oct 22
  42. #574 on Oct 23
  43. #566 on Oct 24
  44. #629 on Oct 25
  45. #645 on Oct 28
  46. #647 on Oct 29

Before you install

Network or broad shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/logging-patterns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/logging-patterns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/testing-patterns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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

and 14 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/code-quality/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/code-quality/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/code-quality/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/code-quality/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.

piomin/claude-ai-spring-boot: #664 on hotskills, 1.4k stars

[![piomin/claude-ai-spring-boot on hotskills](https://hotskills.dev/badge/piomin-claude-ai-spring-boot.svg)](https://hotskills.dev/skill/piomin-claude-ai-spring-boot/)