# Agent Skills for production-ready Golang projects AI agent skills are reusable instruction sets that extend your coding assistant with domain-specific expertise, loaded on demand so they don't bloat your context. This repository covers **Go-specific** skills only (language, testing, security, observability, etc.); for dev workflow skills (git conventions, CI/CD, PR reviews) you'll want to add a separate skills plugin. For non-Golang skills, please visit [cc-skills](https://github.com/samber/cc-skills). > [!IMPORTANT] > Bootstrapped with Claude Code by distilling my Go project commits. **Edited, tested, reviewed and reworked by a human**. > > **No AI slop here.** AI-made skills are useless. > > Built for Claude Code, Codex, Gemini, Copilot, Antigravity, Cursor... image ## πŸš€ How to use **Install with [skills](https://skills.sh/) CLI** (universal, works with any [Agent Skills](https://agentskills.io)-compatible tool): ```bash npx skills add https://github.com/samber/cc-skills-golang --all # or a single skill: npx skills add https://github.com/samber/cc-skills-golang --skill golang-performance ```
Claude Code ```bash /plugin marketplace add samber/cc /plugin install cc-skills-golang@samber ```
Openclaw Copy skills into the cross-client discovery directory: ```bash git clone https://github.com/samber/cc-skills-golang.git ~/.openclaw/skills/cc-skills-golang # or in workspace: git clone https://github.com/samber/cc-skills-golang.git ~/.openclaw/workspace/skills/cc-skills-golang ```
Gemini CLI ```bash gemini extensions install https://github.com/samber/cc-skills-golang ``` Update with `gemini extensions update cc-skills-golang`.
Cursor Copy skills into the cross-client discovery directory: ```bash git clone https://github.com/samber/cc-skills-golang.git ~/.cursor/skills/cc-skills-golang ``` Cursor auto-discovers skills from `.agents/skills/` and `.cursor/skills/`.
Copilot Copy skills into the cross-client discovery directory: ```bash /plugin install https://github.com/samber/cc-skills-golang # or git clone https://github.com/samber/cc-skills-golang.git ~/.copilot/skills/cc-skills-golang ``` Copilot auto-discovers skills from `.copilot/skills/`.
OpenCode Copy skills into the cross-client discovery directory: ```bash git clone https://github.com/samber/cc-skills-golang.git ~/.agents/skills/cc-skills-golang ``` OpenCode auto-discovers skills from `.agents/skills/`, `.opencode/skills/`, and `.claude/skills/`.
Codex (OpenAI) Install the plugin via the Codex CLI: ```bash codex plugin add github:samber/cc-skills ``` Update with `codex plugin update cc-skills`. Falls back to a manual clone if the marketplace path is unavailable: ```bash git clone https://github.com/samber/cc-skills.git ~/.agents/skills/cc-skills ``` Codex auto-discovers skills from `~/.agents/skills/` and `.agents/skills/`.
Antigravity Clone and symlink into the cross-client discovery path: ```bash git clone https://github.com/samber/cc-skills-golang.git ~/.antigravity/skills/cc-skills-golang ``` Update with `cd ~/.antigravity/skills/cc-skills-golang && git pull`.
## 🧩 Skills These skills are designed as **atomic, cross-referencing units**. A skill may reference conventions defined in another (e.g. error-handling rules that affect logging live in `golang-error-handling`, not `golang-observability`). Installing only a subset will give you a partial and potentially inconsistent view of the guidelines. For best results, install all general-purpose skills together. ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Golang Skills β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β–Ό β–Ό β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Code Quality β”‚ β”‚ Arch & Designβ”‚ β”‚ QA & Perf β”‚ β”‚ Project Start β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ code-style β”‚ β”‚ design-patt β”‚ β”‚ testing β”‚ β”‚ project-layout β”‚ β”‚ naming β”‚ β”‚ concurrency β”‚ β”‚ benchmark β”‚ β”‚ popular-libs β”‚ β”‚ error-handl β”‚ β”‚ context β”‚ β”‚ performance β”‚ β”‚ cli β”‚ β”‚ safety β”‚ β”‚ dep-inject β”‚ β”‚ troubleshoot β”‚ β”‚ continuous-integ. β”‚ β”‚ structs-ifaceβ”‚ β”‚ data-structs β”‚ β”‚ observability β”‚ β”‚ stay-updated β”‚ β”‚ documentationβ”‚ β”‚ database β”‚ β”‚ β”‚ β”‚ dep-management β”‚ β”‚ lint β”‚ β”‚ modernize β”‚ β”‚ β”‚ β”‚ gopls β”‚ β”‚ security β”‚ β”‚ refactoring β”‚ β”‚ β”‚ β”‚ pkg-go-dev β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Framework / Library Skills β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ APIs β”‚ DI β”‚ Frameworks β”‚ samber/* β”‚ Testing β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ grpc β”‚ google-wire β”‚ spf13-cobra β”‚ samber-lo β”‚ stretchr- β”‚ β”‚ graphql β”‚ uber-dig β”‚ spf13-viper β”‚ samber-mo β”‚ testify β”‚ β”‚ swagger β”‚ uber-fx β”‚ β”‚ samber-ro β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ samber-do β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ samber-hot β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ samber-slog β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ samber-oops β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` - ⭐️ Recommended - βœ… Published - πŸ‘· Work in progress - ❌ To-do - ⚑ Command available - 🧠 Ultrathink automatically - πŸ€– Ultracode automatically - βš™οΈ Overridable (see doc below) - **Description (tok)**: weight of the `description` field from YAML frontmatter, always loaded into Claude's context for skill triggering - **SKILL.md (tok)**: weight of the full `SKILL.md` file loaded when the skill triggers - **Directory (tok)**: weight of all files in the skill directory (SKILL.md + referenced markdown files) **General purpose:** | | Skill | Flags | Error rate gap | Description (tok) | SKILL.md (tok) | Directory (tok) | | --- | --- | --- | --- | --- | --- | --- | | ⭐️ | βœ… `golang-code-style` | ⚑ πŸ€– βš™οΈ | -40% | 114 | 2,358 | 2,974 | | ⭐️ | βœ… `golang-data-structures` | ⚑ | -39% | 93 | 2,608 | 6,327 | | ⭐️ | βœ… `golang-database` | ⚑ βš™οΈ | -38% | 97 | 2,721 | 7,243 | | ⭐️ | βœ… `golang-design-patterns` | ⚑ βš™οΈ | -37% | 80 | 2,694 | 9,400 | | ⭐️ | βœ… `golang-documentation` | ⚑ πŸ€– βš™οΈ | -53% | 75 | 3,163 | 11,876 | | ⭐️ | βœ… `golang-error-handling` | ⚑ πŸ€– βš™οΈ | -26% | 141 | 1,734 | 4,693 | | ⭐️ | βœ… `golang-how-to` | ⚑ | β€” | 184 | 4,210 | 17,583 | | ⭐️ | βœ… `golang-modernize` | ⚑ πŸ€– | -43% | 104 | 3,486 | 15,145 | | ⭐️ | βœ… `golang-naming` | ⚑ βš™οΈ | -23% | 159 | 3,031 | 7,399 | | ⭐️ | βœ… `golang-refactoring` | ⚑ 🧠 πŸ€– βš™οΈ | β€” | 245 | 3,835 | 20,392 | | ⭐️ | βœ… `golang-safety` | ⚑ | -58% | 78 | 2,614 | 5,384 | | ⭐️ | βœ… `golang-testing` | ⚑ 🧠 πŸ€– βš™οΈ | -32% | 115 | 4,270 | 8,822 | | ⭐️ | βœ… `golang-troubleshooting` | ⚑ 🧠 πŸ€– | -32% | 173 | 2,993 | 18,035 | | ⭐️ | βœ… `golang-security` | ⚑ 🧠 πŸ€– | -32% | 85 | 3,187 | 21,623 | | | βœ… `golang-benchmark` | ⚑ 🧠 | -50% | 102 | 3,153 | 33,396 | | | βœ… `golang-cli` | ⚑ | -43% | 125 | 2,338 | 6,153 | | | βœ… `golang-concurrency` | ⚑ πŸ€– βš™οΈ | -39% | 72 | 2,196 | 6,826 | | | βœ… `golang-context` | ⚑ βš™οΈ | -34% | 82 | 1,211 | 4,021 | | | βœ… `golang-continuous-integration` | ⚑ | -59% | 177 | 3,542 | 12,804 | | | βœ… `golang-dependency-injection` | ⚑ πŸ€– βš™οΈ | -47% | 178 | 3,016 | 5,287 | | | βœ… `golang-dependency-management` | ⚑ | -54% | 77 | 2,407 | 5,545 | | | βœ… `golang-structs-interfaces` | ⚑ βš™οΈ | -35% | 111 | 3,076 | 3,076 | | | βœ… `golang-lint` | ⚑ πŸ€– | -41% | 98 | 1,877 | 6,295 | | | βœ… `golang-observability` | ⚑ πŸ€– βš™οΈ | -37% | 164 | 3,128 | 19,583 | | | βœ… `golang-performance` | ⚑ 🧠 πŸ€– | -39% | 130 | 2,226 | 19,820 | | | βœ… `golang-gopls` | ⚑ | β€” | 219 | 2,317 | 12,312 | | | βœ… `golang-pkg-go-dev` | ⚑ | β€” | 170 | 3,442 | 5,386 | | | βœ… `golang-popular-libraries` | ⚑ | -30% | 156 | 1,181 | 5,093 | | | βœ… `golang-project-layout` | ⚑ | -38% | 105 | 1,761 | 6,257 | | | βœ… `golang-stay-updated` | ⚑ | -56% | 44 | 1,802 | 1,802 | **Tools:** | Skill | Flags | Error rate gap | Description (tok) | SKILL.md (tok) | Directory (tok) | | --- | --- | --- | --- | --- | --- | | βœ… `golang-google-wire` | ⚑ | -16% | 122 | 2,670 | 7,400 | | βœ… `golang-graphql` | | -16% | 76 | 3,070 | 7,941 | | βœ… `golang-grpc` | ⚑ | -41% | 70 | 2,341 | 5,157 | | βœ… `golang-spf13-cobra` | ⚑ | β€” | 176 | 2,580 | 7,351 | | βœ… `golang-spf13-viper` | ⚑ | β€” | 170 | 2,551 | 7,098 | | βœ… `golang-swagger` | ⚑ | β€” | 144 | 2,342 | 3,347 | | βœ… `golang-uber-dig` | ⚑ | -10% | 107 | 2,585 | 6,257 | | βœ… `golang-uber-fx` | ⚑ | -5% | 118 | 2,825 | 7,060 | | βœ… `golang-samber-do` | ⚑ | -81% | 71 | 2,145 | 3,660 | | βœ… `golang-samber-hot` | ⚑ | -54% | 119 | 1,986 | 7,416 | | βœ… `golang-samber-lo` | ⚑ | -40% | 166 | 2,610 | 10,288 | | βœ… `golang-samber-mo` | ⚑ 🧠 | -48% | 82 | 2,967 | 11,382 | | βœ… `golang-samber-oops` | ⚑ | -59% | 70 | 2,544 | 2,856 | | βœ… `golang-samber-ro` | ⚑ 🧠 | -50% | 153 | 2,976 | 11,192 | | βœ… `golang-samber-slog` | ⚑ | -19% | 119 | 3,120 | 9,842 | | ❌ `golang-temporal` | | β€” | 0 | 0 | 0 | | βœ… `golang-stretchr-testify` | ⚑ | -47% | 92 | 1,858 | 2,677 | ## πŸ§ͺ Skill evaluations | | With Skill | Without Skill | Delta | | ----------- | ------------------- | ------------------- | --------- | | **Overall** | **3348/3439 (97%)** | **1957/3439 (57%)** | **+40pp** | See [EVALUATIONS.md](./EVALUATIONS.md) for the full per-skill breakdown. ## πŸ“– Skills description ### Code Quality #### `golang-code-style` Go code formatting and conventions. gofmt, goimports, linting rules, comment conventions, and project-level style consistency. Overridable by company skills. #### `golang-documentation` Go documentation standards. Package docs, godoc conventions, code comments, example functions, README structure, and API reference generation. Overridable. #### `golang-error-handling` Go error handling best practices. Error creation, wrapping with fmt.Errorf and errors.Is/As, sentinel errors, custom error types, error codes, and panic recovery. Overridable. #### `golang-lint` Go linting best practices and golangci-lint configuration. Presets, custom rules, CI integration, inline suppression, and output interpretation. #### `golang-naming` Go naming conventions across all identifier types. Packages, constructors, structs, interfaces, constants, errors, receivers, acronyms, test functions. Covers MixedCaps rules, Get-prefix, and utils/helpers anti-patterns. Overridable. #### `golang-safety` Defensive Go coding. Prevents panics, silent data corruption, and runtime bugs. nil safety, append aliasing, map concurrent access, float comparison, zero-value design, numeric overflow. #### `golang-security` Go security best practices. Injection prevention (SQL, command, XSS), cryptography, filesystem/network safety, secrets management, cookie security, and tool configuration. Audit and review modes. #### `golang-structs-interfaces` Go struct and interface design. Composition, embedding, type assertions, interface segregation, struct tags (JSON/YAML/DB), pointer vs value receivers. Overridable. ### Architecture & Design #### `golang-concurrency` Go concurrency patterns. Goroutines, channels, sync primitives, context cancellation, worker pools, fan-out/fan-in, pipelines. Overridable. #### `golang-context` Idiomatic context.Context usage. Creation, cancellation, timeouts, values, propagation patterns, and common anti-patterns. Overridable. #### `golang-data-structures` Go data structures internals and usage. Slices (capacity growth, append aliasing), maps, channels, sync primitives, and when to use each. #### `golang-database` Go database access patterns. Parameter binding, connection pooling, transactions, migrations, sqlboiler/sqlc code generation, query builders. Overridable. #### `golang-dependency-injection` Dependency injection patterns in Go. Constructor injection, interface-based DI, wire/dig/fx comparison, and when DI is worth the complexity. Overridable. #### `golang-design-patterns` Idiomatic Go design patterns. Functional options, constructors, builder pattern, middleware chains, circuit breaker, and architecture guides with file trees and code. Overridable. #### `golang-modernize` Modernize Go code to use recent language features. Range-over-int, min/max builtins, iterators, slices/maps/cmp/slog stdlib packages, testing patterns (t.Context, b.Loop, synctest), and tooling upgrades. #### `golang-refactoring` Safe, at-scale refactoring process for existing Go code. Coverage-adaptive safety net, tool-driven behavior-preserving transforms (gopls Rename/Inline/Extract, gofmt -r, eg, gopatch), the Fowler catalog mapped to Go, breaking import cycles, type-alias gradual code repair, and a human-in-the-loop workflow of staged PRs on a refactoring branch. ### QA & Performance #### `golang-benchmark` Go benchmarking, profiling, and performance measurement. pprof, trace, CPU/memory/block profiles, flame graphs, benchmark comparison (benchstat), continuous profiling. #### `golang-observability` Go production observability. Structured logging (slog), Prometheus metrics, OpenTelemetry tracing, pprof profiling, RUM tracking, alerting, Grafana dashboards. Overridable. #### `golang-performance` Go performance optimization. Allocation reduction, CPU efficiency, memory layout, GC tuning, pooling, caching, hot-path optimization. Review and hot-path modes. #### `golang-testing` Production-ready Go tests. Table-driven tests, fuzzing, fixtures, goroutine leak detection (goleak), snapshot testing, code coverage, integration tests, parallel tests. Overridable. #### `golang-troubleshooting` Systematic Go debugging methodology. Common pitfalls, test-driven debugging, pprof capture, Delve debugger, race detection, GODEBUG tracing, production debugging. ### Project Setup #### `golang-cli` Go CLI application development. Project layout, exit codes, signal handling, I/O patterns, argument parsing, and terminal UX. #### `golang-continuous-integration` CI/CD pipeline configuration for Go projects using GitHub Actions. Build, test, lint, and release workflows. #### `golang-dependency-management` Go module dependency strategies. go.mod conventions, versioning, replace directives, tool dependencies, and multi-module workspaces. #### `golang-gopls` Semantic code intelligence for your local build via `gopls`, the official Go language server. Go-to-definition, find references, call/implementation hierarchy, workspace symbol search, diagnostics, safe rename, and refactors (extract/inline/fill/rewrite). Reachable via gopls's own MCP server, Claude Code's native `LSP` tool, or the `gopls` CLI. #### `golang-pkg-go-dev` Go package and module exploration via `godig`, a pkg.go.dev API client (CLI + MCP server). Package docs, API references, symbols, code examples, versions, importers, licenses, and known vulnerabilities. Prefer over Context7 for Go packages. #### `golang-popular-libraries` Curated recommendations for production-ready Go libraries and frameworks. When the stdlib is enough vs when to reach for a package. #### `golang-project-layout` Go project structure and workspace setup. cmd/internal/pkg conventions, monorepo layout, CLI project structure, and when to keep things flat. #### `golang-stay-updated` Resources to stay current with Go. Official channels, community hubs, key people to follow, and learning resources. ### APIs #### `golang-graphql` GraphQL API development in Go using gqlgen/graphql-go. Schema definition, resolvers, subscriptions, dataloader, and federation. #### `golang-grpc` gRPC in Go. Protobuf organization, service definitions, streaming, interceptors, error codes, and code generation workflow. #### `golang-swagger` OpenAPI/Swagger docs with swaggo/swag. Annotation comments, code generation, framework integrations (gin, echo, fiber, chi), security definitions. ### Dependency Injection #### `golang-google-wire` Compile-time dependency injection with google/wire. Provider sets, injector generation, wire.Build, and structured DI patterns. #### `golang-uber-dig` Reflection-based DI with uber-go/dig. Provide/Invoke, dig.In/dig.Out, named values, value groups, optional dependencies, and Decorate. #### `golang-uber-fx` Application framework with uber-go/fx. fx.New, fx.Provide/Invoke, fx.Module, lifecycle hooks, fx.Annotate, fx.Decorate, signal-aware Run. ### Frameworks #### `golang-spf13-cobra` CLI command trees with spf13/cobra. Command hierarchy, RunE hooks, flag management, shell completion, usage templates, and testing with SetArgs. #### `golang-spf13-viper` Layered configuration with spf13/viper. Flag > env > file > KV > default precedence, BindPFlag, hot reload, test isolation, and remote KV integration. ### samber/\* #### `golang-samber-do` Dependency injection with samber/do. Type-safe service containers, lifecycle management, scopes, health checks, and graceful shutdown. #### `golang-samber-hot` In-memory caching with samber/hot. 9 eviction algorithms (LRU, LFU, TinyLFU, W-TinyLFU, S3FIFO, ARC, SIEVE...), TTL, loaders, sharding, stale-while-revalidate, Prometheus metrics. #### `golang-samber-lo` Functional programming helpers with samber/lo. 500+ type-safe generic functions for slices, maps, channels, strings. Immutable (lo), parallel (lop), mutable (lom), iterators (loi), SIMD. #### `golang-samber-mo` Monadic types with samber/mo. Option, Result, Either, Future, IO, Task, State for type-safe nullable values, error handling, and functional composition. #### `golang-samber-oops` Structured error handling with samber/oops. Error builders, stack traces, error codes, context attributes, public vs developer messages, panic recovery, and APM integration. #### `golang-samber-ro` Reactive streams with samber/ro. 150+ type-safe operators, cold/hot observables, 5 subject types, 40+ plugins, automatic backpressure, and Go context integration. #### `golang-samber-slog` Structured logging pipeline with samber/slog-\*\*\*\* packages. Multi-handler routing (slog-multi), sampling, formatting, HTTP middleware, and 20+ backend sinks. ### Testing #### `golang-stretchr-testify` Testing with stretchr/testify. assert, require, mock, and suite packages. Assertions, mock expectations, argument matchers, suite lifecycle, and custom matchers. ## πŸ•΅ Use in CI for AI-driven reviews Add AI agents as PR reviewers alongside traditional static analysis. When configured with this skill plugin, the agent applies the relevant Go skills per review area β€” catching architectural drift, logic bugs, and concurrency hazards that linters cannot detect. See [GOLANG-AI-DRIVEN-REVIEW.md](./GOLANG-AI-DRIVEN-REVIEW.md) for full setup instructions (Claude Code Action and GitHub Copilot). ## 🎯 Tuning Skill Triggers If a skill triggers too often or not often enough, please [open an issue](https://github.com/samber/cc-skills-golang/issues) suggesting a description change. The `description` field in SKILL.md frontmatter is the primary triggering mechanism β€” small wording adjustments can significantly improve trigger accuracy. Some `SKILL.md` files might have a `When to use` section which is another level of exclusion. Finally, `SKILL.md` files are an entrypoint for lazy loading references with deep knowledge located in `references/`. ## πŸ”„ Overlap Claude reports very little overlap between skills in this repo, thanks to cross-reference. I suggest enabling most of the skills and leveraging lazy loading. The recommended ⭐️ skills load ~1,100 tokens of descriptions at startup; full skill content is only pulled in when relevant. Note: - I estimate that 50% of `golang-naming` and `golang-code-style` overlap with linters (golangci-lint). - A large part of the security rules in `golang-security` have been distilled from the Bearer (SAST) checklist. The skill is still useful for methodology. - If your team has its own conventions, create a company skill and declare the override explicitly near the top of its body: `This skill supersedes samber/cc-skills-golang@golang-naming skill for [company] projects.` Skills marked βš™οΈ in the table above support this mechanism. ## ✍️ Contribute - **100 tokens per skill description** - what? when to use this skill? - **1.000–2.500 tokens per SKILL.md** β€” keep the main file focused on essentials - **Use secondary markdown files for depth** β€” reference them from SKILL.md with relative links (e.g., `[Logging](./logging.md)`). Claude reads these on demand when the topic is relevant, so they don't count against the context budget until needed - **Up to 10.000 tokens** for full skill and secondary files - **2–4 skills loaded simultaneously** in a typical session β€” design skills to coexist - **Stay below ~10k tokens of total loaded SKILL.md** anytime to avoid degrading response quality For more guidelines, please check `CLAUDE.md`. ## πŸ’« Fuel the Revolution - ⭐️ **Star this repo** - Your star powers the caffeine engine! - β˜•οΈ **Buy me a coffee** - I'll literally use it to build more skills while drinking actual coffee [![GitHub Sponsors](https://img.shields.io/github/sponsors/samber?style=for-the-badge)](https://github.com/sponsors/samber) ## πŸ“ License Copyright Β© 2026 [Samuel Berthe](https://github.com/samber). This project is under [MIT](./LICENSE) license.