Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
cxuu avatar

Go Linting

  • 969 installs
  • 137 repo stars
  • Updated June 20, 2026
  • cxuu/golang-skills

go-linting is a Go skill that generates a production-grade .golangci.yml and runs a comprehensive golangci-lint suite with one bash command for developers who need standardized static analysis on Go modules.

About

go-linting is a cxuu Go skill (script v1.0.0) that generates a production-grade .golangci.yml and runs an initial comprehensive lint pass in one command. The bundled config enables 10 linters—errcheck, goimports, revive, govet, staticcheck, gosec, ineffassign, misspell, gocyclo, and bodyclose—with a 5-minute timeout, zero max-issues-per-linter, and revive exported-rule settings. Developers reach for go-linting when bootstrapping Go repos, standardizing CI lint gates, or replacing ad-hoc golangci-lint setups with an opinionated baseline that enforces security (gosec) and complexity (gocyclo min-complexity 15) checks.

  • Generates .golangci.yml with 5 minimum recommended linters (errcheck, goimports, revive, govet, staticcheck) plus 5 addi
  • Configures revive exported rule, gocyclo minimum complexity of 15, and goimports local-prefix handling
  • Supports --force, --dry-run, --json, and --limit options for flexible CI and local workflows
  • Exits with standard codes (0 clean, 1 issues found, 2 error) for easy scripting
  • Runs with a 5-minute timeout and strict issue reporting (max-issues-per-linter: 0)

Go Linting by the numbers

  • 969 all-time installs (skills.sh)
  • +39 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #139 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cxuu/golang-skills --skill go-linting

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs969
repo stars137
Security audit3 / 3 scanners passed
Last updatedJune 20, 2026
Repositorycxuu/golang-skills

How do you bootstrap golangci-lint for a Go project?

Automatically generate a production-grade.golangci.yml configuration and run a comprehensive Go linter suite with one command.

Who is it for?

Go backend developers setting up or hardening static analysis on new or existing modules before CI merge.

Skip if: Teams already running a customized golangci-lint config they do not want overwritten by a generated baseline.

When should I use this skill?

User asks to lint Go code, create .golangci.yml, or run golangci-lint with security and style checks.

What you get

.golangci.yml config file and initial golangci-lint report across enabled linters.

  • .golangci.yml configuration
  • Initial golangci-lint report

By the numbers

  • Enables 10 linters including errcheck, staticcheck, gosec, and revive
  • Bundled bash script version 1.0.0 with 5-minute lint timeout

Files

SKILL.mdMarkdownGitHub ↗

Go Linting

Core Principle

More important than any "blessed" set of linters: lint consistently across a codebase.

Consistent linting helps catch common issues and establishes a high bar for code quality without being unnecessarily prescriptive.

Resource Routing

  • scripts/setup-lint.sh - Run when generating a .golangci.yml, validating the first lint pass, or producing JSON metadata.
  • assets/golangci.yml - Use as the v2 golangci-lint baseline for established projects.

Setup Procedure

1. Create .golangci.yml with scripts/setup-lint.sh or copy assets/golangci.yml 2. Run golangci-lint run ./... 3. If errors appear, fix them category by category (formatting first, then vet, then style) 4. Re-run until clean

After generating .golangci.yml, run golangci-lint config verify --config .golangci.yml to verify the configuration schema before relying on lint results.

---

Minimum Recommended Linters

These linters catch the most common issues while maintaining a high quality bar:

LinterPurpose
errcheckEnsure errors are handled
goimportsFormat code and manage imports
reviveCommon style mistakes (modern replacement for golint)
govetAnalyze code for common mistakes
staticcheckVarious static analysis checks
Note: revive is the modern, faster successor to the now-deprecated golint.

---

Lint Runner: golangci-lint

Use golangci-lint as your lint runner. See the example .golangci.yml from uber-go/guide.

---

Example Configuration

Use assets/golangci.yml as the maintained example. It targets golangci-lint v2 (verified with 2.10.1 on 2026-06-19), keeps goimports under formatters, and enables the core linters plus common production additions.

Running

# Install the version this skill's config is verified against
go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.10.1

# Run all linters
golangci-lint run

# Run on specific paths
golangci-lint run ./pkg/...

---

Additional Recommended Linters

Beyond the minimum set, consider these for production projects:

LinterPurposeWhen to enable
gosecSecurity vulnerability detectionAlways for services handling user input
ineffassignDetect ineffectual assignmentsAlways — catches dead code
misspellCorrect common misspellings in comments/stringsAlways
gocycloCyclomatic complexity thresholdWhen functions exceed ~15 complexity
exhaustiveEnsure switch covers all enum valuesWhen using iota enums
bodycloseDetect unclosed HTTP response bodiesAlways for HTTP client code

---

Nolint Directives

When suppressing a lint finding, always explain why:

//nolint:errcheck // fire-and-forget logging; error is not actionable
_ = logger.Sync()

Rules:

  • Use //nolint:lintername — never bare //nolint
  • Place the comment on the same line as the finding
  • Include a justification after //

---

CI/CD Integration

Run golangci-lint run ./... in CI after tests. Pin the golangci-lint version used by CI so local and release behavior do not drift.

Pre-commit Hook

#!/bin/sh
# .git/hooks/pre-commit
golangci-lint run --new-from-rev=HEAD~1

Use --new-from-rev to lint only changed code, keeping the feedback loop fast.

---

Quick Reference

TaskCommand/Action
Install golangci-lintgo install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.10.1
Run lintersgolangci-lint run
Run on pathgolangci-lint run ./pkg/...
Config file.golangci.yml in project root
CI integrationRun golangci-lint run in pipeline
Nolint directives//nolint:name // reason — never bare //nolint
CI integrationUse golangci/golangci-lint-action for GitHub Actions
Pre-commitgolangci-lint run --new-from-rev=HEAD~1

Linter Selection Guidelines

When you need...Use
Error handling coverageerrcheck
Import formattinggoimports
Style consistencyrevive
Bug detectiongovet, staticcheck
All of the abovegolangci-lint with config

---

Related Skills

  • Style foundations: See go-style-core when resolving style questions that linters enforce (formatting, nesting, naming)
  • Code review: See go-code-review when combining linter output with a manual review checklist
  • Error handling: See go-error-handling when errcheck flags unhandled errors and you need to decide how to handle them
  • Testing: See go-testing when running linters alongside tests in CI pipelines

Related skills

How it compares

Pick go-linting over manual golangci-lint docs when you need an opinionated .golangci.yml and first lint run in a single step.

FAQ

Which linters does go-linting enable by default?

go-linting enables 10 linters: errcheck, goimports, revive, govet, staticcheck, gosec, ineffassign, misspell, gocyclo, and bodyclose. The generated .golangci.yml sets a 5-minute timeout and zero max-issues-per-linter.

How do you run the go-linting skill?

go-linting ships a bash script (v1.0.0) that generates .golangci.yml and runs an initial golangci-lint pass. Execute it from the Go module root to bootstrap lint configuration and surface findings.

Is Go Linting safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Code Review & Qualitybackendtestingintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.