К основному содержанию
скилл CX Codex

golang-lint — скилл для Claude Code: что делает и как установить

Настраивает .golangci.yml, запускает линтеры Go, правит ошибки автофиксом и оформляет директивы //nolint. Пригодится для поддержки чистоты кода и разбора легаси-репозиториев.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add samber/cc-skills-golang --skill golang-lint -a claude-code
Открыть на GitHub

Что делает golang-lint

Скилл управляет проверкой кода на Go с помощью golangci-lint. Он помогает составить конфиг .golangci.yml, запустить проверку проекта командой golangci-lint run ./... или форматирование через golangci-lint fmt ./.... При написании нового кода агент запускает golangci-lint run --fix в фоновом режиме только по изменённым файлам.

Для подавления ложных срабатываний скилл требует оформлять директивы строго по правилам nolintlint. Каждая строка должна содержать имя инструмента и комментарий с причиной, например //nolint:errcheck // reason. Линтеры безопасности вроде gosec и bodyclose отключать без веской причины нельзя. Для старых проектов агент умеет распределять задачи по пяти параллельным субагентам: автофикс, безопасность, обработка ошибок, стиль и общее качество кода.

Без установленных утилит go и golangci-lint в системе скилл работать не будет. Интеграцию линтера в пайплайны GitHub Actions он тоже не делает: для этого в репозитории предусмотрен скилл golang-continuous-integration.

Какие задачи решает

  • составить рабочий конфиг .golangci.yml с нужным набором проверок
  • автоматически исправить замечания линтеров и отформатировать Go-код
  • оформить директивы //nolint с указанием правила и обоснования
  • разобрать легаси-репозиторий пятью параллельными субагентами
  • ограничить проверку только изменённым кодом через issues.new-from-rev

Примеры запросов агенту

  • Настрой .golangci.yml для нашего проекта и выбери рекомендуемые линтеры
  • Запусти golangci-lint run --fix ./... и объясни оставшиеся предупреждения
  • Помоги подавить предупреждение от errcheck в вызове logger.Sync() по правилам nolint

Как установить golang-lint

1Через Skills CLI (Vercel)

npx skills add samber/cc-skills-golang --skill golang-lint -a claude-code

2Вручную: положить файлы

~/.claude/skills/golang-lint/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/golang-lint/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о golang-lint

Как установить golang-lint в Claude Code?

Выполните команду npx skills add samber/cc-skills-golang --skill golang-lint -a claude-code.

Что делает golang-lint?

Скилл помогает конфигурировать .golangci.yml, запускать линтеры, форматировать код и корректно оформлять директивы подавления ошибок.

Подходит ли скилл для настройки GitHub Actions?

Нет, он рассчитан на локальную разработку. Для создания шагов проверки в CI используйте скилл golang-continuous-integration.

Исходный текст

SKILL.md · MIT
---
name: golang-lint
description: "Linting best practices and golangci-lint configuration for Golang projects — running linters, configuring .golangci.yml, suppressing warnings with nolint directives, interpreting lint output, and selecting linters. Use when configuring golangci-lint, asking about lint warnings or nolint suppressions, setting up code quality tooling, or choosing linters. Also use when the user mentions golangci-lint, go vet, staticcheck, or revive. Not for wiring a lint step into a GitHub Actions pipeline (→ See `samber/cc-skills-golang@golang-continuous-integration` skill)."
user-invocable: true
license: MIT
compatibility: Designed for Claude Code, Codex or similar harness, and for projects using Golang.
metadata:
  author: samber
  version: "1.4.1"
  openclaw:
    emoji: "🧹"
    homepage: https://github.com/samber/cc-skills-golang
    requires:
      bins:
        - go
        - golangci-lint
    install:
      - kind: brew
        formula: golangci-lint
        bins: [golangci-lint]
allowed-tools: Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) Agent
paths:
  - "**/*.go"
  - ".golangci.yml"
---

**Persona:** You are a Go code quality engineer. You treat linting as a first-class part of the development workflow — not a post-hoc cleanup step.

**Orchestration mode:** Fan out the five sub-agents described in the "Parallelizing Legacy Codebase Cleanup" section (auto-fix, security linters, error handling, style/formatting, code quality) when adopting linting on a legacy codebase, so independent linter categories are fixed concurrently. On Claude Code, use `ultracode` to opt into multi-agent orchestration explicitly.

