Skip to content

netresearch/go-development

v1.16.1(MIT AND CC-BY-SA-4.0)

Production-grade Go development patterns for resilient services

Go Development Skill

Production-grade Go development patterns for building resilient services, extracted from real-world projects including job schedulers, Docker integrations, and LDAP clients.

πŸ”Œ Compatibility

This is an Agent Skill following the open standard originally developed by Anthropic and released for cross-platform use.

Supported Platforms:

  • βœ… Claude Code (Anthropic)
  • βœ… Cursor
  • βœ… GitHub Copilot
  • βœ… Other skills-compatible AI agents

Skills are portable packages of procedural knowledge that work across any AI agent supporting the Agent Skills specification.

Features

  • Architecture Patterns: Package structure conventions, state mutation completeness
  • Cron Scheduling: go-cron patterns β€” named jobs, runtime updates, per-entry context, resilience wrappers, observability, FakeClock testing, bitmask parser options
  • Resilience Patterns: go-cron's built-in retry/circuit-breaker/timeout wrappers for scheduled jobs
  • Docker Integration: Optimized Docker client patterns, buffer pooling for performance, container execution patterns
  • LDAP Integration: Active Directory patterns, user and group management, authentication flows
  • Testing Strategy: Build tags for test isolation (unit/integration/e2e), race-condition and Fiber v2 test gotchas, resource isolation
  • Observability: Prometheus metrics integration, structured logging, error tracking

Installation

Marketplace (Recommended)

Add the Netresearch marketplace once, then browse and install skills:

# Claude Code
/plugin marketplace add netresearch/claude-code-marketplace
/plugin install go-development@netresearch-claude-code-marketplace

Without a marketplace

Since Claude Code 2.1.157 a plugin directory under your personal skills directory loads on its own:

mkdir -p ~/.claude/skills
git clone https://github.com/netresearch/go-development-skill.git \
  ~/.claude/skills/go-development

It loads as go-development@skills-dir on the next session. Update with git -C ~/.claude/skills/go-development pull and start a new session; remove it by deleting the directory. This route has no claude plugin update.

npx (skills.sh)

Install with any Agent Skills-compatible agent:

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

Download Release

Download the latest release and extract to your agent's skills directory.

Git Clone

git clone https://github.com/netresearch/go-development-skill.git

Composer (PHP Projects)

composer require netresearch/go-development-skill

Requires netresearch/composer-agent-skill-plugin.

Usage

This skill is automatically triggered when:

  • Building Go services or CLI applications
  • Implementing job scheduling or task orchestration
  • Integrating with Docker API
  • Building LDAP/Active Directory clients
  • Designing resilient systems with retry logic
  • Setting up comprehensive test suites

Example queries:

  • "Create a resilient job scheduler in Go"
  • "Implement Docker container execution with retry logic"
  • "Build LDAP authentication client"
  • "Set up graceful shutdown for Go service"
  • "Implement buffer pooling for high-throughput operations"
  • "Create comprehensive test suite with build tags"

Structure

go-development-skill/
β”œβ”€β”€ skills/go-development/
β”‚   β”œβ”€β”€ SKILL.md                              # Skill metadata and core patterns
β”‚   β”œβ”€β”€ checkpoints.yaml                      # Assessment checkpoints for Go projects
β”‚   β”œβ”€β”€ evals/evals.json                      # Skill evaluation cases
β”‚   β”œβ”€β”€ scripts/verify-go-project.sh          # Go project verification
β”‚   └── references/
β”‚       β”œβ”€β”€ api-design.md                     # Enum/status defensive handling
β”‚       β”œβ”€β”€ architecture.md                   # Package structure, state mutation completeness
β”‚       β”œβ”€β”€ awesome-go-submission.md          # Submitting a project to awesome-go
β”‚       β”œβ”€β”€ branch-protection.md              # Branch protection standard for Go repos
β”‚       β”œβ”€β”€ contracts-and-invariants.md       # Contracts and invariants
β”‚       β”œβ”€β”€ cron-scheduling.md                # go-cron: named jobs, updates, context, resilience
β”‚       β”œβ”€β”€ dependencies.md                   # Dependency upgrades
β”‚       β”œβ”€β”€ docker.md                         # Docker client patterns
β”‚       β”œβ”€β”€ fuzz-testing.md                   # Go fuzzing patterns, security seeds
β”‚       β”œβ”€β”€ ldap.md                           # LDAP/Active Directory integration
β”‚       β”œβ”€β”€ lefthook-template.md              # Lefthook git hooks for Go projects
β”‚       β”œβ”€β”€ linting.md                        # golangci-lint v2 configuration
β”‚       β”œβ”€β”€ logging.md                        # Structured logging with log/slog
β”‚       β”œβ”€β”€ makefile.md                       # Standard Makefile interface
β”‚       β”œβ”€β”€ modernization.md                  # Go 1.26 modernizers, go fix, errors.AsType
β”‚       β”œβ”€β”€ mutation-testing.md               # Gremlins test quality measurement
β”‚       β”œβ”€β”€ resilience.md                     # Pointer to go-cron's resilience wrappers
β”‚       β”œβ”€β”€ reusable-workflows.md             # Reusable GitHub workflows for Go repos
β”‚       β”œβ”€β”€ single-build-release.md           # Single-build release pipeline
β”‚       └── testing.md                        # Build tags, race and Fiber v2 gotchas
β”œβ”€β”€ Build/                                    # Plugin version check and pre-push hook
β”œβ”€β”€ scripts/verify-harness.sh                 # Agent harness consistency checker
β”œβ”€β”€ tests/                                    # Behavioural tests for the scripts
└── docs/ARCHITECTURE.md                      # Architecture of this repository

