mcpField
G
go-development

go-development

github.com/netresearchDevelopment13123 installsUpdated today
Repository

About go-development

A Go development skill for developers reviewing or maintaining Go projects. It combines coding conventions, testing and security checks with focused reference guides for common engineering tasks.

Key features

  1. 01Type-safe Go patterns and conventions
  2. 02Testing and linting guidance
  3. 03Security and vulnerability checks
  4. 04Reference guides for Go engineering

Use cases

  1. 01Reviewing Go code for consistency
  2. 02Setting up project quality checks
  3. 03Choosing patterns for tests and errors

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/netresearch/go-development-skill --skill go-development

After installing, type/go-developmentin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

checkpoints.yaml
evals/
evals.json
references/
api-design.md
architecture.md
awesome-go-submission.md
branch-protection.md
contracts-and-invariants.md
cron-scheduling.md
dependencies.md
docker.md
fuzz-testing.md
ldap.md
lefthook-template.md
linting.md
logging.md
makefile.md
modernization.md
mutation-testing.md
resilience.md
reusable-workflows.md
single-build-release.md
testing.md
scripts/
verify-go-project.sh

Details

From the project README

Go Development Patterns

Core Principles

Type Safety
  • Avoid: interface{} (use any), sync.Map, scattered type assertions, reflection
  • Prefer: Generics [T any], errors.AsType[T] (Go 1.26), concrete types
  • Run go fix ./... after upgrades
Consistency
  • One pattern per problem domain
  • Match existing codebase patterns
  • Refactor holistically or not at all
  • Config precedence: defaults < config file < env vars < flags
Testing
  • Build tags isolate test tiers: unit (default), integration, e2e
  • Always use t.Parallel(), t.Helper(), table-driven subtests
  • Use log/slog directly -- never wrap it in custom Logger interfaces
Conventions
  • Naming: ID, URL, HTTP (not Id, Url, Http) — not tool-enforced (ST1003 is off by default)
  • Error wrapping: fmt.Errorf("failed to process: %w", err)

References

Git hooks: ls lefthook.yml 2>/dev/null && lefthook install || echo "Add lefthook — see references/lefthook-template.md"

Load as needed:

ReferencePurpose
references/architecture.mdPackage structure, state mutation completeness
references/logging.mdStructured logging with log/slog, migration from logrus
references/cron-scheduling.mdgo-cron patterns: named jobs, runtime updates, resilience
references/resilience.mdPointer to go-cron's built-in retry/circuit-breaker/timeout wrappers
references/docker.mdDocker client patterns, buffer pooling
references/ldap.mdLDAP/Active Directory integration
references/testing.mdBuild tags, resource isolation, race gotchas
references/linting.mdgolangci-lint v2, staticcheck
references/api-design.mdEnum/status defensive handling
references/fuzz-testing.mdGo fuzzing patterns, security seeds
references/contracts-and-invariants.mdContracts, invariants, property tests
references/mutation-testing.mdGremlins configuration, test quality measurement
references/makefile.mdStandard Makefile interface for CI/CD
references/modernization.mdgo fix modernizers and their build-tag trap, errors.AsType[T], b.Loop
references/dependencies.mdUpgrades: go get -u all, majors, build-set scoping
references/lefthook-template.mdReady-to-use lefthook.yml for Go project git hooks
references/branch-protection.mdRuleset watermark: three-ruleset gate, bypass modes
references/reusable-workflows.mdReusable Actions workflow callers, permission propagation, release-gate outputs
references/single-build-release.mdSingle-build release: cross-compile once, reuse for release+container
references/awesome-go-submission.mdawesome-go submission: CI-parsed PR body, name collisions

Quality Gates

Run before completing any review:

golangci-lint run --timeout 5m    # Linting
go vet ./...                       # Static analysis
staticcheck ./...                  # Additional checks
govulncheck ./...                  # Vulnerability scan
go test -race ./...                # Race detection

Stdlib Vulnerability Fixes

When govulncheck reports stdlib vulnerabilities: check fix version via vuln.go.dev, update go X.Y.Z in go.mod, run go mod tidy.


Contributing: Submit improvements to https://github.com/netresearch/go-development-skill

Comments

Markdown supported