- GitHub 스타
- 1,061
- 파일
- 3
- 마지막 커밋
- 2026년 8월 26일
- 라이선스
- —
- 허용된 도구
- —
go-dev skill은 무엇을 하나요?
go-dev은(는) agent skill입니다. 명명 규칙, 에러 처리, 동시성 패턴 및 테스트 관행을 포함한 Go 개발 표준을 준수합니다.
skill의 SKILL.md에서 생성된 요약입니다.
go-dev skill 정보
이 SKILL은 업계 표준을 엄격히 준수하여 고품질의 Go 코드베이스를 유지할 수 있도록 지원합니다. 개발자는 .go, go.mod, go.sum 파일을 대상으로 특정 명명 규칙, 에러 처리 패턴 및 동시성 안전성을 강제하는 데 이 기능을 사용할 수 있습니다. 에이전트가 이 SKILL을 로드하면 Effective Go 및 Uber Go 가이드라인을 따르는지 확인하는 전문 리뷰어 역할을 수행합니다.
이 SKILL은 포맷팅을 위한 goimports, 정적 분석을 위한 go vet, 종합적인 검사를 위한 golangci-lint와 같은 필수 툴체인 명령어를 통합합니다. 또한 race detection 및 coverage 플래그를 포함한 go test를 활용하여 테스트 프로토콜을 관리합니다. 이러한 규칙을 적용함으로써 에이전트는 처리되지 않은 에러, 부적절한 goroutine 생명주기, 루프 내 비효율적인 문자열 연결과 같은 일반적인 실수를 방지하는 코드를 생성합니다. 또한 프로젝트를 cmd, internal, pkg와 같은 표준 디렉토리 구조로 구성하도록 돕고 util 또는 base와 같이 의미 없는 패키지 이름의 사용을 방지합니다.
agent가 수행할 수 있는 작업
- 1동시성 문제 감지goroutine이 context와 함께 관리되는지 확인하고 테스트 중 데이터 레이스를 점검합니다.
skill의 SKILL.md를 기반으로 작성되었습니다. 모든 사용 사례는 해당 문서의 인용구와 대조 확인되었습니다.
go-dev skill 설치 방법
각 명령은 skill 폴더를 클라이언트의 skills 디렉터리에 복사합니다. 클라이언트를 재시작하거나 새 세션을 시작하여 로드하세요.플러그인에 go-dev skill 설치
/plugin marketplace add doccker/cc-use-exp /plugin install cc-use-exp@cc-use-exp
Claude Code에 go-dev skill 설치
~/.claude/skills/go-dev/SKILL.md
$ npx degit doccker/cc-use-exp/skills/go-dev ~/.claude/skills/go-devClaude Code (project)에 go-dev skill 설치
.claude/skills/go-dev/SKILL.md
$ npx degit doccker/cc-use-exp/skills/go-dev .claude/skills/go-devCodex에 go-dev skill 설치
~/.agents/skills/go-dev/SKILL.md
$ npx degit doccker/cc-use-exp/skills/go-dev ~/.agents/skills/go-devGemini CLI에 go-dev skill 설치
~/.gemini/skills/go-dev/SKILL.md
$ npx degit doccker/cc-use-exp/skills/go-dev ~/.gemini/skills/go-devClaude.ai에 go-dev skill 설치
npx degit doccker/cc-use-exp/skills/go-dev go-dev && zip -r go-dev.zip go-dev # claude.ai → Customize → Skills → + → Create skill → Upload a skill → go-dev.zip
자동 검사
2026년 11월 15일에 실행됨전체 보고서 →아직 검증되지 않았습니다. 스킬은 점수 80, 심각한 발견 없음, 검사에 충분한 데이터가 필요합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능doccker/cc-use-exp/skills/go-dev is public and reachablegithub.com/doccker/cc-use-exp/tree/HEAD/skills/go-dev ↗통과
- 오픈 소스 라이선스 (OSI)No license결함 발견
- 최근 1년 내 커밋 또는 릴리스Last commit 2026-08-26github.com/doccker/cc-use-exp/commits ↗통과
- 스크립트에 다운로드 후 실행이나 자격 증명 탈취가 없음No scripts in the skill folder통과
- SKILL.md에 숨겨진 지침 없음No override phrases, safeguard switches, credential requests or hidden charactersgithub.com/doccker/cc-use-exp/blob/HEAD/skills/go-dev/SKILL. ↗통과
- 사전 허용 도구가 제한됨No pre-approved tools; the agent asks before using onegithub.com/doccker/cc-use-exp/blob/HEAD/skills/go-dev/SKILL. ↗통과
- SKILL.md가 Agent Skills 형식을 따름the description does not say when to use the skill; the description is only 30 charactersgithub.com/doccker/cc-use-exp/blob/HEAD/skills/go-dev/SKILL. ↗결함 발견
SKILL.md
GitHub에서 보기Go 开发规范
参考来源: Effective Go、Go Code Review Comments、uber-go/guide
工具链
goimports -w . # 格式化并整理 import
go vet ./... # 静态分析
golangci-lint run # 综合检查
go test -v -race -cover ./... # 测试(含竞态检测和覆盖率)
命名约定
| 类型 | 规则 | 示例 |
|---|---|---|
| 包名 | 小写单词,不用下划线 | user, orderservice |
| 变量/函数 | 驼峰命名,缩写词一致大小写 | userID, HTTPServer |
| 常量 | 导出用驼峰,私有可驼峰或全大写 | MaxRetryCount |
| 接口 | 单方法用方法名+er | Reader, Writer |
禁止: common, util, base 等无意义包名
import 顺序
import (
"context" // 标准库
"fmt"
"github.com/gin-gonic/gin" // 第三方库
"project/internal/model" // 项目内部
)
错误处理
必须处理错误,不能忽略:
// ✅ 好:添加上下文
if err != nil {
return fmt.Errorf("failed to query user %d: %w", userID, err)
}
// ❌ 差:忽略错误
result, _ := doSomething()
错误包装: 使用 %w 保留错误链,用 errors.Is() / errors.As() 检查
并发编程
基本原则:
- 优先使用 channel 通信
- 启动 goroutine 前考虑:谁来等待它?怎么停止它?
- 使用
context.Context控制生命周期
// ✅ 好:使用 context 控制
func process(ctx context.Context) error {
done := make(chan error, 1)
go func() { done <- doWork() }()
select {
case err := <-done:
return err
case <-ctx.Done():
return ctx.Err()
}
}
数据竞争: 使用 go test -race 检测
测试规范
// 表驱动测试
func TestAdd(t *testing.T) {
tests := []struct {
name string
a, b int
expected int
}{
{"positive", 1, 2, 3},
{"zero", 0, 0, 0},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Add(tt.a, tt.b)
if got != tt.expected {
t.Errorf("Add(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.expected)
}
})
}
}
性能优化
| 陷阱 | 解决方案 |
|---|---|
| 循环中拼接字符串 | 使用 strings.Builder |
| 未预分配 slice | make([]T, 0, cap) |
| N+1 查询 | 批量查询 + 预加载 |
| 无限制并发 | 使用 semaphore 或 worker pool |
| Raw SQL 别名用了保留字 | 避免 year_month/order/status/rank 等 MySQL 保留字做别名 |
# 性能分析
go test -cpuprofile=cpu.prof -bench=.
go tool pprof cpu.prof
项目结构
project/
├── cmd/ # 可执行文件入口
├── internal/ # 私有代码
│ ├── handler/
│ ├── service/
│ ├── repository/
│ └── model/
├── pkg/ # 公共代码
├── go.mod
└── go.sum
详细参考
| 文件 | 内容 |
|---|---|
references/go-style.md |
命名约定、错误处理、并发、测试、性能 |
references/date-time.md |
日期加减、账期计算、AddDate 溢出处理 |
📋 本回复遵循:
go-dev- [具体章节]
이 스킬의 파일
3go-dev skill 질문
Claude Code에 go-dev skill을 어떻게 설치하나요?
npx degit doccker/cc-use-exp/skills/go-dev ~/.claude/skills/go-dev를 실행합니다. Claude Code는 ~/.claude/skills(모든 프로젝트) 또는 .claude/skills(한 프로젝트)에서 skills를 로드하며, 설명이 작업과 일치할 때 skill을 사용합니다.
go-dev skill을 사용할 수 있는 클라이언트는 무엇인가요?
Agent Skills 형식을 읽는 모든 클라이언트(Claude Code, Codex, Gemini CLI, claude.ai(ZIP으로 업로드))가 사용할 수 있습니다. skill 내 스크립트는 클라이언트가 코드 실행을 허용하는 경우에만 실행됩니다.