From ecc
Spring Boot 서비스를 위한 Java 코딩 표준입니다. 네이밍, 불변성, Optional 사용, stream, exception, generics, 프로젝트 레이아웃을 다룹니다.
npx claudepluginhub sam42-lab/everything-claude-code-krThis skill uses the workspace's default tool permissions.
Spring Boot 서비스에서 읽기 쉽고 유지보수 가능한 Java 17+ 코드를 위한 표준입니다.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Spring Boot 서비스에서 읽기 쉽고 유지보수 가능한 Java 17+ 코드를 위한 표준입니다.
public class MarketService {}
public record Money(BigDecimal amount, Currency currency) {}
private final MarketRepository marketRepository;
public Market findBySlug(String slug) {}
private static final int MAX_PAGE_SIZE = 100;
public record MarketDto(Long id, String name, MarketStatus status) {}
public class Market {
private final Long id;
private final String name;
}
Optional<Market> market = marketRepository.findBySlug(slug);
return market
.map(MarketResponse::from)
.orElseThrow(() -> new EntityNotFoundException("Market not found"));
List<String> names = markets.stream()
.map(Market::name)
.filter(Objects::nonNull)
.toList();
변환에는 streams를 쓰되, 너무 복잡한 중첩은 루프로 바꿔 명확성을 유지합니다.
MarketNotFoundException 같은 도메인 전용 예외를 만듭니다catch (Exception ex)를 남발하지 않습니다public <T extends Identifiable> Map<Long, T> indexById(Collection<T> items) { ... }
src/main/java/com/example/app/
config/
controller/
service/
repository/
domain/
dto/
util/
src/main/resources/
application.yml
src/test/java/... (main을 미러링)
private static final Logger log = LoggerFactory.getLogger(MarketService.class);
log.info("fetch_market slug={}", slug);
log.error("failed_fetch_market slug={}", slug, ex);
@Nullable을 받습니다@NotNull, @NotBlank 같은 Bean Validation으로 검증합니다코드는 의도적이고, 타입이 분명하며, 관측 가능해야 합니다. 마이크로 최적화보다 유지보수성을 우선합니다.