Expertise Areas

Architecture Patterns

  • Package structure conventions
  • State mutation completeness (avoiding partial updates)

Cron Scheduling (go-cron)

  • Named jobs with O(1) lookup
  • Runtime updates (UpsertJob, UpdateSchedule, UpdateEntry)
  • Per-entry context with automatic cancellation
  • Resilience wrappers (retry, circuit breaker, timeout)
  • Observability hooks (Prometheus integration)
  • FakeClock for deterministic testing
  • Missed job catch-up policies

Resilience Patterns

  • Retry, circuit-breaker, and timeout wrappers built into go-cron for scheduled jobs
  • Standard library-backed patterns (rate limiting, graceful shutdown) outside the job scheduler

Docker Integration

  • Optimized Docker client patterns
  • Buffer pooling for performance
  • Container execution patterns

LDAP Integration

  • Active Directory patterns
  • User and group management
  • Authentication flows

Testing Strategy

  • Build tags for test isolation (unit/integration/e2e)
  • Race-condition gotchas and fixes
  • Resource isolation (one instance per test)
  • Fiber v2 test patterns

Running Go Tests

The test commands the skill recommends for Go projects:

# Unit tests only (default)
go test ./...

# With integration tests
go test -tags=integration ./...

# Full suite including E2E
go test -tags=e2e ./...

# With race detector
go test -race ./...

# With coverage
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out

Quality Gates

Recommended Tooling

.PHONY: dev-check
dev-check: fmt vet lint security test

fmt:
	gofmt -w $(shell git ls-files '*.go')
	gci write .

vet:
	go vet ./...

lint:
	golangci-lint run --timeout 5m

security:
	gosec ./...
	gitleaks detect

test:
	go test -race ./...

Related Skills

This skill focuses on Go code patterns and quality. For complete project setup:

SkillPurpose
github-projectRepository setup, branch protection, auto-merge workflows
enterprise-readinessOpenSSF Scorecard, SLSA provenance, signed releases
security-auditOWASP Top 10, CVE analysis, security hardening

Tests

This section is about the tests of this repository; the Go test commands above are what the skill recommends for Go projects. The behavioural tests live in tests/ and run offline; they need bash, git, python3 and the usual coreutils, find, grep, sed and awk. No Go toolchain is needed:

bash tests/verify-go-project.sh    # skills/go-development/scripts/verify-go-project.sh
bash tests/check-plugin-version.sh # Build/Scripts/check-plugin-version.sh and Build/hooks/pre-push
  • tests/verify-go-project.sh runs the verifier against fixture projects with a stub go on PATH that records where go vet ran and exits with a chosen status, or with no go on PATH at all. It checks the exit codes, that every section runs after a failed item, the error and warning counts, and that a relative project path is resolved correctly.
  • tests/check-plugin-version.sh builds throwaway git repositories and checks that a semver tag at HEAD must match the version in .claude-plugin/plugin.json, and that the pre-push hook passes the result on.

Each check prints ok or FAIL; a FAIL line names the expectation that was not met and is followed by the script's output. A test file exits 1 when any check failed. In CI, the Skill Tests workflow (.github/workflows/tests.yml) runs every tests/**/*.sh on each pull request and on pushes to main, and fails when the repository ships scripts under skills/*/scripts/ but no test ran.

scripts/verify-harness.sh has no test of its own; on pull requests, Harness Verification (harness-verify.yml) checks AGENTS.md (presence, length, links, documented commands) and docs/ARCHITECTURE.md with its own steps. The skill's Markdown is not executed here; Skill Validation and Eval Validation check its structure and the eval definitions in skills/go-development/evals/evals.json. A pull request that adds or changes behaviour in a script adds or updates a check in tests/ that fails without the change.

Governance and policies

This repository follows the Netresearch organisation policies:

  • Governance: ownership, roles, how decisions are made and disputes resolved, and continuity.
  • Roadmap: planned and explicitly excluded work for the coming year.
  • Handling of dependency and code analysis findings: thresholds, deadlines and the exception process for dependency (SCA) and static analysis (SAST) findings.
  • Secret management: how CI and release credentials are stored, accessed and rotated.
  • Access roster: who holds administrative access to this repository and the organisation.

The security assurance case for this skill (threat model, trust boundaries, countermeasures and limits) is in docs/SECURITY-ASSURANCE.md.

Checks that run on pull requests in this repository:

  • Every pull request: Skill Validation (lint.yml: skill structure, markdownlint, yamllint, actionlint, JSON syntax, ShellCheck, ruff, checkpoint schema), Eval Validation (eval-validate.yml) and Skill Tests (tests.yml).
  • Pull requests to main: security.yml with Betterleaks (secret scanning), zizmor (workflow static analysis), dependency review, Composer Audit and Opengrep SAST (both behind a preflight event-gate job); Harness Verification (harness-verify.yml) and Template Drift (check-template-drift.yml). The organisation's security policy sets when dependency review and Opengrep fail: see dependencies and static analysis (SAST).
  • Also on every pull request: Labeler (labeler.yml), the DCO sign-off check, SonarCloud Code Analysis and the CodeRabbit review status (GitHub Apps) and, for dependency-update pull requests, auto-merge (auto-merge-deps.yml). CodeQL for actions runs through GitHub's default setup.

License

This project uses split licensing:

  • Code (scripts, workflows, configs): MIT
  • Content (skill definitions, documentation, references): CC-BY-SA-4.0

See the individual license files for full terms.

Credits

Developed and maintained by Netresearch DTT GmbH.


Made with ❀️ for Open Source by Netresearch