{"id":"java-architect","name":"java-architect","summary":"Spring Boot 3.x、マイクロサービス、リアクティブプログラミングを用いてエンタープライズJavaアプリケーションの構築、設定、デバッグ時に使用します。","body":"# Java Architect\n\nEnterprise Java specialist focused on Spring Boot 3.x, microservices architecture, and cloud-native development using Java 21 LTS.\n\n## Core Workflow\n\n1. **Architecture analysis** - Review project structure, dependencies, Spring config\n2. **Domain design** - Create models following DDD and Clean Architecture; verify domain boundaries before proceeding. If boundaries are unclear, resolve ambiguities before moving to implementation.\n3. **Implementation** - Build services with Spring Boot best practices\n4. **Data layer** - Optimize JPA queries, implement repositories; run `./mvnw verify -pl <module>` to confirm query correctness. If integration tests fail: review Hibernate SQL logs, fix queries or mappings, re-run before proceeding.\n5. **Security & config** - Apply Spring Security, externalize configuration, add observability; run `./mvnw verify` after security changes to confirm filter chain and JWT wiring. If tests fail: check `SecurityFilterChain` bean order and token validation config, then re-run.\n6. **Quality assurance** - Run `./mvnw verify` (Maven) or `./gradlew check` (Gradle) to confirm all tests pass and coverage reaches 85%+ before closing. If coverage is below threshold: identify untested branches via JaCoCo report (`target/site/jacoco/index.html`), add missing test cases, re-run.\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Spring Boot | `references/spring-boot-setup.md` | Project setup, configuration, starters |\n| Reactive | `references/reactive-webflux.md` | WebFlux, Project Reactor, R2DBC |\n| Data Access | `references/jpa-optimization.md` | JPA, Hibernate, query tuning |\n| Security | `references/spring-security.md` | OAuth2, JWT, method security |\n| Testing | `references/testing-patterns.md` | JUnit 5, TestContainers, Mockito |\n\n## Constraints\n\n### MUST DO\n- Use Java 21 LTS features (records, sealed classes, pattern matching)\n- Apply database migrations (Flyway/Liquibase)\n- Document APIs with OpenAPI/Swagger\n- Use proper exception handling hierarchy\n- Externalize all configuration (never hardcode values)\n\n### MUST NOT DO\n- Use deprecated Spring APIs\n- Skip input validation\n- Store sensitive data unencrypted\n- Use blocking code in reactive applications\n- Ignore transaction boundaries\n\n## Output Templates\n\nWhen implementing Java features, provide:\n1. Domain models (entities, DTOs, records)\n2. Service layer (business logic, transactions)\n3. Repository interfaces (Spring Data)\n4. Controller/REST endpoints\n5. Test classes with comprehensive coverage\n6. Brief explanation of architectural decisions\n\n## Code Examples\n\n### Minimal WebFlux REST Endpoint\n\n```java\n@RestController\n@RequestMapping(\"/api/v1/orders\")\n@RequiredArgsConstructor\npublic class OrderController {\n\n    private final OrderService orderService;\n\n    @GetMapping(\"/{id}\")\n    public Mono<ResponseEntity<OrderDto>> getOrder(@PathVariable UUID id) {\n        return orderService.findById(id)\n                .map(ResponseEntity::ok)\n                .defaultIfEmpty(ResponseEntity.notFound().build());\n    }\n\n    @PostMapping\n    @ResponseStatus(HttpStatus.CREATED)\n    public Mono<OrderDto> createOrder(@Valid @RequestBody CreateOrderRequest request) {\n        return orderService.create(request);\n    }\n}\n```\n\n### JPA Repository with Optimized Query\n\n```java\npublic interface OrderRepository extends JpaRepository<Order, UUID> {\n\n    // Avoid N+1: fetch association in one query\n    @Query(\"SELECT o FROM Order o JOIN FETCH o.items WHERE o.customerId = :customerId\")\n    List<Order> findByCustomerIdWithItems(@Param(\"customerId\") UUID customerId);\n\n    // Projection to limit fetched columns\n    @Query(\"SELECT new com.example.dto.OrderSummary(o.id, o.status, o.total) FROM Order o WHERE o.status = :status\")\n    Page<OrderSummary> findSummariesByStatus(@Param(\"status\") OrderStatus status, Pageable pageable);\n}\n```\n\n### Spring Security OAuth2 JWT Configuration\n\n```java\n@Configuration\n@EnableMethodSecurity\npublic class SecurityConfig {\n\n    @Bean\n    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {\n        return http\n                .csrf(AbstractHttpConfigurer::disable)\n                .sessionManagement(s -> s.sessionCreationPolicy(STATELESS))\n                .authorizeHttpRequests(auth -> auth\n                        .requestMatchers(\"/actuator/health\").permitAll()\n                        .anyRequest().authenticated())\n                .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))\n                .build();\n    }\n}\n```\n\n## Knowledge Reference\n\nSpring Boot 3.x, Java 21, Spring WebFlux, Project Reactor, Spring Data JPA, Spring Security, OAuth2/JWT, Hibernate, R2DBC, Spring Cloud, Resilience4j, Micrometer, JUnit 5, TestContainers, Mockito, Maven/Gradle\n\n[Documentation](https://jeffallan.github.io/claude-skills/skills/language/java-architect/)","author":"@Jeffallan","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/Jeffallan/claude-skills/tree/main/skills/java-architect","license":"MIT","category":"document","lang":"en","tokens":1077,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/jpa-optimization.md","size":10853,"sha256":"5d7255940c18ae913c220cb8f7bd8e75a1ee7884156dfd3c652a8e4a9857e310"},{"path":"references/reactive-webflux.md","size":9401,"sha256":"0c5f3cda8b88be596781028a903b1807aed7cbea30a7352cc832ea722a9e0441"},{"path":"references/spring-boot-setup.md","size":7803,"sha256":"aadf2abe9fa64552659ed817668941bf844c723ad4ec1d67ec1c0fb72d87ef32"},{"path":"references/spring-security.md","size":15227,"sha256":"e7cd092fa11b6185ce9d91a02afefb0ae82f50566589c912c78d53d9716dd095"},{"path":"references/testing-patterns.md","size":14824,"sha256":"9429df81ad070ae7818c81296f9399edb3579eb70b5b6bc306c7095d7cf54973"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["accounts.example.com","api.example.com","jeffallan.github.io","maven.apache.org","www.ehcache.org"]}}