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

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

Скилл задаёт правила порядка функций в файле Go, оформления сигнатур и форматирования строк. Пригодится при написании или рефакторинге методов.

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

Что делает go-functions

Скилл выстраивает функции внутри Go-файла по строгой схеме. Сначала объявляются типы данных, затем идут конструкторы NewXxx, публичные функции, приватные методы и вспомогательные утилиты в самом конце. Методы сортируются примерно по порядку их вызова и группируются по получателю (receiver). Длинные сигнатуры переносятся построчно, где каждый аргумент занимает отдельную строку с запятой на конце.

Правила запрещают передавать указатели на интерфейсы: в Go интерфейсы передаются как значения. Для функций форматирования скилл требует суффикс f в названии — иначе сломается проверка через go vet. При форматировании сообщений об ошибках и логов предписывается использовать глагол %q вместо ручного оборачивания строк через %s, чтобы спецсимволы экранировались безопасно.

Скилл намеренно исключает паттерн функциональных опций и правила обработки ошибок. Если вам нужны конструкторы с опциями вроде WithTimeout, придётся подключить отдельный скилл go-functional-options.

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

  • упорядочить методы и конструкторы внутри Go-файла
  • оформить длинную сигнатуру функции с переносом параметров
  • настроить имена функций форматирования для проверок go vet
  • заменить голые булевы аргументы на отдельные типы

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

  • Разбей эту длинную сигнатуру метода в Go по правилам оформления
  • Наведи порядок в методах структуры: отсортируй по ресиверу и вызовам
  • Оформи функцию форматирования текста с суффиксом для go vet

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

1Через Skills CLI (Vercel)

npx skills add cxuu/golang-skills --skill go-functions -a claude-code

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

~/.claude/skills/go-functions/SKILL.md

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

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

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

go-naming Скилл следит за именами в Go: пакеты, типы, функции, константы, получатели. Пригодится, когда агент создаёт новые типы или экспортируемое API. CX Codex +1 1 200установок go-context Задаёт правила работы с context.Context в Go: от сигнатур функций и таймаутов до разделения данных запроса и параметров. CX Codex +1 1 200установок go-style-core Скилл задаёт базовые правила оформления Go-кода: отступы, вложенность, naked returns, точки с запятой. Пригодится, когда агент пишет или правит код на Go. CX Codex +1 1 200установок go-performance Скилл для оптимизации Go: подсказывает, где заменить fmt на strconv, как задать ёмкость слайса и когда хватит strings.Builder. CX Codex +1 1 200установок go-interfaces Направляет агента при проектировании интерфейсов в Go, композиции типов и проверке контрактов. Помогает избежать преждевременных абстракций в публичном API. CX Codex +1 1 200установок go-declarations Скилл для ИИ-агента, который подсказывает, как объявлять переменные, константы, структуры и мапы в Go. Пригодится, когда пишете новый struct или блок const. CX Codex +1 1 000установок go-generics Скилл подсказывает, когда в Go стоит брать дженерики, а когда хватит конкретных типов или интерфейса. Полезен, если пишете утилиту под несколько типов. CX Codex +1 1 000установок go-logging Скилл для ИИ-агента, который подсказывает, как писать логи в Go: уровни, структурные поля, контекст запроса. Пригодится, когда проект на Go обрастает логами и надо навести порядок. CX Codex +1 1 000установок

Похожие

golang-code-style samber Скилл помогает писать понятный код на Go, разбирая правила длины строк, объявления переменных, управления потоком выполнения и комментариев. Пригодится при написании и ревью кода, обсуждении стилистики или установке стандартов проекта. CX Codex +1 44 200установок typescript-variables mkosir Применяет соглашения TypeScript для переменных: const assertions, замена enum на литеральные типы, union вместо флагов, различение null и undefined. CX Codex +1 3 800установок dart-best-practices kevmoo Скилл задаёт правила оформления кода на Dart при генерации и ревью. Помогает форматировать многострочные блоки и соблюдать лимит длины строки в 80 знаков. CX Codex +1 832установок golang-modernize samber Скилл обновляет Go-код до актуальных идиом языка, стандартной библиотеки и инструментов. Пригодится при ревью старых паттернов, апгрейде версии Go или обновлении CI. CX Codex +1 40 300установок code-style frappe Набор правил, по которым агент пишет и правит код: короткие функции, небольшие файлы, порядок хелперов. Подключается, когда вы просите отрефакторить или разбить файл. CX Codex +1 880установок finding-duplicate-functions obra Находит функции с одинаковым смыслом, но разными названиями и кодом. Помогает расчистить утилиты и хелперы в репозиториях, которые писали разные люди или нейросети. CX Codex +1 634установок

