跳到正文
cccskills
免费在 GitHub 公开

golang-database

Implement Go database access with context, pool tuning, transaction boundaries, and repository seams. Use when building repositories, tuning `sql.DB` or `pgx`, or reviewing DB transaction flow in Go.

中文简介正在准备中。当前显示原文说明。

实测评分 未实测

查看安装方法

包含的文件(4)

  • SKILL.md3.2 KB
  • evals/evals.json1.8 KB
  • references/connection-tuning.md1.6 KB
  • references/repository-pattern.md1.8 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Golang Database

Priority: P0 (CRITICAL)

Rules

  • Prefer explicit SQL or generated query layers when performance and shape matter.
  • Configure the pool; defaults are rarely enough for real traffic.
  • Pass context.Context as the first argument to every query path.
  • Strict Parameterization: Always use parameterized placeholders (?, $1); never interpolate user strings into queries.
  • Dynamic IN Batching: Generate safe placeholders (strings.Repeat("?,", len(ids))) or sqlx.In and partition lists into chunks ≤ 1,000 items to avoid driver parameter limits.
  • Explicit Column Aliasing: Always alias duplicate column names in multi-table queries (e.g. m.code AS code); drivers map by name and silently collide on joins.
  • Transaction Boundaries: Manage transactions at the service layer using withTx(ctx, db, fn) with mandatory defer tx.Rollback(). Keep transactions short and focused on writes.
  • Streaming & Keyset Pagination: Stream large result sets using rows.Next() directly into models to prevent unbounded memory allocation.

Recipe

  1. Choose the access layer: database/sql, pgx, sqlx, sqlc, or ORM only if standardized.
  2. Tune the pool: max open, max idle, connection lifetime, and idle lifetime.
  3. Hide storage details behind repository methods or query services.
  4. Close rows and inspect rows.Err().
  5. Wrap multi-step writes in one transaction using a withTx helper with defer tx.Rollback().
  6. Chunk large slice lookups: partition slices into batches of ≤ 1,000 before running IN queries.

Verify

  • Query methods accept context.Context.
  • Pool settings are explicit.
  • Rows are closed and iteration errors checked (rows.Err()).
  • Large IN (...) queries chunk parameters into batches of ≤ 1,000.
  • Joined queries use explicit column aliases without SELECT *.
  • Transaction scope matches one business action and uses defer tx.Rollback().
  • Retry/idempotency policy is clear for contested writes.

Anti-Patterns

  • No global db var: inject DB connection via constructor.
  • No context-less queries: use QueryContext/ExecContext; bare queries ignore timeouts.
  • No string concatenation in SQL: never build dynamic clauses with fmt.Sprintf or +.
  • No unbounded IN lists: avoid passing un-chunked slices with > 1,000 items into a single query.
  • No SELECT * on Joins: avoid unaliased duplicate column names across joined tables.
  • No leaked rows: always defer rows.Close() and check rows.Err().
  • No transaction split-brain: handler, repo, and service cannot each open their own transaction for one unit of work.

References

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Upgrade an Android project to Android Gradle Plugin (AGP) 9. Use when migrating to AGP 9, updating Gradle build files, migrating to built-in Kotlin, or adopting the new AGP DSL.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Apply Clean Architecture layering, modularization, and Unidirectional Data Flow in Android projects. Use when setting up project structure, placing code in layers, configuring feature/core modules, or implementing UDF patterns; defer Compose state and ViewModel/StateFlow implementation to their specific skills.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Implement WorkManager and background processing correctly on Android. Use when creating Worker classes, scheduling tasks, choosing between WorkManager and Foreground Services, or setting up Hilt in workers; defer FCM and notification delivery to android-notifications.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Build high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects; defer deep-link and navigation routing to android-navigation.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Migrate an Android XML View to Jetpack Compose following a structured 10-step workflow. Use when converting XML layouts to Compose, setting up Compose in an existing View-based project, or incrementally adopting Compose.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Write correct coroutine scopes, lifecycle collection, and dispatcher injection in Android production code. Use for suspend functions, coroutine scopes, and dispatcher mechanics; defer ViewModel StateFlow/LiveData architecture, Fragment lifecycle recipes, persistence/notifications, and unit-test recipes to their specific skills.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

查看 HoangNguyen0403 的全部技能

报告此技能的问题