golang-design-patterns
Idiomatic Golang design patterns — functional options, constructors, error flow and cascading, resource management and lifecycle, graceful shutdown, resilience, architecture, dependency injection, data handling, streaming, and more. Apply when explicitly choosing between architec
供给资产档案
编程与开发 Agent
代码审查、仓库分析、测试、CI、GitHub、DevOps 与开发工作流 Skill。
场景
GitHub automation
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
适配 Agent
Claude Code + OpenAI Agents + CLI
适用于 Codex、Claude Code、Cursor、CLI 或自定义 Agent。
安装
就绪
npx skills add samber/cc-skills-golang --skill golang-design-patterns
维护状态
新鲜
距上次推送 1 天
风险
需审查
Dependency or permission surface needs review
GitHub 质量
3.0K
82/100 质量 · 78/100 信任
覆盖标签
审查说明
Dependency or permission surface needs review · Permission surface may require sandboxing
Agent 采用评分卡
一眼查看信任、审计与安装准备度
这些分数综合公开仓库元数据、OpenAgentSkill 审查信号、维护新鲜度与安装准备度。它用于候选筛选,不替代人工审查。
质量
强可靠的选择,值得加入生产工作流候选列表。
信任
仅限沙盒有用但信任信号不足或混杂的候选项。在结果闭环证明任务匹配前,请保持在隔离工作区内使用。
审计
需审查对安装准备度、安全元数据、维护情况与采用风险的机器可读审查。
OpenAgentSkill 信任评分 v5
安装前需人工审查
仅在沙盒中运行,并在用于真实工作前比较接近的替代方案。
Stars
3.0K 个 GitHub Stars
仓库活跃度
3.0K 个 Star,197 个 Fork
维护状态
距上次推送 1 天
许可证
MIT
安装
npx skills add samber/cc-skills-golang --skill golang-design-patterns
安装安全性
标准软件包或运行时安装路径
权限范围
shell or command execution, filesystem or document access
Agent 结果
暂未有 Agent 结果数据
文档
README/SKILL.md 上下文充分
风险摘要
生产前审查
- Financial research output is not financial advice; require human review before any live investment decision.
- Quality score needs review
- Permission surface needs review: shell or command execution, filesystem or document access
- Dependency/runtime risk: command execution surface, external package install surface
安装准备度
安装路径可用
- 安装路径可用
- 仓库证据可用
- 已声明许可证
- 暂无 Agent 验证结果证据
Agent 可读元数据
这个 Skill 的机器可读决策数据。
使用此区块或内嵌 JSON 判断 Agent 是否应安装该 Skill、选择替代方案,或先请求人工审查。
适用任务
- GitHub automation 工作流
- Claude Code 团队
- 重视 GitHub 采用信号的团队
- Inspect repository metadata
适用 Agent
安装决策
- 命令
- npx skills add samber/cc-skills-golang --skill golang-design-patterns
- 策略
- 审查
- 人工审查
- 是
信任与风险
- 信任
- 70/100
- 审计
- 84/100
- 风险级别
- 需审查
结果闭环
- 端点
- /api/agent/outcome
- 事件 ID
- resolve
- 结果
- 5
不适用场景
- 需要厂商支持 SLA 的团队
- 没有内部安全审查的高合规环境
- 当前元数据中未发现重大风险信号
- 高风险权限提示:Shell 或命令执行
- Dependency or permission surface needs review
替代 Skill
Last30days Skill
53.5K Stars
npx skills add mvanhorn/last30days-skill -g
替代 Skill
Academic Research Skills
38.4K Stars
npx skills add Imbad0202/academic-research-skills
替代 Skill
GPT Researcher
28.0K Stars
npx skills add assafelovic/gpt-researcher
替代 Skill
DeepResearch
19.8K Stars
npx skills add Alibaba-NLP/DeepResearch
Agent 安全 v2
52/100 · 避免自动安装
Sparse or mixed signals. Useful for discovery, but not for autonomous installation.
Test manually in an isolated workspace and compare against safer alternatives.
高
Shell 或命令执行
Skill 元数据引用了终端、CLI、Shell、子进程或命令执行工作流。
中
网络访问
Skill 可能访问远程页面、API、仓库或外部服务。
中
文件系统访问
Skill 可能读取或写入项目文件、文档、生成产物或本地工作区状态。
中
数据库访问
Skill 可能检查 Schema、查询数据库或处理持久化存储。
- 高风险权限提示:Shell 或命令执行
- Dependency or permission surface needs review
安装目标
在你的 Agent 工作流中安装此 Skill
通过公开安装端点获取命令、安全清单、目标提示词和该 Skill 的规范链接。
OpenAgentSkill CLI
Resolve policy, run the source installer safely, and report a verified install receipt.
$ npx --yes https://github.com/Leon-Drq/openagentskill/releases/download/cli-v0.2.1/openagentskill-0.2.1.tgz install samber-golang-design-patternsAgent 解析计划
让 Agent 在安装前验证匹配度。
Resolve API 返回首选 Skill、替代方案、安全策略、审计说明、安装目标和可直接执行的提示词,无需抓取此页面。
打开 JSON
/api/agent/resolve?task=Use%20golang-design-patterns%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve 文本
/api/agent/resolve?task=Use%20golang-design-patterns%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
安装交接
/api/skills/samber-golang-design-patterns/install
Agent 应检查
- 从 Resolve API 检查任务匹配与替代方案。
- 检查审计评分、信任评分和安全策略警告。
- 检查 Codex、Claude Code、Cursor 或 CLI 的安装目标兼容性。
复制提示词
Task: Use golang-design-patterns in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20golang-design-patterns%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/samber-golang-design-patterns/install
Install command: npx skills add samber/cc-skills-golang --skill golang-design-patterns
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent 交接
把安装路径交给 Agent,而不是再给一个目录页。
通过公开安装端点获取命令、安全清单、目标提示词和该 Skill 的规范链接。
安装交接
/api/skills/samber-golang-design-patterns/install
LLM 文本格式
/api/skills/samber-golang-design-patterns/install?format=text
寻找替代方案
/api/skills/search?q=golang-design-patterns&limit=3
Agent 提示词
Use golang-design-patterns for this task. Review https://www.openagentskill.com/api/skills/samber-golang-design-patterns/install, then install with: npx skills add samber/cc-skills-golang --skill golang-design-patternsRegistry 元数据
用于自动选择 Skill 的 Agent 可读档案。
本页通过 Registry API 提供相同的决策、信任、审计、场景和安装信号,让 Agent 无需抓取界面即可排序。
Agent 决策面板
适合 GitHub automation 的首选
将其作为优先候选,再在你的 Agent 环境中验证 README 与安装路径。
栈中角色
首选
主要匹配
GitHub automation
信任标签
可用于生产
安装路径
命令已就绪
适用场景
- GitHub automation 工作流
- Claude Code 团队
- 重视 GitHub 采用信号的团队
证据
- 3,022 个 GitHub Stars
- 仓库近期活跃
- 已提供安装命令或 GitHub 仓库
- 82/100 质量档案
- 4 个 OpenAgentSkill 交互事件
先审查
- 当前元数据中未发现重大风险信号
实施路径
- 1在沙盒 Agent 中安装它,并端到端完成一次GitHub automation任务。
- 2Compare output quality, latency, and failure behavior against at least one alternative.
- 3Promote it into production only after reviewing repository permissions, license, and maintenance signals.
信任档案
仅限沙盒
有用但信任信号不足或混杂的候选项。在结果闭环证明任务匹配前,请保持在隔离工作区内使用。
GitHub 采用度
通过3.0K 个 GitHub Stars
Star/Fork 活跃度
信息3.0K 个 Star,197 个 Fork; 当前元数据中没有议题活跃度信息
近期维护
通过距上次推送 1 天
许可证清晰度
通过MIT
积极信号
- AI 审查已通过
- 安装路径可用
- 仓库证据可用
- 近期维护的仓库
- 有意义的 GitHub 采用信号
- 安装命令未发现明显高风险模式
- 结果闭环已就绪,但需要首次真实 Agent 运行
安装前审查
- Financial research output is not financial advice; require human review before any live investment decision.
- Quality score needs review
- Permission surface needs review: shell or command execution, filesystem or document access
- Dependency/runtime risk: command execution surface, external package install surface
- Permission surface: shell or command execution, filesystem or document access
- 暂未有真实 Agent 结果报告
- 无人值守安装前需要人工审查
建议操作
仅在沙盒中运行,并在用于真实工作前比较接近的替代方案。
质量档案
强 适用于 Agent 工作流的候选
可靠的选择,值得加入生产工作流候选列表。
工作流匹配
在这些场景使用此 Skill
Manage repositories
GitHub automation
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
Build and ship code
Coding agents
I need a coding agent that can understand a repository, edit code, and review pull requests.
Investigate faster
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
工作流匹配
加入完整工作流
Inspect, patch, and verify code
Coding review agent
A workflow for software agents that inspect repositories, review pull requests, generate tests, and turn findings into shippable patches.
Find, compare, and synthesize
Research report agent
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Ingest, retrieve, and cite
RAG knowledge base
A workflow for document-heavy agents that ingest files, create searchable knowledge, retrieve relevant context, and answer with grounded sources.
替代方案短名单
安装前对比
可能适合该任务的相近 Skill。
Last30days Skill
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
Academic Research Skills
Academic Research Skills for Claude Code: research → write → review → revise → finalize
GPT Researcher
Run autonomous deep research over web and local sources
DeepResearch
Tongyi Deep Research, the Leading Open-source Deep Research Agent
概览
--- name: golang-design-patterns description: "Idiomatic Golang design patterns — functional options, constructors, error flow and cascading, resource management and lifecycle, graceful shutdown, resilience, architecture, dependency injection, data handling, streaming, and more. Apply when explicitly choosing between architectural patterns, implementing functional options, designing constructor APIs, setting up graceful shutdown, applying resilience patterns, or asking which idiomatic Go pattern fits a specific problem." user-invocable: true license: MIT compatibility: Designed for Claude Code, Codex or similar harness, and for projects using Golang. metadata: author: samber version: "1.2.0" openclaw: emoji: "🏗" homepage: https://github.com/samber/cc-skills-golang requires: bins: - go install: [] allowed-tools: Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) Agent AskUserQuestion paths: - "**/*.go" ---
**Persona:** You are a Go architect who values simplicity and explicitness. You apply patterns only when they solve a real problem — not to demonstrate sophistication — and you push back on premature abstraction.
**Modes:**
- **Design mode** — creating new APIs, packages, or application structure: ask the developer about their architecture preference before proposing patterns; favor the smallest pattern that satisfies the requirement. - **Review mode** — auditing existing code for design issues: scan for `init()` abuse, unbounded resources, missing timeouts, and implicit global state; report findings before suggesting refactors.
> **Community default.** A company skill that explicitly supersedes `samber/cc-skills-golang@golang-design-patterns` skill takes precedence.
# Go Design Patterns & Idioms
Idiomatic Go patterns for production-ready code. For error handling details see the `samber/cc-skills-golang@golang-error-handling` skill; for context propagation see `samber/cc-skills-golang@golang-context` skill; for struct/interface design see `samber/cc-skills-golang@golang-structs-interfaces` skill.
## Best Practices Summary
1. Constructors SHOULD use **functional options** — they scale better as APIs evolve (one function per option, no breaking changes) 2. Functional options MUST **return an error** if validation can fail — catch bad config at construction, not at runtime 3. **Avoid `init()`** — runs implicitly, cannot return errors, makes testing unpredictable. Use explicit constructors 4. Enums SHOULD **start at 1** (or Unknown sentinel at 0) — Go's zero value silently passes as the first enum member 5. Error cases MUST be **handled first** with early return — keep happy path flat 6. **Panic is for bugs, not expected errors** — callers can handle returned errors; panics crash the process 7. **`defer Close()` immediately after opening** — later code changes can accidentally skip cleanup 8. **`runtime.AddCleanup`** over `runtime.SetFinalizer` — finalizers are unpredictable and can resurrect objects 9. Every external call SHOULD **have a timeout** — a slow upstream hangs your goroutine indefinitely 10. **Limit everything** (pool sizes, queue depths, buffers) — unbounded resources grow until they crash 11. Retry logic MUST **check context cancellation** between attempts 12. **Use `strings.Builder`** for concatenation in loops → see `samber/cc-skills-golang@golang-code-style` 13. string vs []byte: **use `[]byte` for mutation and I/O**, `string` for display and keys — conversions allocate 14. Iterators (Go 1.23+): **use for lazy evaluation** — avoid loading everything into memory 15. **Stream large transfers** — loading millions of rows causes OOM; stream keeps memory constant 16. `//go:embed` for **static assets** — embeds at compile time, eliminates runtime file I/O errors 17. **Use `crypto/rand`** for keys/tokens — `math/rand` is predictable → see `samber/cc-skills-golang@golang-security` 18. Regexp MUST be **compiled once at package level** — compilation is O(n) and allocates 19. Compile-time interface checks: **`var _ Interface = (*Type)(nil)`** 20. **A little recode > a big dependency** — each dep adds attack surface and maintenance burden 21. **Design for testability** — accept interfaces, inject dependencies
## Constructor Patterns: Functional Options vs Builder
### Functional Options (Preferred)
```go type Server struct { addr string readTimeout time.Duration writeTimeout time.Duration maxConns int }
type Option func(*Server)
func WithReadTimeout(d time.Duration) Option { return func(s *Server) { s.readTimeout = d } }
func WithWriteTimeout(d time.Duration) Option { return func(s *Server) { s.writeTimeout = d } }
func WithMaxConns(n int) Option { return func(s *Server) { s.maxConns = n } }
func NewServer(addr string, opts ...Option) *Server { // Default options s := &Server{ addr: addr, readTimeout: 5 * time.Second, writeTimeout: 10 * time.Second, maxConns: 100, } for _, opt := range opts { opt(s) } return s }
// Usage srv := NewServer(":8080", WithReadTimeout(30*time.Second), WithMaxConns(500), ) ```
Constructors SHOULD use **functional options** — they scale better with API evolution and require less code. Use builder pattern only if you need complex validation between configuration steps.
## Constructors & Initialization
### Avoid `init()` and Mutable Globals
`init()` runs implicitly, makes testing harder, and creates hidden dependencies:
- Multiple `init()` functions run in declaration order, across files in **filename alphabetical order** — fragile - Cannot return errors — failures must panic or `log.Fatal` - Runs before `main()` and tests — side effects make tests unpredictable
```go // Bad — hidden global state var db *sql.DB
func init() { var err error db, err = sql.Open("postgres", os.Getenv("DATABASE_URL")) if err != nil { log.Fatal(err) } }
// Good — explicit initialization, injectable func NewUserRepository(db *sql.DB) *UserRepository { return &UserRepository{db: db} } ```
### Enums: Start at 1
Zero values should represent invalid/unset state:
```go type Status int
const ( StatusUnknown Status = iota // 0 = invalid/unset StatusActive // 1 StatusInactive // 2 StatusSuspended // 3 ) ```
### Compile Regexp Once
```go // Good — compiled once at package level var emailRegex = regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`)
func ValidateEmail(email string) bool { return emailRegex.MatchString(email) } ```
### Use `//go:embed` for Static Assets
```go import "embed"
//go:embed templates/* var templateFS embed.FS
//go:embed version.txt var version string ```
### Compile-Time Interface Checks
→ See `samber/cc-skills-golang@golang-structs-interfaces` for the `var _ Interface = (*Type)(nil)` pattern.
## Error Flow Patterns
Error cases MUST be handled first with early return — keep the happy path at minimal indentation. → See `samber/cc-skills-golang@golang-code-style` for the full pattern and examples.
### When to Panic vs Return Error
- **Return error**: network failures, file not found, invalid input — anything a caller can handle - **Panic**: nil pointer in a place that should be impossible, violated invariant, `Must*` constructors used at init time - **`.Close()` / `Flush()` errors**: read-only cleanup can often use `defer f.Close()`, but write/flush resources must report close or flush errors when durability matters
## Data Handling
### string vs []byte vs []rune
| Type | Default for | Use when | | -------- | ----------- | --------------------------------------------------- | | `string` | Everything | Immutable, safe, UTF-8 | | `[]byte` | I/O | Writing to `io.Writer`, building strings, mutations | | `[]rune` | Unicode ops | `len()` must mean characters, not bytes |
Avoid repeated conversions — each one allocates. Stay in one type until you need the other.
### Iterators & Streaming for Large Data
Use iterators (Go 1.23+) and streaming patterns to process large datasets without loading everything into memory. For large transfers between services (e.g., 1M rows DB to HTTP), stream to prevent OOM.
For code examples, see [Data Handling Patterns](references/data-handling.md).
## Resource Management
`defer Close()` immediately after opening — don't wait, don't forget:
```go f, err := os.Open(path) if err != nil { return err } defer f.Close() // right here, not 50 lines later
rows, err := db.QueryContext(ctx, query) if err != nil { return err } defer rows.Close() ```
For graceful shutdown, resource pools, and `runtime.AddCleanup`, see [Resource Management](references/resource-management.md).
## Resilience & Limits
### Timeout Every External Call
```go ctx, cancel := context.WithTimeout(ctx, 5*time.Second) defer cancel()
resp, err := httpClient.Do(req.WithContext(ctx)) ```
### Retry & Context Checks
Retry logic MUST check `ctx.Err()` between attempts and use exponential/linear backoff via `select` on `ctx.Done()`. Long loops MUST check `ctx.Err()` periodically. → See `samber/cc-skills-golang@golang-context` skill.
## Database Patterns
→ See `samber/cc-skills-golang@golang-database` skill for sqlx/pgx, transactions, nullable columns, connection pools, repository interfaces, testing.
## Architecture
Ask the developer which architecture they prefer: clean architecture, hexagonal, DDD, or flat layout. Don't impose complex architecture on a small project.
Core principles regardless of architecture:
- **Keep domain pure** — no framework dependencies in the domain layer - **Fail fast** — validate at boundaries, trust internal code - **Make illegal states unrepresentable** — use types to enforce invariants - **Respect 12-factor app** principles — → see `samber/cc-skills-golang@golang-project-layout`
## Detailed Guides
| Guide | Scope | | --- | --- | | [Architecture Patterns](references/architecture.md) | High-level principles, when each architecture fits | | [Clean Architecture](references/clean-architecture.md) | Use cases, dependency rule, layered adapters | | [Hexagonal Architecture](references/hexagonal-architecture.md) | Ports and adapters, domain core isolation | | [Domain-Driven Design](references/ddd.md) | Aggregates, value objects, bounded contexts |
## Code Philosophy
- **Avoid repetitive code** — but don't abstract prematurely - **Minimize dependencies** — a little recode > a big dependency - **Design for testability** — accept interfaces, inject dependencies, keep functions pure
## Cross-References
- → See `samber/cc-skills-golang@golang-data-structures` skill for data structure selection, internals, and container/ packages - → See `samber/cc-skills-golang@golang-error-handling` skill for error wrapping, sentinel errors, and the single handling rule - → See `samber/cc-skills-golang@golang-structs-interfaces` skill for interface design and composition - → See `samber/cc-skills-golang@golang-concurrency` skill for goroutine lifecycle and graceful shutdown - → See `samber/cc-skills-golang@golang-context` skill for timeout and cancellation patterns - → See `samber/cc-skills-golang@golang-project-layout` skill for architecture and directory structure - → See `samber/cc-skills-golang@golang-refactoring` skill for safely staging a migration toward one of these patterns (options struct, DI, consumer-side interfaces) across an existing codebase
技术详情
- 版本
- 1.0.0
- 许可证
- MIT
- 最近更新
- 2026年8月21日
- 发布时间
- 2026年8月21日
决策摘要
首选
3,022 个 GitHub Stars
Agent 验证证据
Agent 验证证据
来自解析、审查、安装和一次小范围运行后的结果报告。
- 成功率
- —
- 近期失败
- —
- 结果
- 0
- 输出质量
- —
- 失败
- 0
- 不相关
- 0
- 安装次数
- 0
- 风险拦截
- 0
- 需要配置
- 0
- 生产环境
- 0
暂时没有 Agent 结果数据。首次 Agent 执行可以通过 /api/agent/outcome 报告成功、需要设置、风险拦截、失败或不相关。
增长闭环
分享工具包
为 golang-design-patterns 准备的场景化草稿,可手动发布到 X。
golang-design-patterns: Idiomatic Golang design patterns — functional options, constructors, error flow and cascading... 3.0K stars https://www.openagentskill.com/skills/samber-golang-design-patterns?ref=x
可选:带安装命令的回复
Listing + install path for golang-design-patterns: https://www.openagentskill.com/skills/samber-golang-design-patterns?ref=x Install: npx skills add samber/cc-skills-golang --skill golang-design-patterns
收录来源
Registry 收录
此列表来自公开来源,维护者认领获批前不会标记为官方。
- 创作者
- samber
- 收录方
- OpenAgentSkill 社区索引
归属链接指向公开仓库或创作者主页。创作者可认领列表以更新所有权信号。
认领此 Skill所有者认领
认领此 Skill 页面
这条 Registry 收录 列表归属于 samber,但尚未标记为官方。认领后可增加已验证所有者信号,使后续发布、安装和审计更新更值得信赖。
创作者外链工具包
将证据徽章加入你的 README
在开发者评估仓库的位置展示规范页面、当前信任与审计信号,以及真实的 Agent 验证证据。
[](https://www.openagentskill.com/skills/samber-golang-design-patterns)
[](https://www.openagentskill.com/skills/samber-golang-design-patterns)
[](https://www.openagentskill.com/skills/samber-golang-design-patterns/audit)
[](https://www.openagentskill.com/skills/samber-golang-design-patterns)作者
samber
@samber
健康信号
- GitHub Stars
- 3.0K
- 质量评分
- 48/100
- 最近 GitHub 推送
- 2026年8月21日
- 框架提示
- 未知
- OpenAgentSkill 浏览量
- 4
- 复制安装命令
- 0
- 跳转点击
- 0
社区信号
告诉我们这个 Skill 是否对你的 Agent 工作流有帮助。汇总反馈会持续改善排序。
信任与安全
仅限沙盒
- GitHub 采用度3.0K 个 GitHub Stars通过
- Star/Fork 活跃度3.0K 个 Star,197 个 Fork; 当前元数据中没有议题活跃度信息信息
- 近期维护距上次推送 1 天通过
- 许可证清晰度MIT通过
- README/SKILL.md 完整度元数据包含足够的用法与工作流上下文通过
- 依赖与运行时风险command execution surface, external package install surface检查
相关 Skill
Last30days Skill
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
53.5K StarsAcademic Research Skills
Academic Research Skills for Claude Code: research → write → review → revise → finalize
38.4K StarsGPT Researcher
Run autonomous deep research over web and local sources
28.0K StarsDeepResearch
Tongyi Deep Research, the Leading Open-source Deep Research Agent
19.8K Stars