# modern-go

Переводит Go-файлы на идиомы и API той версии, что объявлена в go.mod. Полезно, когда проект обновили, а код остался на старых приёмах.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 518 установок · ★ 294
- Автор: smallnest
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/smallnest/goal-workflow/tree/HEAD/skills/modern-go/SKILL.md
- Обновлён: 2026-09-13
- HTML: https://affpapa.org/nevibecode/skills/modern-go

## Что делает

Скилл читает директиву `go` в `go.mod` и дальше правит `.go`-файлы, применяя только те преобразования, чья версия не выше объявленной. Каталог идёт от Go 1.0 к 1.26+: `time.Now().Sub(start)` становится `time.Since(start)`, `interface{}` — `any`, `err == io.EOF` — `errors.Is(err, io.EOF)`, конкатенация в цикле — `strings.Builder`. Есть замены посвежее: `strings.Cut`, `bytes.Clone`, `fmt.Appendf`, `errors.Join`, типизированные атомики вместо `atomic.LoadInt32`, `unsafe.Add` и `unsafe.Slice` вместо арифметики через `uintptr`.

Работает как `go fix` с добавкой из анализаторов команды Go и практик сообщества. По умолчанию проходит весь проект, но можно назвать файл или каталог — тогда правки ограничатся этим путём. Каталоги `vendor/`, `.git/` и `testdata/` пропускаются. После прогона скилл печатает, что изменил и что оставил.

Главное ограничение — версия. Преобразование для Go 1.20 не сработает в проекте, где в `go.mod` стоит 1.18, даже если код давно просит замены. Если поднять версию нельзя, часть каталога останется недоступной.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add smallnest/goal-workflow --skill modern-go -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/modern-go/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/modern-go/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add smallnest/goal-workflow --skill modern-go -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/modern-go/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add smallnest/goal-workflow --skill modern-go -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/modern-go/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install smallnest/goal-workflow modern-go
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/modern-go/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add smallnest/goal-workflow --skill modern-go -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/smallnest/goal-workflow --path skills/modern-go
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/modern-go/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add smallnest/goal-workflow --skill modern-go -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/smallnest/goal-workflow/tree/HEAD/skills/modern-go/SKILL.md

## Когда брать
- перевести старый Go-код на идиомы текущей версии
- убрать `interface{}` в пользу `any` по всему проекту
- заменить ручную арифметику с `uintptr` на `unsafe.Add`
- переписать разбор строк через `strings.Cut` вместо `strings.Index`
- почистить устаревшие строки `// +build` рядом с `//go:build`

## Примеры запросов агенту
- Модернизируй весь проект по версии из `go.mod`
- Приведи `internal/cache/cache.go` к современным идиомам Go
- Прогони modern-go по каталогу `pkg/`, покажи, что изменил

## Похожие
- [migrate-to-shoehorn](https://affpapa.org/nevibecode/skills/migrate-to-shoehorn.md) — скилл · 475388 установок
- [write-swift](https://affpapa.org/nevibecode/skills/write-swift.md) — скилл · 119300 установок
- [megacave](https://affpapa.org/nevibecode/skills/megacave.md) — скилл · 25400 установок
- [find-docs](https://affpapa.org/nevibecode/skills/find-docs.md) — скилл · 9400 установок
- [typescript-advanced-types](https://affpapa.org/nevibecode/skills/typescript-advanced-types.md) — скилл · 92169 установок
- [smart-explore](https://affpapa.org/nevibecode/skills/smart-explore.md) — скилл · 7300 установок

Из того же набора: [smallnest/goal-workflow](https://affpapa.org/nevibecode/by/smallnest/goal-workflow.md) — 7 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
