Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when building or extending a Java service with Quarkus - layered architecture, JAX-RS resources, CDI beans, Panache persistence, and native-friendly patterns
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Quarkus is the default Java stack: fast startup, low memory, native-image friendly — the closest Java gets to Go's operational profile. Build services in clean layers so the framework stays at the edges and the domain stays plain Java.
Core principle: Framework annotations live at the boundaries (resources, repositories). The domain and services are plain classes you can unit-test without booting Quarkus.
| Layer | Responsibility | Quarkus surface |
|---|---|---|
| Resource | HTTP in/out, validation, status codes | @Path, JAX-RS (@GET/@POST), @Valid |
| Service | Use-case orchestration, business rules | @ApplicationScoped CDI bean, constructor-injected |
| Domain | Entities, value objects, invariants | plain Java, no annotations driving behavior |
| Repository | Persistence | Panache (PanacheRepository) or JPA |
Dependencies point inward: resource → service → domain; repository implements a port the service depends on. A resource never contains business logic; a service never touches RoutingContext or JAX-RS types.
public TaskService(TaskRepository repo). Constructor injection is testable without CDI and makes dependencies explicit.@NotNull, @Size(max=200)) + @Valid on the resource method — validate at the boundary, reject early.Uni/Multi without cause. A blocking-I/O-heavy endpoint on Java 21+ may run on a virtual thread instead (@RunOnVirtualThread) rather than going reactive.@ConfigProperty from application.properties/env — never hardcode. Group related settings with @ConfigMapping instead of a pile of individual @ConfigProperty fields.@ServerExceptionMapper, returning RestResponse<ProblemDto> (or the repo's equivalent) — not a try/catch per resource method (api-design-conventions has the shape).quarkus.datasource.jdbc.url is set — don't hand-wire a local Postgres for local iteration unless the repo has opted out.quarkus.hibernate-orm.schema-management.strategy=none (or validate); this property was renamed from quarkus.hibernate-orm.database.generation in 3.23 — use the current name unless the repo is pinned to an older Quarkus.POST /tasks creating a task:
// resource (boundary)
@Path("/tasks")
public class TaskResource {
private final TaskService service;
public TaskResource(TaskService service) { this.service = service; }
@POST
public Response create(@Valid CreateTaskRequest req) {
Task t = service.create(req.title());
return Response.status(201).entity(TaskResponse.from(t)).build();
}
}
// service (plain, unit-testable without Quarkus)
@ApplicationScoped
public class TaskService {
private final TaskRepository repo;
public TaskService(TaskRepository repo) { this.repo = repo; }
@Transactional
public Task create(String title) {
Task t = Task.create(title); // domain enforces the <=200 invariant
repo.persist(t);
return t;
}
}
CreateTaskRequest is a record with @Size(max=200) String title. The <=200 invariant is ALSO enforced in Task.create so the rule holds even when called from a non-HTTP path.
@Inject on a field) — breaks plain unit testing.@Transactional on the resource instead of the service.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when the repository keeps its alerting in code, or a person asks for alerts outside TaskTrooper - PrometheusRule YAML, a Cloud Monitoring alert policy in Terraform, a Datadog monitor, each routed to TaskTrooper's alert ingest URL so it opens an incident here
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.