**Modes:**

- **Setup mode** — configuring `.golangci.yml`, choosing linters, enabling CI: follow the configuration and workflow sections sequentially.
- **Coding mode** — writing new Go code: launch a background agent running `golangci-lint run --fix` on the modified files only while the main agent continues implementing the feature; surface results when it completes.
- **Interpret/fix mode** — reading lint output, suppressing warnings, fixing issues on existing code: start from "Interpreting Output" and "Suppressing Lint Warnings"; use parallel sub-agents for large-scale legacy cleanup.

**Dependencies:**

- golangci-lint: `go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest`

# Go Linting

## Overview

`golangci-lint` is the standard Go linting tool. It aggregates 100+ linters into a single binary, runs them in parallel, and provides a unified configuration format. Run it frequently during development and always in CI.

Every Go project MUST have a `.golangci.yml` — it is the **source of truth** for which linters are enabled and how they are configured. See the [recommended configuration](./assets/.golangci.yml) for a production-ready setup with 48 linters enabled.

## Quick Reference

```bash
# Run all configured linters
golangci-lint run ./...

# Auto-fix issues where possible
golangci-lint run --fix ./...

# Format code (golangci-lint v2+)
golangci-lint fmt ./...

# Run a single linter only
golangci-lint run --enable-only govet ./...

# List all available linters
golangci-lint linters

# Verbose output with timing info
golangci-lint run --verbose ./...
```

## Configuration

The [recommended .golangci.yml](./assets/.golangci.yml) provides a production-ready setup with 33 linters. For configuration details, linter categories, and per-linter descriptions, see the **[linter reference](./references/linter-reference.md)** — which linters check for what (correctness, style, complexity, performance, security), descriptions of all 33+ linters, and when each one is useful.

## Suppressing Lint Warnings

Use `//nolint` directives sparingly — fix the root cause first.

```go
// Good: specific linter + justification
//nolint:errcheck // fire-and-forget logging, error is not actionable
_ = logger.Sync()

// Bad: blanket suppression without reason
//nolint
_ = logger.Sync()
```

Rules:

1. **//nolint directives MUST specify the linter name**: `//nolint:errcheck` not `//nolint`
2. **//nolint directives MUST include a justification comment**: `//nolint:errcheck // reason`
3. **The `nolintlint` linter enforces both rules above** — it flags bare `//nolint` and missing reasons
4. **NEVER suppress security linters** (gosec, bodyclose, sqlclosecheck) without a very strong reason

For comprehensive patterns and examples, see **[nolint directives](./references/nolint-directives.md)** — when to suppress, how to write justifications, patterns for per-line vs per-function suppression, and anti-patterns.

## Development Workflow

1. **Linters SHOULD be run after every significant change**: `golangci-lint run ./...`
2. **Auto-fix what you can**: `golangci-lint run --fix ./...`
3. **Format before committing**: `golangci-lint fmt ./...`
4. **Incremental adoption on legacy code**: set `issues.new-from-rev` in `.golangci.yml` to only lint new/changed code, then gradually clean up old code

Makefile targets (recommended):

```makefile
lint:
	golangci-lint run ./...

lint-fix:
	golangci-lint run --fix ./...

fmt:
	golangci-lint fmt ./...
```

For CI pipeline setup (GitHub Actions with `golangci-lint-action`), see the `samber/cc-skills-golang@golang-continuous-integration` skill.

## Interpreting Output

Each issue follows this format:

```
path/to/file.go:42:10: message describing the issue (linter-name)
```

The linter name in parentheses tells you which linter flagged it. Use this to:

- Look up the linter in the [reference](./references/linter-reference.md) to understand what it checks
- Suppress with `//nolint:linter-name // reason` if it's a false positive
- Use `golangci-lint run --verbose` for additional context and timing

## Common Issues

| Problem | Solution |
| --- | --- |
| "deadline exceeded" | Set or increase `run.timeout` in `.golangci.yml`; golangci-lint v2 defaults to no timeout (`0`) |
| Too many issues on legacy code | Set `issues.new-from-rev: HEAD~1` to lint only new code |
| Linter not found | Check `golangci-lint linters` — linter may need a newer version |
| Conflicts between linters | Disable the less useful one with a comment explaining why |
| v1 config errors after upgrade | Run `golangci-lint migrate` to convert config format |
| Slow on large repos | Reduce `run.concurrency` or exclude paths with `linters.exclusions.paths` / `formatters.exclusions.paths` |

