Comprehensive developer toolkit providing reusable skills for Java/Spring Boot, TypeScript/NestJS/React/Next.js, Python, PHP, AWS CloudFormation, AI/RAG, DevOps, and more.
90
90%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Risky
Do not use without reviewing
<plugin>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<apiDocsUrl>http://localhost:8080/v3/api-docs</apiDocsUrl>
<outputFileName>openapi.json</outputFileName>
<outputDir>${project.build.directory}</outputDir>
</configuration>
</plugin><plugin>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<apiDocsUrl>http://localhost:8080/v3/api-docs</apiDocsUrl>
<outputFileName>openapi.yaml</outputFileName>
<outputDir>${project.build.directory}/docs</outputDir>
<skip>false</skip>
<headers>
<Authorization>Bearer test-token</Authorization>
</headers>
</configuration>
</plugin><plugin>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>generate-public-api</id>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<apiDocsUrl>http://localhost:8080/v3/api-docs/public</apiDocsUrl>
<outputFileName>public-api.json</outputFileName>
<outputDir>${project.build.directory}/docs</outputDir>
</configuration>
</execution>
<execution>
<id>generate-admin-api</id>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<apiDocsUrl>http://localhost:8080/v3/api-docs/admin</apiDocsUrl>
<outputFileName>admin-api.json</outputFileName>
<outputDir>${project.build.directory}/docs</outputDir>
</configuration>
</execution>
</executions>
</plugin>plugins {
id 'org.springdoc.openapi-gradle-plugin' version '1.9.0'
}
openApi {
apiDocsUrl = "http://localhost:8080/v3/api-docs"
outputDir = file("$buildDir/docs")
outputFileName = "openapi.json"
}openapi {
apiDocsUrl.set("http://localhost:8080/v3/api-docs")
outputDir.set(file("$buildDir/docs"))
outputFileName.set("openapi.yaml")
groupedApiMappings.set([
"public": "http://localhost:8080/v3/api-docs/public",
"admin": "http://localhost:8080/v3/api-docs/admin"
])
}name: Generate API Docs
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Run application
run: |
mvn spring-boot:run &
sleep 30 # Wait for app to start
- name: Generate OpenAPI docs
run: mvn verify
- name: Upload API docs
uses: actions/upload-artifact@v3
with:
name: openapi-spec
path: target/openapi.jsonstages:
- build
- docs
build:
stage: build
script:
- mvn clean install
artifacts:
paths:
- target/*.jar
generate-docs:
stage: docs
services:
- name: app:latest
alias: api
script:
- apk add --no-cache curl
- curl http://api:8080/v3/api-docs -o openapi.json
artifacts:
paths:
- openapi.json
only:
- mainimport org.springdoc.core.utils.SpringDocUtils;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class OpenApiDocumentationTest {
@Autowired
private OpenApiContract openApiContract;
@Test
void validateOpenApiSpec() {
OpenAPI openAPI = openApiContract.getOpenApi();
assertNotNull(openAPI);
assertNotNull(openAPI.getInfo());
assertEquals("1.0.0", openAPI.getInfo().getVersion());
assertFalse(openAPI.getPaths().isEmpty());
}
@Test
void allPathsHaveDocumentation() {
OpenAPI openAPI = openApiContract.getOpenApi();
openAPI.getPaths().forEach((path, pathItem) -> {
pathItem.readOperationsMap().forEach((method, operation) -> {
assertNotNull(operation.getSummary(), "Missing summary for " + method + " " + path);
assertFalse(operation.getResponses().isEmpty(), "No responses for " + method + " " + path);
});
});
}
}@Test
void validateBookSchema() {
OpenAPI openAPI = openApiContract.getOpenApi();
Schema bookSchema = openAPI.getComponents().getSchemas().get("Book");
assertNotNull(bookSchema);
assertTrue(bookSchema.getProperties().containsKey("id"));
assertTrue(bookSchema.getProperties().containsKey("title"));
assertTrue(bookSchema.getProperties().containsKey("author"));
}# Using Maven
mvn verify
# Using Gradle
gradle openApi
# The generated files will be in:
# - target/openapi.json (Maven)
# - buildDir/docs/openapi.json (Gradle)<plugin>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-maven-plugin</artifactId>
<configuration>
<outputDir>${project.basedir}/src/main/resources/static/docs</outputDir>
<outputFileName>swagger.json</outputFileName>
</configuration>
</plugin><dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>After adding the dependency:
http://localhost:8080/api-docs (Redoc styling)http://localhost:8080/swagger-ui/index.html (original)@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(new Info()
.title("API Documentation")
.version("1.0.0")
);
}
@Configuration
public class RedocConfig {
@Bean
public IndexPageCustomizer indexPageCustomizer() {
return indexHtml -> indexHtml.replace(
"<title>",
"<link rel='stylesheet' href='/webjars/redoc/redoc.css'><script src='/webjars/redoc/redoc.standalone.js'></script><title>"
);
}
}# application.yml
springdoc:
api-docs:
path: /api-docs
swagger-ui:
path: /swagger-ui.html
# Multiple API versions
springdoc:
group-configs:
- group: 'v1'
paths-to-match: /api/v1/**
- group: 'v2'
paths-to-match: /api/v2/**# Generate v1 spec
curl http://localhost:8080/v3/api-docs/v1 > openapi-v1.json
# Generate v2 spec
curl http://localhost:8080/v3/api-docs/v2 > openapi-v2.jsondocs
plugins
developer-kit-ai
developer-kit-aws
agents
docs
skills
aws
aws-cli-beast
aws-cost-optimization
aws-drawio-architecture-diagrams
aws-sam-bootstrap
aws-cloudformation
aws-cloudformation-auto-scaling
aws-cloudformation-bedrock
aws-cloudformation-cloudfront
aws-cloudformation-cloudwatch
aws-cloudformation-dynamodb
aws-cloudformation-ec2
aws-cloudformation-ecs
aws-cloudformation-elasticache
references
aws-cloudformation-iam
references
aws-cloudformation-lambda
aws-cloudformation-rds
aws-cloudformation-s3
aws-cloudformation-security
aws-cloudformation-task-ecs-deploy-gh
aws-cloudformation-vpc
references
developer-kit-core
agents
commands
skills
developer-kit-devops
developer-kit-java
agents
commands
docs
skills
aws-lambda-java-integration
aws-rds-spring-boot-integration
aws-sdk-java-v2-bedrock
aws-sdk-java-v2-core
aws-sdk-java-v2-dynamodb
aws-sdk-java-v2-kms
aws-sdk-java-v2-lambda
aws-sdk-java-v2-messaging
aws-sdk-java-v2-rds
aws-sdk-java-v2-s3
aws-sdk-java-v2-secrets-manager
clean-architecture
graalvm-native-image
langchain4j-ai-services-patterns
references
langchain4j-mcp-server-patterns
references
langchain4j-rag-implementation-patterns
references
langchain4j-spring-boot-integration
langchain4j-testing-strategies
langchain4j-tool-function-calling-patterns
langchain4j-vector-stores-configuration
references
qdrant
references
spring-ai-mcp-server-patterns
spring-boot-actuator
spring-boot-cache
spring-boot-crud-patterns
spring-boot-dependency-injection
spring-boot-event-driven-patterns
spring-boot-openapi-documentation
spring-boot-project-creator
spring-boot-resilience4j
spring-boot-rest-api-standards
spring-boot-saga-pattern
spring-boot-security-jwt
assets
references
scripts
spring-boot-test-patterns
spring-data-jpa
references
spring-data-neo4j
references
unit-test-application-events
unit-test-bean-validation
unit-test-boundary-conditions
unit-test-caching
unit-test-config-properties
references
unit-test-controller-layer
unit-test-exception-handler
references
unit-test-json-serialization
unit-test-mapper-converter
references
unit-test-parameterized
unit-test-scheduled-async
references
unit-test-service-layer
references
unit-test-utility-methods
unit-test-wiremock-rest-api
references
developer-kit-php
developer-kit-project-management
developer-kit-python
developer-kit-specs
commands
docs
hooks
test-templates
tests
skills
developer-kit-tools
developer-kit-typescript
agents
docs
hooks
rules
skills
aws-cdk
aws-lambda-typescript-integration
better-auth
clean-architecture
drizzle-orm-patterns
dynamodb-toolbox-patterns
references
nestjs
nestjs-best-practices
nestjs-code-review
nestjs-drizzle-crud-generator
nextjs-app-router
nextjs-authentication
nextjs-code-review
nextjs-data-fetching
nextjs-deployment
nextjs-performance
nx-monorepo
react-code-review
react-patterns
shadcn-ui
tailwind-css-patterns
tailwind-design-system
references
turborepo-monorepo
typescript-docs
typescript-security-review
zod-validation-utilities
references
github-spec-kit