코드리뷰리팩토링by affaan-m
Go 빌드 및 고치기
Go 빌드 오류, go vet 경고, 린터 이슈를 점진적으로 고칩니다.
한 줄 평가 — 다음 사람 도와주세요
언제 쓰나
Go 프로젝트에서 빌드 오류나 경고가 발생할 때 사용합니다.
SKILL.md
Lattice 한국어 번역 · 원본 affaan-m/everything-claude-code (841beea). 복사 → 저장하면 Claude Code가 인식합니다.
---
description: Go 빌드 오류, go vet 경고 및 린터 문제를 점진적으로 수정합니다. 최소한의 수술적 수정을 위해 go-build-resolver 에이전트를 호출합니다.
---
# Go 빌드 및 수정
이 명령어는 **go-build-resolver** 에이전트를 호출하여 최소한의 변경으로 Go 빌드 오류를 점진적으로 수정합니다.
## 이 명령어는 무엇을 하나요?
1. **진단 실행**: `go build`, `go vet`, `staticcheck` 실행
2. **오류 파싱**: 파일별로 그룹화하고 심각도 순으로 정렬
3. **점진적 수정**: 한 번에 하나의 오류
4. **각 수정 사항 확인**: 변경 후 빌드 재실행
5. **요약 보고**: 수정된 내용과 남은 내용 표시
## 언제 사용하나요?
`/go-build`는 다음 경우에 사용하세요:
- `go build ./...`에서 오류가 발생하는 경우
- `go vet ./...`에서 문제가 보고되는 경우
- `golangci-lint run`에서 경고가 표시되는 경우
- 모듈 종속성이 손상된 경우
- 빌드를 중단시키는 변경 사항을 가져온 후
## 실행되는 진단 명령어
```bash
# 주요 빌드 확인
go build ./...
# 정적 분석
go vet ./...
# 확장 린팅 (사용 가능한 경우)
staticcheck ./...
golangci-lint run
# 모듈 문제
go mod verify
go mod tidy -v
```
## 예시 세션
```text
User: /go-build
Agent:
# Go 빌드 해결
## 초기 진단
```bash
$ go build ./...
internal/service/user.go:25:15: undefined: UserRepository
internal/handler/api.go:42:9: cannot use x (type string) as type int
internal/handler/api.go:58:2: missing return at end of function
```
발견된 오류: 3
## 수정 1: 정의되지 않은 식별자
파일: internal/service/user.go:25
오류: undefined: UserRepository
원인: import 누락
```go
// import 추가됨
import "project/internal/repository"
// 변경됨
var repo UserRepository
// ~에게
var repo repository.UserRepository
```
```bash
$ go build ./...
# 2개의 오류가 남았습니다.
```
## 수정 2: 타입 불일치
파일: internal/handler/api.go:42
오류: cannot use x (type string) as type int
```go
// 변경됨
count := params.Get("count")
// ~에게
countStr := params.Get("count")
count, _ := strconv.Atoi(countStr)
```
```bash
$ go build ./...
# 1개의 오류가 남았습니다.
```
## 수정 3: 누락된 반환문
파일: internal/handler/api.go:58
오류: missing return at end of function
```go
func GetUser(id string) (*User, error) {
if id == "" {
return nil, ErrInvalidID
}
user := findUser(id)
// 누락된 반환문 추가됨
return user, nil
}
```
```bash
$ go build ./...
# 빌드 성공!
```
## 최종 확인
```bash
$ go vet ./...
# 문제 없음
$ go test ./...
ok project/internal/service 0.015s
ok project/internal/handler 0.023s
```
## 요약
| 메트릭 |
|--------|
| 빌드 오류 수정 |
| Vet 경고 수정 |
| 수정된 파일 |
| 남은 문제 |
빌드 상태: PASS: SUCCESS
## 일반적인 수정 오류
| 오류 |
|-------------|
| `undefined: X` | Import 추가 또는 오타 수정 |
| `cannot use X as Y` | 타입 변환 또는 할당 수정 |
| `missing return` | return 문 추가 |
| `X does not implement Y` | 누락된 메서드 추가 |
| `import cycle` | 패키지 구조 변경 |
| `declared but not used` | 변수 제거 또는 사용 |
| `cannot find package` | `go get` 또는 `go mod tidy` |
## 수정 전략
1. **빌드 오류 우선** - 코드는 컴파일되어야 합니다.
2. **Vet 경고 두 번째** - 의심스러운 구문을 수정합니다.
3. **Lint 경고 세 번째** - 스타일 및 모범 사례
4. **한 번에 하나의 수정** - 각 변경 사항을 확인합니다.
5. **최소 변경** - 리팩토링하지 말고 그냥 수정하세요.
## 중지 조건
에이전트는 다음 경우에 중지하고 보고합니다:
- 3번 시도 후에도 동일한 오류가 지속되는 경우
- 수정 시 더 많은 오류가 발생하는 경우
- 아키텍처 변경이 필요한 경우
- 외부 종속성이 누락된 경우
## 관련 명령어
- `/go-test` - 빌드 성공 후 테스트 실행
- `/go-review` - 코드 품질 검토
- `verification-loop` skill - 전체 검증 루프
## 관련
- 에이전트: `agents/go-build-resolver.md`
- 스킬: `skills/golang-patterns/`필요한 도구
호버하면 설명CC
설치 + 호출 (2단계)
Claude Code CLI 기준.
- 1
SKILL.md 저장
아래 버튼으로 복사 → 다음 경로로 저장.
~/.claude/skills/everything-claude-code-go-117/SKILL.md - 2
호출
Claude Code 채팅창에서 자연어로 부르면 자동 발동:
예) Go 프로젝트에서 빌드 오류나 경고가 발생할 때 사용합니다
트리거가 안 잡히면 SKILL.md의
description줄에 더 구체적인 한국어 키워드를 추가해보세요.