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

go-dependency-audit — скилл для Claude Code: аудит Go-зависимостей

Скилл проверяет зависимости Go-модуля на уязвимости, устаревшие версии и проблемы в go.mod. Пригодится перед обновлением или ревью зависимостей.

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

Что делает go-dependency-audit

go-dependency-audit проводит аудит Go-модуля: ищет известные уязвимости, устаревшие и неиспользуемые пакеты, лишние транзитивные зависимости и проблемы в go.mod. Он также помогает оценить сопровождение, лицензию, размер дерева зависимостей и стабильность API.

В проверках используются команды Go и govulncheck: можно просмотреть версии модулей, доступные обновления, контрольные суммы, граф зависимостей и причины появления транзитивного модуля. Скилл работает в режиме только чтения и не меняет код. Без Go toolchain аудит не запустится; для govulncheck нужен доступ к proxy.golang.org.

Скилл отделяет аудит зависимостей от проверки безопасности кода и архитектуры. После обновления он советует прогнать полный набор тестов, включая go test -race ./....

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

  • проверить Go-зависимости на CVE
  • найти устаревшие версии модулей
  • выявить неиспользуемые записи в go.mod
  • разобрать транзитивное дерево зависимостей
  • оценить сторонний пакет перед добавлением

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

  • Проведи аудит зависимостей Go-модуля и проверь известные уязвимости.
  • Проверь go.mod на лишние зависимости и доступные обновления.
  • Разбери, почему в дерево попал указанный транзитивный модуль, и оцени его риски.

Как установить go-dependency-audit

1Через Skills CLI (Vercel)

npx skills add eduardo-sl/go-agent-skills --skill go-dependency-audit -a claude-code

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

~/.claude/skills/go-dependency-audit/SKILL.md

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

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

Вопросы о go-dependency-audit

Как установить go-dependency-audit в Claude Code?

Выполните npx skills add eduardo-sl/go-agent-skills --skill go-dependency-audit -a claude-code. После установки файл скилла находится по пути ~/.claude/skills/go-dependency-audit/SKILL.md.

Что делает go-dependency-audit?

Он проверяет Go-модули на уязвимости, устаревшие, лишние и неиспользуемые зависимости, а также анализирует чистоту go.mod и качество сторонних пакетов.

Чем этот скилл отличается от аудита безопасности кода?

go-dependency-audit проверяет состав и версии зависимостей. Проверка безопасности кода и архитектурный аудит вынесены в другие скиллы.

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

SKILL.md · MIT
---
name: go-dependency-audit
description: >
  Audit Go module dependencies: detect outdated packages, check for known
  vulnerabilities, review go.mod hygiene, identify unused or redundant deps,
  and evaluate dependency quality. Use when auditing dependencies, checking
  for CVEs, cleaning up go.mod, upgrading modules, or evaluating third-party
  packages. Trigger examples: "check dependencies", "audit deps", "go.mod
  review", "update modules", "vulnerability scan", "govulncheck".
  Not for: code-level security (go-security-audit), architecture review
  (go-architecture-review).
user-invocable: true
license: MIT
compatibility: Designed for Claude Code or similar AI coding agents working on Go projects. Requires the Go toolchain. Requires network access to proxy.golang.org. Read-only: this skill reports findings, it does not edit code.
allowed-tools: Read Glob Grep Bash(go:*) Bash(gofmt:*) Bash(govulncheck:*)
metadata:
  author: eduardo-sl
  version: "1.2.0"
---

# Go Dependency Audit

Every dependency you add is code you don't control but are responsible for.
Audit ruthlessly.

Detailed reference material, loaded on demand:

- `references/resolution-and-workspaces.md` — minimal version selection,
  `replace`/`exclude`/`retract`, `go.work`, tool dependencies.

Read a reference file only when the summary below is not enough.

## 1. Vulnerability Scanning

### govulncheck (official Go tool):

```bash
# Ad hoc, without touching go.mod
go run golang.org/x/vuln/cmd/govulncheck@latest ./...

# Pinned as a module tool (Go 1.24+) — recommend this to the project so
# every developer and CI job runs the same version
go get -tool golang.org/x/vuln/cmd/govulncheck
go tool govulncheck ./...

# Scan a built binary
go tool govulncheck -mode=binary ./bin/api-server
```

`govulncheck` checks against the Go vulnerability database and reports
only vulnerabilities that actually affect your code paths — not just
transitive deps you never call.

