go-devlisted
Install: claude install-skill iamtatsuki05/dotfiles
# Go開発スキル
Goコードの実装、テスト、デバッグ、リファクタリングを効率的に行うためのガイド。
## 実装前の必須確認
**go.mod と Makefile を必ず確認する。** プロジェクトのGoバージョン、依存関係、ビルド手順を把握する。
確認項目:
- `go.mod`: Goバージョン(1.21+推奨)、依存ライブラリ
- `Makefile`: ビルド、テスト、lint コマンド
- `.golangci.yml`: linter設定(存在する場合)
- 既存の package 構成、テストヘルパー、エラー処理、context の使い方
- `Makefile` がない場合は `go test ./...`、`go test ./path`、`go vet ./...` など標準コマンドを確認する
### プロジェクト構造
既存プロジェクトの構成に従う。新規プロジェクトは [references/coding-standards.md](references/coding-standards.md) の標準レイアウト(`cmd/` + `internal/`)を使う。
## コーディング規約
詳細なコード例は [references/coding-standards.md](references/coding-standards.md) を参照。判断基準:
- **インターフェース**: 提供側ではなく使用側の package で必要最小限のメソッドだけ定義する。準拠はコンパイル時に `var _ UserRepository = (*userRepository)(nil)` で確認する。
- **エラー**: `fmt.Errorf("find user %d: %w", id, err)` のように `%w` でラップして文脈を付与する。判定は文字列比較ではなく `errors.Is` / `errors.As` を使う。
- **命名**: パッケージ名は小文字1語でディレクトリ名と一致させる。stuttering(`user.UserService` 等)を避ける。
- **golangci-lint 対応**(errcheck / govet / revive 等)で迷ったら references/coding-standards.md の該当節を参照する。
## テスト
実装例(テーブル駆動、モック、Golden files、ベンチマーク、統合テスト)は [references/testing-guide.md](references/testing-guide.md) を参照。判断基準:
- テーブル駆動テスト + `t.Run` によるサブテストを既定とする。
- `t.Parallel()` を使う場合は、テストケース間の共有状態(グローバル変数、テストデータの使い回し)に注意する。並行系のコードは `go test -race` で確認する。
- テストヘルパーには `t.Helper()` を付け、失敗位置を呼び出し側で報告させる。
## 高度なパターン
詳細なコード例(context、errgroup、セマフォ、ワーカープール、functional options、リトライ等)は [references/common-patterns.md](references/common-patterns.md) を参照。判断基準:
- **context**: 外部 I/O やブロ