Рядом в теме «Языки программирования»

Все скиллы по теме «Языки программирования» →

Вопросы о go-functions

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

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

Что делает скилл go-functions?

Он задаёт правила структуры Go-файла, переноса параметров в длинных сигнатурах, запрета указателей на интерфейсы и именования функций форматирования.

Подходит ли этот скилл для настройки Functional Options?

Нет, конструкторы вроде WithTimeout исключены из этих правил. Для них предназначен отдельный скилл go-functional-options.

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

SKILL.md · Apache-2.0
---
name: go-functions
description: Use when organizing functions within a Go file, formatting function signatures, designing return values, or following Printf-style naming conventions. Also use when a user is adding or refactoring any Go function, even if they don't mention function design or signature formatting. Does not cover functional options constructors (see go-functional-options).
---

# Go Function Design

## Resource Routing

- `references/SIGNATURES.md` - Read when designing parameters, return values, named results, or signature readability.
- `references/PRINTF-STRINGER.md` - Read when using fmt verbs, Stringer, GoStringer, Formatter, or Printf-style function naming.

> **When this skill does NOT apply**: For functional options constructors (`WithTimeout`, `WithLogger`), see [go-functional-options](../go-functional-options/SKILL.md). For error return conventions, see [go-error-handling](../go-error-handling/SKILL.md). For naming functions and methods, see [go-naming](../go-naming/SKILL.md).

---

## Function Grouping and Ordering

Organize functions in a file by these rules:

1. Functions sorted in **rough call order**
2. Functions **grouped by receiver**
3. **Exported** functions appear first, after `struct`/`const`/`var` definitions
4. `NewXxx`/`newXxx` constructors appear right after the type definition
5. Plain utility functions appear toward the end of the file

```go
type something struct{ ... }

func newSomething() *something { return &something{} }

func (s *something) Cost() int { return calcCost(s.weights) }

func (s *something) Stop() { ... }

func calcCost(n []int) int { ... }
```

---

## Function Signatures

Keep the signature on a single line when possible. When it must wrap, put **all
arguments on their own lines** with a trailing comma:

```go
func (r *SomeType) SomeLongFunctionName(
    foo1, foo2, foo3 string,
    foo4, foo5, foo6 int,
) {
    foo7 := bar(foo1)
}
```

Add `/* name */` comments for ambiguous arguments, or better yet, replace naked
`bool` parameters with custom types.

---

## Pointers to Interfaces

You almost never need a pointer to an interface. Pass interfaces as values — the
underlying data can still be a pointer.

```go
// Bad: pointer to interface
func process(r *io.Reader) { ... }

// Good: pass the interface value
func process(r io.Reader) { ... }
```

---

## Printf and Stringer

### Printf-style Function Names

Functions that accept a format string should end in `f` for `go vet` support.
Declare format strings as `const` when used outside `Printf` calls.

Prefer `%q` over `%s` with manual quoting when formatting strings for logging
or error messages — it safely escapes special characters and wraps in quotes:

```go
return fmt.Errorf("unknown key %q", key) // produces: unknown key "foo\nbar"
```

See **go-functional-options** when designing a constructor with 3+ optional
parameters.

---

## Quick Reference

| Topic | Rule |
|-------|------|
| File ordering | Type -> constructor -> exported -> unexported -> utils |
| Signature wrapping | All args on own lines with trailing comma |
| Naked parameters | Add `/* name */` comments or use custom types |
| Pointers to interfaces | Almost never needed; pass interfaces by value |
| Printf function names | End with `f` for `go vet` support |

---

## Related Skills

- **Error returns**: See [go-error-handling](../go-error-handling/SKILL.md) when designing error return patterns or wrapping errors in multi-return functions
- **Naming conventions**: See [go-naming](../go-naming/SKILL.md) when naming functions, methods, or choosing getter/setter patterns
- **Functional options**: See [go-functional-options](../go-functional-options/SKILL.md) when designing a constructor with 3+ optional parameters
- **Formatting principles**: See [go-style-core](../go-style-core/SKILL.md) when deciding line length, naked returns, or signature formatting

© cxuu · Apache-2.0 · cxuu/golang-skills

Смотрите также

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

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