Run this in CI. No exceptions.

### Additional scanning:

```bash
# Nancy (Sonatype OSS Index)
go list -json -deps ./... | nancy sleuth

# Trivy (container + deps)
trivy fs --scanners vuln .
```

## 2. go.mod Hygiene

### Check for unused dependencies:

```bash
go mod tidy
git diff go.mod go.sum  # any changes = deps were stale
```

`go mod tidy` MUST be run before every commit. Add to CI:

```bash
go mod tidy
git diff --exit-code go.mod go.sum
```

### No replace directives in committed code

A committed `replace => ../local-path` breaks every other checkout; local
multi-module work belongs in `go.work`. The one exception — a temporary
fork with a linked issue — is in section 8.

### Verify checksums:

```bash
go mod verify
```

This confirms that downloaded modules match their expected checksums.
Failures indicate supply-chain tampering.

## 3. Dependency Evaluation Criteria

Before adding any dependency, evaluate:

| Criterion | Check |
|---|---|
| **Maintenance** | Last commit < 6 months? Active issue responses? |
| **Popularity** | Stars/forks alone mean nothing. Usage in production projects matters. |
| **License** | Compatible with your project? MIT/Apache/BSD preferred. |
| **Size** | Does it pull in 50 transitive deps for one function? |
| **Alternatives** | Can you do this with stdlib in < 50 lines? |
| **API stability** | Is it v1+? Does it follow semver? Frequent breaking changes? |
| **Test coverage** | Does the project have meaningful tests? |

### The stdlib question:

Go's standard library is excellent. Before adding a dependency, ask:
"Can I solve this with `net/http`, `encoding/json`, `database/sql`,
`text/template`, `crypto/*`, `os/exec`, etc.?"

If the answer is yes and the code is < 100 lines, write it yourself.

## 4. Module Version Audit

### List all dependencies with versions:

```bash
go list -m all
```

### Check for available updates:

```bash
go list -m -u all  # shows available updates
```

### Upgrade strategy:

```bash
# Update one module to its latest minor/patch
go get github.com/foo/bar@latest

# Patch releases only, for every dependency of the packages
go get -u=patch ./...

# Latest minor/patch of every dependency (add -t to include test deps)
go get -u ./...
```

`go get -u` never crosses a major version: `github.com/foo/bar/v2` is a
different module path. A major upgrade means changing the import paths
and reading the changelog — it is a migration, not an update.

ALWAYS run full test suite after updates:

```bash
go get github.com/foo/[email protected]
go mod tidy
go test -race ./...
```

## 5. Transitive Dependency Analysis

```bash
# Why is this module in my dependency tree?
go mod why github.com/some/transitive-dep

# Full dependency graph
go mod graph

# Visual dependency graph (with modgraphviz)
go mod graph | modgraphviz | dot -Tpng -o deps.png
```

Watch for:
- 🔴 Transitive deps with known CVEs
- 🔴 Abandoned transitive deps (no commits in 2+ years)
- 🟡 A dependency forcing a higher minimum version of a shared module on
  everyone (minimal version selection picks the highest requirement)
- 🟡 Two major versions of one library (`v1` and `v2`) linked side by side
- 🟡 Oversized transitive trees (a logging library pulling in gRPC)

## 6. Go Version Management

```go
// go.mod
module github.com/myorg/myproject

go 1.22  // minimum Go version required
```

Rules:
- Set `go` directive to the minimum version that supports features you use.
- `toolchain` directive (Go 1.21+) pins the exact toolchain version.
- Test against multiple Go versions in CI (at minimum: current and previous).

## 7. Adding a Dependency

Ask before adding one: a new module is code the team must audit, update
and trust indefinitely, and the agent should not make that decision
silently. When proposing one:

- Name the standard-library alternative and why it is not enough — since
  Go 1.21-1.27, `slog`, `slices`/`maps`, `errors.Join`, ServeMux routing,
  `os.Root` and `uuid` each removed a common reason to add a dependency.
- Report what the evaluation criteria above found: maintenance, license,
  transitive size (`go mod graph` after a trial `go get`), API stability.
- Avoid frameworks that take over `main`, ORMs that hide the SQL, and code
  generators nobody on the team understands.

## 8. Resolving Version Problems

- Minimal version selection builds with the highest *minimum* any module
  requires — adding one dependency can raise another's version.
