CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

ai-unified-process/aiup-spring-boot

AI Unified Process Spring Boot layers - service and REST API implementation and tests

95

1.04x
Quality

95%

Does it follow best practices?

Impact

94%

1.04x

Average score across 4 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

aiup-spring-boot

aiup-spring-boot is the AI Unified Process layer plugin for the service and API layers of a Spring Boot application: the business logic with its transactions and business rules, and a REST API with RFC 9457 Problem Details — each with its test skill.

It is one layer of a stack, not a stack. Combine it with aiup-core (3.0.0 or later) and one plugin per other layer of your project. /stack records which plugin builds which layer in docs/architecture/stack.md; /use-case-implement, /use-case-test, and /use-case-coverage run the layer skills from there.

Skills

LayerSkillResult
Service/spring-service@Service methods, @Transactional boundaries, business rules with markers, domain exceptions, Bean Validation
API/spring-rest@RestController endpoints, request/response DTO records, Problem Details, status codes, paging
Service/spring-service-testUC001<Name>ServiceTest: every business rule allowed and rejected, against a real database or a fake port
API/spring-rest-testUC001<Name>ApiTest: statuses, JSON contract, Problem Details bodies, through the full stack

Each skill is normally run by /use-case-implement UC-XXX or /use-case-test UC-XXX, which pass the Handover of the layer below — the repository methods, the service methods and exceptions, the endpoints — to the next. Each can also be run directly, for example /spring-rest UC-001 to change only the API of a use case.

The service layer is used by every UI: a Vaadin Flow view calls it directly, a Hilla @BrowserCallable endpoint (built by /hilla-ui in aiup-vaadin) delegates to it, and /spring-rest exposes it to a client-side UI such as Angular. The service never depends on a web or UI type.

Combinations

ProjectPlugins next to aiup-core
REST API, Spring Boot, jOOQaiup-flyway, aiup-jooq, aiup-spring-boot
REST API, Spring Boot, JPAaiup-flyway, aiup-jpa, aiup-spring-boot
Vaadin Flow, jOOQaiup-flyway, aiup-jooq, aiup-spring-boot, aiup-vaadin
Hilla, jOOQaiup-flyway, aiup-jooq, aiup-spring-boot, aiup-vaadin
Angular, Spring Boot, JPAaiup-flyway, aiup-jpa, aiup-spring-boot, aiup-angular, aiup-playwright

A use case is tested once, in the integration layer of the entry layer it is offered through, which /stack records in the Integration layer table of docs/architecture/stack.md:

ProjectIntegration layerWhat this plugin's test skills write
REST API only, or AngularAPI/spring-rest-test: every business rule; /spring-service-test nothing new
Vaadin Flow (with or without REST)UI/spring-rest-test: the endpoint contract only; /spring-service-test nothing new
Hilla (with or without REST)Service/spring-service-test: every business rule; /spring-rest-test: the contract only
No entry layerService/spring-service-test: every business rule

A REST API next to a Vaadin Flow or Hilla UI serves other clients; the UI does not call it, so it is the integration layer only of the use cases offered through the API alone. Below the integration layer, /spring-service-test only reconciles existing tests and covers units the integration layer's skill reports it cannot reach. In a Vaadin or Hilla application without a public API, the API layer is marked – in docs/architecture/stack.md and /spring-rest does not run.

Do not install this plugin together with a combined stack plugin (aiup-vaadin-jooq, aiup-angular-jpa) in one project.

Architecture support

The skills follow the module layout recorded in docs/architecture/stack.md:

  • Flat single module: repositories, services, and controllers in one Spring Boot module.
  • Hexagonal multi-module: domain, business, persistence adapter, inbound adapter, and composition-root modules, with the outbound port in the business module.

Existing conventions are preserved rather than rewritten into a textbook architecture. The detection rules, used when docs/architecture/stack.md does not record the layout, are in skills/spring-service/references/module-layout.md.

Traceability

KindMarker
Code// UC-XXX BR-YYY: <rule> above the service guard clause that enforces a business rule
CodeUC-XXX in the Javadoc of the service method and the controller method that realize a step
Test@UseCase(id = "UC-XXX", scenario = "…", businessRules = {…}, requirements = {…}) on every test method
NameUC<id><Name>ServiceTest, UC<id><Name>ApiTest / ApiIT

Every skill writes its rows into the Markers table of docs/architecture/stack.md, which /use-case-coverage reads.

Installation

Tessl

tessl install ai-unified-process/aiup-core
tessl install ai-unified-process/aiup-spring-boot

Claude Code

/plugin marketplace add ai-unified-process/marketplace
/plugin install aiup-core
/plugin install aiup-spring-boot

Install the plugins of the other layers (migration, persistence, UI) the same way. See the marketplace installation guides for other agents and manual adoption.

MCP servers

The plugin configures the optional JavaDocs MCP server for Spring API lookups; see rules/mcp-servers.md. The skills work without it.

License

Apache-2.0 · © 2025-2026 Simon Martinelli and the AI Unified Process contributors

See LICENSE and NOTICE. "AI Unified Process" identifies the original methodology; derived works must retain the NOTICE file and must not present themselves as the official AI Unified Process.

Workspace
ai-unified-process
Visibility
Public
Created
Last updated
Publish Source
GitHub
Badge
ai-unified-process/aiup-spring-boot badge