spf13/go-skills
spf13/go-skills has 712 GitHub stars and 39 forks. GitHot measured +3 stars in 24 hours. Last checked 2026-11-15 19:40 UTC. Last push 2026-11-14.
Measured star growth
- in 24h
- +3
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
Seven Agent Skills for Go work, published as a Claude Code marketplace: idiomatic Go, CLI architecture, design-spec review, release engineering, desktop apps, file operations, and testable filesystems. Written by spf13 — creator of Cobra, Viper, and Hugo, and former Go team lead at Google, where he co-designed Go modules.
Developer ToolsREADME.md
OriginalGo Skills for Claude Code
Seven Agent Skills for Go work, published as a Claude Code marketplace: idiomatic Go, CLI architecture, design-spec review, release engineering, desktop apps, file operations, and testable filesystems. Written by spf13 — creator of Cobra, Viper, and Hugo, and former Go team lead at Google, where he co-designed Go modules.
Skills
| Skill | What it covers | Install |
|---|---|---|
go |
Idiomatic Go — package design, error handling, interfaces, concurrency, testing, and project layout. The one to read first. | /plugin install go@go-skills |
cobra-viper |
CLI architecture with Cobra and Viper — command-first design, 12-factor configuration, environment-variable binding, and in-memory CLI testing. | /plugin install cobra-viper@go-skills |
go-spec-reviewer |
Review a Go design document before implementation begins — catches over-engineering, missing error paths, interface misuse, and Cobra/Viper convention violations while the plan is still cheap to change. | /plugin install go-spec-reviewer@go-skills |
go-release |
Release engineering — semantic-versioning promises, mechanical breaking-change detection, Deprecated: conventions, go.mod hygiene, and shipping binaries with GoReleaser. |
/plugin install go-release@go-skills |
wails |
Desktop apps in Go with Wails v2 (stable) and v3 (alpha) — including how to tell the two apart, since their APIs are incompatible and easily blended by mistake. | /plugin install wails@go-skills |
fileflow-pathologize |
Safe file operations with spf13/fileflow and spf13/pathologize — cross-filesystem move, copy, and rename with conflict-safe naming, plus OS-safe path sanitization. |
/plugin install fileflow-pathologize@go-skills |
afero |
Testable filesystem code with spf13/afero — inject afero.Fs, test in memory, layer read-only and copy-on-write filesystems, and know the four ways MemMapFs differs from a real disk. |
/plugin install afero@go-skills |
Install
Claude Code
/plugin marketplace add spf13/go-skills
/plugin install <skill>@go-skills
Substitute any skill name from the table above.
Other agents (Copilot, Cursor, etc.)
Link each skill directory into your agent's skills directory. On Windows, as Administrator:
New-Item -ItemType Junction -Path "$env:USERPROFILE\.agents\skills\<skill>" -Target "$PWD\<skill>"
On macOS and Linux:
ln -s "$PWD/<skill>" "$HOME/.agents/skills/<skill>"
Then restart your editor. The skills appear in the Copilot customizations index and are invoked automatically when relevant Go or CLI work is detected.
Verify the install
In Claude Code:
/plugin
Every installed skill is listed under its namespaced name (<skill>@go-skills). Then open a Go project, ask a question the skill covers — for example, "review this interface for idiomatic Go" — and confirm the skill fires.
Requirements
- Claude Code with plugin and marketplace support. Use a current build: verified working on 2.1.275. An old 2.1.94 build installs the plugin but never registers its skill, so the catalog is silently inert there.
- Other agents read skills from
.agents/skills. No runtime dependencies.
Why these skills exist
Another Go project layout guide? No thanks.
Search "Go project layout" and you land on golang-standards/project-layout: nested directories, arbitrary layers (service/, repository/, pkg/), worker pools, mock frameworks.
Those are not Go patterns; they are Java patterns in Go syntax, and they fight the language. Go was built for simplicity, readability, and flat APIs. A Spring-Boot-style architecture buys circular dependencies and obscured control flow.
LLMs make it worse: trained on the whole internet, they generate Java-in-Go-syntax by default, then argue. These skills correct that, so the model stops reaching for internal/ junk drawers, BDD frameworks, and worker pools.
A course correction
Tired of arguing with LLMs trained on Java-style codebases, I wrote this playbook around what the standard library and the best Go projects do:
- Domains over layers. Delete the
internal/junk drawer and thepkg/anti-pattern. - Standard library over frameworks.
testing, table-driven tests, stubs. - Channels before mutexes. Pass data over a channel where you can; keep the mutex for guarding state. No static worker pools.
- Command-first architecture. The binary routes commands; logic stays out.
The Golden Rule
Clear is better than clever. Go code should be boring in the best possible way—predictable, consistent, and immediately understandable to a new developer opening the file for the first time. When in doubt, delete the abstraction.