Claude-skill-registry Database

Standards for database interaction, connection pooling, and repository patterns in Golang.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/database-hoangnguyen0403-agent-skills-standar" ~/.claude/skills/majiayu000-claude-skill-registry-database && rm -rf "$T"
manifest: skills/data/database-hoangnguyen0403-agent-skills-standar/SKILL.md
source content

Golang Database Standards

Priority: P0 (CRITICAL)

Principles

  • Prefer Raw SQL/Builders over ORMs: Go structs map well to SQL. ORMs (GORM) can obscure performance. Recommended:
    sqlc
    (type-safe SQL generation).
  • Repository Pattern: Abstract DB access behind interfaces in
    internal/port/
    (e.g.,
    UserRepository
    ).
  • Connection Pooling: Always configure
    SetMaxOpenConns
    ,
    SetMaxIdleConns
    ,
    SetConnMaxLifetime
    .
  • Transactions: Logic requiring ACID MUST use transactions. Pass
    context.Context
    everywhere.

Drivers

  • PostgreSQL:
    jackc/pgx
    (Prefer
    pgx/v5
    for performance and features).
  • MySQL:
    go-sql-driver/mysql
    .
  • SQLite:
    mattn/go-sqlite3
    or
    modernc.org/sqlite
    (pure Go).

Anti-Patterns

  • Global DB Connection: Do not use global
    var db *sql.DB
    . Inject it.
  • Ignoring Context: Always use
    db.QueryContext
    or
    db.ExecContext
    to handle timeouts.
  • Leaking Rows: ALWAYS
    defer rows.Close()
    and check
    rows.Err()
    .

References