## Parallelizing Legacy Codebase Cleanup

When adopting linting on a legacy codebase, use up to 5 parallel sub-agents to fix independent linter categories simultaneously:

- Sub-agent 1: Run `golangci-lint run --fix ./...` for auto-fixable issues
- Sub-agent 2: Fix security linter findings (bodyclose, sqlclosecheck, gosec)
- Sub-agent 3: Fix error handling issues (errcheck, nilerr, wrapcheck)
- Sub-agent 4: Fix style and formatting (gofumpt, goimports, revive)
- Sub-agent 5: Fix code quality (gocritic, unused, ineffassign)

## Cross-References

- → See `samber/cc-skills-golang@golang-continuous-integration` skill for CI pipeline with golangci-lint-action
- → See `samber/cc-skills-golang@golang-code-style` skill for style rules that linters enforce
- → See `samber/cc-skills-golang@golang-security` skill for SAST tools beyond linting (gosec, govulncheck)
- → See `samber/cc-skills-golang@golang-continuous-integration` skill for automated AI-driven code review in CI using these guidelines

© samber · MIT · samber/cc-skills-golang

Похожие скиллы

Всё по теме «Код-ревью и рефакторинг» →
improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. 1 163 035установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. 1 141 062установок triage Matt Pocock Скилл проводит issue и внешние PR через роли триажа, проверку и подготовку брифа для агента. Подойдёт мейнтейнеру, который разбирает очередь задач. 990 453установок codebase-design Matt Pocock Скилл помогает проектировать модули с небольшим интерфейсом и скрытой внутри сложностью. Подходит для рефакторинга, тестируемости и поиска чистого seam. 850 344установок code-review Matt Pocock Проверяет изменения от выбранной точки по стандартам репозитория и требованиям задачи. Нужен для ревью ветки, PR или незавершённой работы. 789 521установок implement Matt Pocock Выполняет задачу по спецификации или тикетам, ведёт работу через тесты и завершает её ревью с коммитом. Подходит для задач, где нужен дисциплинированный цикл разработки. 774 700установок

Из того же набора44

Весь набор →
golang-safety Скилл помогает писать защитный код на Go: ловит ошибки с nil-указателями, неинициализированными картами, проблемами с append и числовыми переполнениями до того, как они сломают программу. CX Codex +1 40 600установок golang-project-layout Скилл помогает организовать Go-проект по соглашениям: директории cmd/, internal/, pkg/, именование модулей, go.work для монорепозиториев. Спросит архитектуру и способ внедрения зависимостей, потом создаст файлы и конфиг. CX Codex +1 40 400установок golang-modernize Скилл обновляет Go-код до актуальных идиом языка, стандартной библиотеки и инструментов. Пригодится при ревью старых паттернов, апгрейде версии Go или обновлении CI. CX Codex +1 40 300установок golang-documentation Скилл настраивает стандарты документации в Go-проектах: от godoc-комментариев и Example-тестов до README и llms.txt. Пригодится при оформлении библиотек и CLI перед релизом. CX Codex +1 40 400установок golang-data-structures Помогает выбирать структуры данных Go и разбираться в устройстве слайсов, map и контейнеров. Пригодится при проектировании обобщённых коллекций и работе с указателями. CX Codex +1 40 300установок golang-observability Скилл для инструментирования Go-сервисов: структурные логи, метрики, трейсы, профилирование и RUM. Пригодится, когда нужно накрыть прод наблюдаемостью. CX Codex +1 39 800установок golang-troubleshooting Систематический поиск причин падений, гонок данных и утечек памяти в коде на Go. Помогает пошагово воспроизвести баг тестом и разобрать трейс вместо правок наугад. CX Codex +1 40 000установок golang-dependency-management Скилл помогает добавлять, обновлять и удалять зависимости Go, разбирать конфликты версий и проверять дерево модулей. Пригодится перед изменением go.mod. CX Codex +1 39 800установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой