本文へ移動
cccskills
無料GitHub で公開

go-backend-best-practices

Go backend patterns from Uber style and standard layout

インストール方法を見る

含まれるファイル(1)

  • SKILL.md3.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Purpose

Apply Go backend patterns for building production-ready services.

Rules

1. Project Structure (Standard Layout)

layout: "cmd/{server/main.go} + internal/{handler/,service/,repository/,model/} + pkg/{shared/} + api/{openapi.yaml} + configs/ + scripts/"

directories:
  cmd: Main applications (one per binary)
  internal: Private application code
  pkg: Library code safe for external use
  api: API definitions (OpenAPI, protobuf)
  configs: Configuration files
  scripts: Build and CI scripts

Reference: guides/go-backend/project-layout.md

2. Error Handling (Uber Style)

principles:
  - Wrap errors with context using %w
  - Handle errors once (don't log AND return)
  - Use sentinel errors for specific conditions
  - Name error variables with Err prefix

patterns:
  sentinel: "var ErrNotFound = errors.New(\"not found\")"
  wrapping: "fmt.Errorf(\"getUser %s: %w\", id, err)"
  checking: "errors.Is(err, ErrNotFound)"

Reference: guides/go-backend/uber-style.md

3. Concurrency (Uber Style)

channels:
  size: "Use 0 (unbuffered) or 1 only"
  larger: "Requires careful review"

goroutines:
  never: fire-and-forget
  always: wait for completion or manage lifecycle
  patterns: "sync.WaitGroup + error channel for parallel work; context.Context for cancellation"

Reference: guides/go-backend/uber-style.md

4. HTTP Server

structure:
  handler: HTTP layer (request/response)
  service: Business logic
  repository: Data access

patterns:
  dependency_injection: "Handler struct with service field, constructor NewXxxHandler()"
  router: "chi.NewRouter() with middleware (Logger, Recoverer) and versioned routes"
  error_mapping: "errors.Is() to map domain errors to HTTP status codes"

Reference: guides/go-backend/uber-style.md

5. Dependency Injection

approach: constructor injection
avoid: global variables
pattern: "Struct with dependencies as fields, New* constructor functions, wire up in main()"

Reference: guides/go-backend/uber-style.md

6. Configuration

approach:
  - Use environment variables
  - Validate at startup
  - Group related settings
pattern: "Config struct with nested typed configs, env struct tags, Parse at startup"

Reference: guides/go-backend/uber-style.md

7. Testing

patterns:
  table_driven: for comprehensive coverage
  interfaces: for mocking
  parallel: for speed
  tools: "gomock for mocks, cmp.Diff for assertions"

Reference: guides/go-backend/uber-style.md

8. Performance (Uber Style)

guidelines:
  - Use strconv over fmt for conversions
  - Pre-allocate slices with known capacity
  - Avoid repeated string-to-byte conversions
  - Copy slices/maps at boundaries

Reference: guides/go-backend/uber-style.md

Application

When writing Go backend code:

  1. Always use standard project layout
  2. Always wrap errors with context
  3. Never fire-and-forget goroutines
  4. Use constructor injection
  5. Use table-driven tests
  6. Handle errors once
  7. Copy data at boundaries
  8. Validate config at startup

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Pre-action boundary checking — validates agent tool calls against declared capabilities and task contracts

日本語の概要は準備中です。原文の説明を表示しています。

baekenough/second-brain152026年10月8日 更新

Auto-detect project context and optimize harness — deactivate unused agents/skills, suggest missing experts, generate project profile

日本語の概要は準備中です。原文の説明を表示しています。

baekenough/second-brain152026年10月8日 更新

Adversarial code review using attacker mindset — trust boundary, attack surface, business logic, and defense evaluation

日本語の概要は準備中です。原文の説明を表示しています。

baekenough/second-brain152026年10月8日 更新

Apache Airflow best practices for DAG authoring, testing, and production deployment

日本語の概要は準備中です。原文の説明を表示しています。

baekenough/second-brain152026年10月8日 更新

Alembic migration patterns for naming conventions, safety checks, expand-contract, env.py configuration, and CI integration

日本語の概要は準備中です。原文の説明を表示しています。

baekenough/second-brain152026年10月8日 更新

Pre-routing ambiguity analysis — scores request clarity and asks clarifying questions when needed (inspired by ouroboros)

日本語の概要は準備中です。原文の説明を表示しています。

baekenough/second-brain152026年10月8日 更新

baekenough のスキルをすべて見る

このスキルの問題を報告する