kotlin-springboot
por github
Padrões e expressões idiomáticas de desenvolvimento Spring Boot adaptados para aplicações Kotlin. Utilize construtores primários para injeção de dependência, data class para DTOs e o plugin kotlin-jpa para abrir automaticamente classes de entidade sem código repetitivo. Organize o código por funcionalidade/domínio em vez de camadas; aproveite a segurança contra nulos do Kotlin para definir claramente campos de entidade opcionais versus obrigatórios. Aplique @ConfigurationProperties com data class para configuração type-safe e imutável; use application.yml e Spring Profiles...
npx skills add https://github.com/github/awesome-copilot --skill kotlin-springbootSpring Boot with Kotlin Best Practices
Your goal is to help me write high-quality, idiomatic Spring Boot applications using Kotlin.
Project Setup & Structure
- Build Tool: Use Maven (
pom.xml) or Gradle (build.gradle) with the Kotlin plugins (kotlin-maven-pluginororg.jetbrains.kotlin.jvm). - Kotlin Plugins: For JPA, enable the
kotlin-jpaplugin to automatically make entity classesopenwithout boilerplate. - Starters: Use Spring Boot starters (e.g.,
spring-boot-starter-web,spring-boot-starter-data-jpa) as usual. - Package Structure: Organize code by feature/domain (e.g.,
com.example.app.order,com.example.app.user) rather than by layer.
Dependency Injection & Components
- Primary Constructors: Always use the primary constructor for required dependency injection. It's the most idiomatic and concise approach in Kotlin.
- Immutability: Declare dependencies as
private valin the primary constructor. Prefervalovervareverywhere to promote immutability. - Component Stereotypes: Use
@Service,@Repository, and@RestControllerannotations just as you would in Java.
Configuration
- Externalized Configuration: Use
application.ymlfor its readability and hierarchical structure. - Type-Safe Properties: Use
@ConfigurationPropertieswithdata classto create immutable, type-safe configuration objects. - Profiles: Use Spring Profiles (
application-dev.yml,application-prod.yml) to manage environment-specific configurations. - Secrets Management: Never hardcode secrets. Use environment variables or a dedicated secret management tool like HashiCorp Vault or AWS Secrets Manager.
Web Layer (Controllers)
- RESTful APIs: Design clear and consistent RESTful endpoints.
- Data Classes for DTOs: Use Kotlin
data classfor all DTOs. This providesequals(),hashCode(),toString(), andcopy()for free and promotes immutability. - Validation: Use Java Bean Validation (JSR 380) with annotations (
@Valid,@NotNull,@Size) on your DTO data classes. - Error Handling: Implement a global exception handler using
@ControllerAdviceand@ExceptionHandlerfor consistent error responses.
Service Layer
- Business Logic: Encapsulate business logic within
@Serviceclasses. - Statelessness: Services should be stateless.
- Transaction Management: Use
@Transactionalon service methods. In Kotlin, this can be applied to class or function level.
Data Layer (Repositories)
- JPA Entities: Define entities as classes. Remember they must be
open. It's highly recommended to use thekotlin-jpacompiler plugin to handle this automatically. - Null Safety: Leverage Kotlin's null-safety (
?) to clearly define which entity fields are optional or required at the type level. - Spring Data JPA: Use Spring Data JPA repositories by extending
JpaRepositoryorCrudRepository. - Coroutines: For reactive applications, leverage Spring Boot's support for Kotlin Coroutines in the data layer.
Logging
- Companion Object Logger: The idiomatic way to declare a logger is in a companion object.
companion object { private val logger = LoggerFactory.getLogger(MyClass::class.java) } - Parameterized Logging: Use parameterized messages (
logger.info("Processing user {}...", userId)) for performance and clarity.
Testing
- JUnit 5: JUnit 5 is the default and works seamlessly with Kotlin.
- Idiomatic Testing Libraries: For more fluent and idiomatic tests, consider using Kotest for assertions and MockK for mocking. They are designed for Kotlin and offer a more expressive syntax.
- Test Slices: Use test slice annotations like
@WebMvcTestor@DataJpaTestto test specific parts of the application. - Testcontainers: Use Testcontainers for reliable integration tests with real databases, message brokers, etc.
Coroutines & Asynchronous Programming
suspendfunctions: For non-blocking asynchronous code, usesuspendfunctions in your controllers and services. Spring Boot has excellent support for coroutines.- Structured Concurrency: Use
coroutineScopeorsupervisorScopeto manage the lifecycle of coroutines.
Mais skills de github
console-rendering
github
Instruções para usar o sistema de renderização de console baseado em tags de struct em Go
official
acquire-codebase-knowledge
github
Use esta habilidade quando o usuário solicitar explicitamente mapear, documentar ou integrar-se a uma base de código existente. Ative para comandos como "mapeie esta base de código", "documente…
official
acreadiness-assess
github
Run the AgentRC readiness assessment on the current repository and produce a static HTML dashboard at reports/index.html. Wraps `npx github:microsoft/agentrc…
official
acreadiness-generate-instructions
github
Gera arquivos de instrução de agente de IA personalizados através do comando de instruções do AgentRC. Produz .github/copilot-instructions.md (padrão, recomendado para o Copilot no VS…
official
acreadiness-policy
github
Ajude o usuário a escolher, escrever ou aplicar uma política AgentRC. Políticas personalizam a pontuação de prontidão desabilitando verificações irrelevantes, substituindo impacto/nível, definindo…
official
add-educational-comments
github
Adiciona comentários educacionais a arquivos de código para transformá-los em recursos de aprendizado eficazes. Adapta a profundidade e o tom das explicações para três níveis de conhecimento configuráveis: iniciante, intermediário e avançado. Solicita automaticamente um arquivo caso nenhum seja fornecido, com correspondência de lista numerada para seleção rápida. Expande arquivos em até 125% usando apenas comentários educacionais (limite máximo: 400 novas linhas; 300 para arquivos com mais de 1.000 linhas). Preserva a codificação do arquivo, o estilo de indentação, a correção sintática e...
official
adobe-illustrator-scripting
github
Escreva, depure e otimize scripts de automação do Adobe Illustrator usando ExtendScript (JavaScript/JSX). Use ao criar ou modificar scripts que manipulam…
official
agent-governance
github
Políticas declarativas, classificação de intenção e trilhas de auditoria para controlar o acesso e comportamento de ferramentas de agentes de IA. Políticas de governança componíveis definem ferramentas permitidas/bloqueadas, filtros de conteúdo, limites de taxa e requisitos de aprovação — armazenados como configuração, não código. A classificação semântica de intenção detecta prompts perigosos (exfiltração de dados, escalada de privilégio, injeção de prompt) antes da execução da ferramenta usando sinais baseados em padrões. O decorador de governança em nível de ferramenta aplica políticas em funções...
official