Prompt file imported from rhixecompany/sandbox (
.github/prompts/development/kotlin-springboot/kotlin-springboot.prompt.md). Copyright stays with the author.
Table of Contents
Goal
Provides best practices for developing applications with Spring Boot and Kotlin, including idiomatic patterns and configuration.
Context
Phases
Table of Contents
Get best practices for developing applications with Spring Boot and Kotlin.
Spring Boot with Kotlin Best PracticesYour 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 thekotlin-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: use Kotlin's null-safety (
?) to 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, use 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.
kotlin companion object { private val logger = LoggerFactory.getLogger(MyClass::class.java) }- Parameterized Logging: Use parameterized messages (logger.info("Processing user {}...", userId)) for performance and clarity.
Test
ing
- JUnit 5: JUnit 5 is the default and works smoothly 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.
Template References
Templates in templates/:- configuration.md- data_layer_repositories.md- dependency_injection__com.md- logging.md- project_setup__structure.md- service_layer.md- testing.md- web_layer_controllers.md
Personas
See templates/personas.md for shared persona templates.
| Persona | When to Use |
|---|---|
| Developer | Implementation, debugging, refactoring |
| Reviewer | Code review, quality assurance |
| User | General purpose, operations |
Personality
See templates/personality.md for shared personality guidelines.
- Tone: Direct, practical, actionable
- Style: Structured with clear steps and verification
- Avoid: Ambiguity, assumptions, scope creep
- Encourage: Evidence-based decisions, minimal changes
Use when fixing, repairing, or synchronizing files or configs. Diagnose first, apply minimal changes, verify each fix.
Rules
See core rules: templates/rules-core.md
Domain Rules
- Fix root causes, not symptoms.
- Check siblings for the same flaw.
- Restore from git clean before retrying.
Standing Rules
- Map before touch — Understand before making changes.
- Smallest safe change — Minimal change that achieves the goal.
- Verify before claim — Test before reporting complete.
- Report blockers — State when something fails.
Phase 1: Intake
- Read the request and identify scope.
- Locate relevant files, diffs, references.
Phase 2: Execute
- Perform work with smallest safe change set.
- Keep steps explicit and reproducible.
Phase 3: Verify
- Check result against goal, rules, inputs.
- Confirm output is usable and complete.
Phase 4: Hand Off
- Return final artifact or findings .
- Stop once the requested result is delivered.
Best Practices
See templates/best-practices.md for cross-cutting best practices.
- DRY — Reference shared templates instead of duplicating content.
- Structured output — Use clear sections with consistent heading levels.
- Verification gates — Always verify before claiming completion.
- Minimal changes — Fix root cause, not symptoms.
Verification Checklist
| # | Gate | Criterion |
|---|---|---|
| 1 | Scope | Change matches the original request |
| 2 | Quality | Meets project standards |
| 3 | Tests | Tests pass (if applicable) |
| 4 | Regression | No unintended side effects |
| 5 | Docs | Changes documented if needed |
Dependencies
See templates/deps-core.md for shared dependency patterns.
Subgoals
- Prepare — Understand requirements and prerequisites.
- Execute — Follow structured workflow with incremental progress.
- Verify — Confirm output meets requirements and standards.
- Document — Record results, decisions, and lessons learned.
Skills Required
See templates/skills-table-core.md for shared skills table.
| Skill | Purpose |
|---|---|
using-superpowers |
Foundational skill workflow |
systematic-debugging |
Root cause analysis and fix |
git-patch-management |
Patch creation and management |
executing-plans |
Execute plans step by step |
verification-before-completion |
Validate before claiming done |
MCP Servers & Tools
The following MCP servers and tools are available for this task. Use them in preference to native equivalents per MCP-first tooling policy.
| ast-grep | AST-based code search and replace |
| filesystem | File read/write operations |
| sequential-thinking | Structured reasoning for complex problems |
| fetch | Web page content extraction |
| playwright | Browser automation for interactive pages |
| github | GitHub API operations |
Tasks
- Understand requirements and scope
- Plan approach and identify resources
- Execute work incrementally
- Verify against acceptance criteria
- Document results and decisions
Hooks
Shared workspace hooks run around this prompt's execution — see .github/hooks/README.md: session-logger, session-auto-commit, governance-audit, pre-exec-validate.sh, post-exec-state-log.py.
Scripts
Prompt-library tooling (see .enhance/):
.enhance/analyze_prompts.py— prompt-library analyzer (Phase 5/7 gate).enhance/verify_phase3.py,.enhance/fix_class_e.py,.enhance/fix_frontmatter_plan.py— Class C–E repair/verify tooling.github/hooks/*— hook implementations referenced in the Hooks section
Related Prompts
Workflow
Same-family prompts:
# Prompt template
Execute the workflow defined in this file.