- Application fixes: `replace` (temporary fork, with an issue link) and
  `exclude` (a known-broken version). Both apply only in the main module.
- Library fixes: `retract` versions you published by mistake; it is the
  only signal that reaches consumers.
- Local multi-module work uses `go.work`, not committed
  `replace => ../path` directives.
- Developer tools are `go.mod` tool dependencies (`go get -tool`, Go
  1.24+), not a `tools.go` file.

Examples: `references/resolution-and-workspaces.md`.

## Audit Output Format

```text
## Dependency Audit Report

**Module:** github.com/myorg/myproject
**Go version:** 1.22
**Direct deps:** N | **Indirect deps:** M

### 🔴 Vulnerabilities
- CVE-XXXX-YYYY in github.com/foo/[email protected] — upgrade to v1.2.5

### 🟡 Outdated Dependencies
- github.com/foo/bar v1.2.3 → v1.5.0 available (minor)

### 🟢 Observations
- go.mod is clean, no replace directives
- All deps actively maintained
```

© eduardo-sl · MIT · eduardo-sl/go-agent-skills

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

Все скиллы по теме «Языки программирования» →
migrate-to-shoehorn Matt Pocock Переводит type assertions с as в тестах на функции из @total-typescript/shoehorn. Нужен для частичных объектов и намеренно неверных данных в проверках. 475 388установок write-swift emilkowalski Скилл помогает писать, проверять и переносить код на Swift с учётом модели языка. Подойдёт, когда нужно разобраться с конкурентностью, ошибкой или циклом удержания объектов. CX Codex +1 119 300установок megacave JuliusBrussee Переводит ответы ассистента на классический китайский язык (вэньянь) для экономии места на экране. Активируется командами /megacave или /caveman wenyan. CX Codex +1 25 400установок find-docs upstash Тянет актуальную документацию, справочники API и примеры кода для любой библиотеки через Context7 CLI. Пригодится, когда агент отвечает по устаревшим данным обучения. CX Codex +1 9 400установок typescript-advanced-types Seth Hobson Помогает агенту писать сложную типизацию TypeScript: generics, conditional types и преобразования типов. Нужен для библиотек, API-клиентов и строгих конфигураций. CX Codex 92 169установок smart-explore thedotmack Структурно ищет функции и классы через tree-sitter. Пригодится, когда нужно разобраться в кодовой базе без чтения всех файлов. CX Codex +1 7 300установок

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

go-skills-router Скилл помогает выбрать основной Go-скилл и дополнительные для задачи. Пригодится, когда запрос затрагивает несколько областей или непонятно, где проходит граница между похожими скиллами. CX Codex +1 ★ 83звёзд репо go-semantic-tools Ищет вызовы, реализации и зависимости в Go-проектах через gopls и go list, а не текстовый поиск. Понимает интерфейсы, embedding и cross-package использование — то, что grep не видит. CX Codex +1 ★ 83звёзд репо go-ci Скилл помогает агенту писать и настраивать GitHub Actions для Go-проектов. Нужен, когда нужна пайплайн с линтингом, тестами, проверками безопасности и кешированием. CX Codex +1 ★ 83звёзд репо git-commit Скилл учит агента писать коммиты по Conventional Commits: тип, область, императив в заголовке. Пригодится, когда история коммитов в проекте превратилась в кашу. CX Codex +1 ★ 83звёзд репо go-test-quality Скилл помогает писать и проверять тесты Go: от выбора подхода до изоляции сценариев и поиска пробелов в покрытии. Пригодится при доработке тестов и разборе нестабильных проверок. CX Codex +1 ★ 83звёзд репо go-troubleshooting Скилл ведёт агента по диагностике рантайм-проблем в Go: паники, дедлоки, утечки горутин и памяти, отчёты race detector. Пригодится, когда программа падает или висит, а причина неясна. CX Codex +1 ★ 83звёзд репо go-performance-review Скилл ищет узкие места в Go-коде и помогает проверять оптимизации бенчмарками и профилями. Пригодится для ревью горячих путей и снижения аллокаций. CX Codex +1 ★ 83звёзд репо go-observability Скилл для Go-сервисов: помогает настроить структурные логи на log/slog, трейсы и метрики через OpenTelemetry, а также алерты по SLO. Пригодится, когда сервис уже в проде и нужно видеть, что в нём происходит. CX Codex +1 ★ 83звёзд репо

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

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