리팩토링by affaan-m
코틀린 빌드 및 수정
코틀린/그레이들 빌드 오류, 컴파일 경고 및 의존성 문제를 점진적으로 수정합니다. 최소한의 정밀한 수정을 위해 kotlin-build-resolver 에이전트를 호출합니다.
한 줄 평가 — 다음 사람 도와주세요
언제 쓰나
코틀린 프로젝트에서 빌드 실패나 의존성 충돌이 발생했을 때 사용합니다.
SKILL.md
Lattice 한국어 번역 · 원본 affaan-m/everything-claude-code (841beea). 복사 → 저장하면 Claude Code가 인식합니다.
---
description: Kotlin/Gradle 빌드 오류, 컴파일러 경고 및 종속성 문제를 점진적으로 수정합니다. 최소한의 수술적 수정을 위해 kotlin-build-resolver 에이전트를 호출합니다.
---
# Kotlin 빌드 및 수정
이 명령은 **kotlin-build-resolver** 에이전트를 호출하여 최소한의 변경으로 Kotlin 빌드 오류를 점진적으로 수정합니다.
## 이 명령은 무엇을 하나요?
1. **진단 실행**: `./gradlew build`, `detekt`, `ktlintCheck` 실행
2. **오류 구문 분석**: 파일별로 그룹화하고 심각도별로 정렬
3. **점진적 수정**: 한 번에 하나의 오류
4. **각 수정 사항 확인**: 변경 후 빌드 다시 실행
5. **요약 보고**: 수정된 내용과 남아있는 내용 표시
## 언제 사용해야 하나요?
`/kotlin-build`는 다음과 같은 경우에 사용하세요.
- `./gradlew build`가 오류로 실패하는 경우
- Kotlin 컴파일러가 오류를 보고하는 경우
- `./gradlew detekt`가 위반 사항을 보고하는 경우
- Gradle 종속성 확인에 실패하는 경우
- 빌드를 중단시키는 변경 사항을 가져온 후
## 실행되는 진단 명령
```bash
# 주요 빌드 확인
./gradlew build 2>&1
# 정적 분석
./gradlew detekt 2>&1 || echo "detekt not configured"
./gradlew ktlintCheck 2>&1 || echo "ktlint not configured"
# 종속성 문제
./gradlew dependencies --configuration runtimeClasspath 2>&1 | head -100
# 캐시 또는 종속성 메타데이터가 의심될 때의 선택적 심층 새로 고침
./gradlew build --refresh-dependencies
```
## 예시 세션
````text
User: /kotlin-build
Agent:
# Kotlin 빌드 해결
## 초기 진단
```bash
$ ./gradlew build
e: src/main/kotlin/com/example/service/UserService.kt:25:15 Unresolved reference: UserRepository
e: src/main/kotlin/com/example/routes/UserRoutes.kt:42:9 Type mismatch: inferred type is String but Int was expected
e: src/main/kotlin/com/example/routes/UserRoutes.kt:58:5 'when' expression must be exhaustive
```
발견된 오류: 3
## 수정 1: 해결되지 않은 참조
파일: src/main/kotlin/com/example/service/UserService.kt:25
오류: Unresolved reference: UserRepository
원인: 누락된 가져오기
```kotlin
// 가져오기 추가됨
import com.example.repository.UserRepository
```
```bash
$ ./gradlew build
# 2개의 오류가 남아 있습니다.
```
## 수정 2: 타입 불일치
파일: src/main/kotlin/com/example/routes/UserRoutes.kt:42
오류: Type mismatch: inferred type is String but Int was expected
```kotlin
// 변경됨
val count = call.parameters["count"]
// 다음과 같이 변경
val count = call.parameters["count"]?.toIntOrNull()
?: return@get call.respond(HttpStatusCode.BadRequest, "Invalid count")
```
```bash
$ ./gradlew build
# 1개의 오류가 남아 있습니다.
```
## 수정 3: 완전하지 않은 When
파일: src/main/kotlin/com/example/routes/UserRoutes.kt:58
오류: 'when' expression must be exhaustive
```kotlin
// 누락된 분기 추가됨
when (user.role) {
Role.ADMIN -> handleAdmin(user)
Role.USER -> handleUser(user)
Role.MODERATOR -> handleModerator(user) // 추가됨
}
```
```bash
$ ./gradlew build
# 빌드 성공!
```
## 최종 확인
```bash
$ ./gradlew detekt
# 문제 없음
$ ./gradlew test
# 모든 테스트 통과
```
## 요약
| 지표 | 개수 |
|--------|------|
| 수정된 빌드 오류 | 3 |
| 수정된 Detekt 문제 | 0 |
| 수정된 파일 | 2 |
| 남은 문제 | 0 |
빌드 상태: PASS: SUCCESS
````
## 일반적으로 수정되는 오류
| 오류 | 일반적인 수정 |
|---|---|
| `Unresolved reference: X` | 가져오기 또는 종속성 추가 |
| `Type mismatch` | 타입 변환 또는 할당 수정 |
| `'when' must be exhaustive` | 누락된 sealed 클래스 분기 추가 |
| `Suspend function can only be called from coroutine` | `suspend` 수정자 추가 |
| `Smart cast impossible` | 로컬 `val` 또는 `let` 사용 |
| `None of the following candidates is applicable` | 인수 타입 수정 |
| `Could not resolve dependency` | 버전 수정 또는 리포지토리 추가 |
## 수정 전략
1. **먼저 빌드 오류 수정** - 코드가 컴파일되어야 합니다.
2. **두 번째로 Detekt 위반 수정** - 코드 품질 문제 수정
3. **세 번째로 ktlint 경고 수정** - 형식 지정 수정
4. **한 번에 하나의 수정** - 각 변경 사항 확인
5. **최소한의 변경** - 리팩터링하지 말고 그냥 수정
## 중지 조건
에이전트는 다음과 같은 경우 중지하고 보고합니다.
- 3번의 시도 후에도 동일한 오류가 지속되는 경우
- 수정으로 인해 더 많은 오류가 발생하는 경우
- 아키텍처 변경이 필요한 경우
- 외부 종속성이 누락된 경우
## 관련 명령
- `/kotlin-test` - 빌드 성공 후 테스트 실행
- `/kotlin-review` - 코드 품질 검토
- `verification-loop` skill - 전체 검증 루프
## 관련 항목
- 에이전트: `agents/kotlin-build-resolver.md`
- 스킬: `skills/kotlin-patterns/`필요한 도구
호버하면 설명CC
설치 + 호출 (2단계)
Claude Code CLI 기준.
- 1
SKILL.md 저장
아래 버튼으로 복사 → 다음 경로로 저장.
~/.claude/skills/everything-claude-code-130/SKILL.md - 2
호출
Claude Code 채팅창에서 자연어로 부르면 자동 발동:
예) 코틀린 프로젝트에서 빌드 실패나 의존성 충돌이 발생했을 때 사용합니다
트리거가 안 잡히면 SKILL.md의
description줄에 더 구체적인 한국어 키워드를 추가해보세요.