← Back to Skills Marketplace
samber

Golang Continuous Integration

by Samuel Berthe · GitHub ↗ · v1.1.2 · MIT-0
cross-platform ✓ Security Clean
198
Downloads
0
Stars
0
Active Installs
3
Versions
Install in OpenClaw
/install golang-continuous-integration
Description
Provides CI/CD pipeline configuration using GitHub Actions for Golang projects. Covers testing, linting, SAST, security scanning, code coverage, Dependabot,...
README (SKILL.md)

Persona: You are a Go DevOps engineer. You treat CI as a quality gate — every pipeline decision is weighed against build speed, signal reliability, and security posture.

Modes:

  • Setup — adding CI to a project for the first time: start with the Quick Reference table, then generate workflows in this order: test → lint → security → release. Prefer the latest stable major version for each GitHub Action.
  • Improve — auditing or extending an existing pipeline: read current workflow files first, identify gaps against the Quick Reference table, then propose targeted additions without duplicating existing steps.

Go Continuous Integration

Set up production-grade CI/CD pipelines for Go projects using GitHub Actions.

Action Versions

The versions in the examples below are reference versions that may be outdated. GitHub Actions release frequently — the current major version for each action (actions/checkout, actions/setup-go, golangci/golangci-lint-action, codecov/codecov-action, goreleaser/goreleaser-action, etc.) may differ from what is shown here.

Quick Reference

Stage Tool Purpose
Test go test -race Unit + race detection
Coverage codecov/codecov-action Coverage reporting
Lint golangci-lint Comprehensive linting
Vet go vet Built-in static analysis
SAST gosec, CodeQL, Bearer Security static analysis
Vuln scan govulncheck Known vulnerability detection
Docker docker/build-push-action Multi-platform image builds
Deps Dependabot / Renovate Automated dependency updates
Release GoReleaser Automated binary releases
AI Review Claude Code / Copilot AI-powered PR review

Testing

.github/workflows/test.yml — see test.yml

Adapt the Go version matrix to match go.mod:

go 1.23   → matrix: ["1.23", "1.24", "1.25", "1.26", "stable"]
go 1.24   → matrix: ["1.24", "1.25", "1.26", "stable"]
go 1.25   → matrix: ["1.25", "1.26", "stable"]
go 1.26   → matrix: ["1.26", "stable"]

Use fail-fast: false so a failure on one Go version doesn't cancel the others.

Test flags:

  • -race: CI MUST run tests with the -race flag (catches data races — undefined behavior in Go)
  • -shuffle=on: Randomize test order to catch inter-test dependencies
  • -coverprofile: Generate coverage data
  • git diff --exit-code: Fails if go mod tidy changes anything

Coverage Configuration

CI SHOULD enforce code coverage thresholds. Configure thresholds in codecov.yml at the repo root — see codecov.yml


Integration Tests

.github/workflows/integration.yml — see integration.yml

Use -count=1 to disable test caching — cached results can hide flaky service interactions.


Linting

golangci-lint MUST be run in CI on every PR. .github/workflows/lint.yml — see lint.yml

golangci-lint Configuration

Create .golangci.yml at the root of the project. See the samber/cc-skills-golang@golang-lint skill for the recommended configuration.


Security & SAST

.github/workflows/security.yml — see security.yml

CI MUST run govulncheck. It only reports vulnerabilities in code paths your project actually calls — unlike generic CVE scanners. CodeQL results appear in the repository's Security tab. Bearer is good at detecting sensitive data flow issues.

CodeQL Configuration

Create .github/codeql/codeql-config.yml to use the extended security query suite — see codeql-config.yml

Available query suites:

  • default: Standard security queries
  • security-extended: Extra security queries with slightly lower precision
  • security-and-quality: Security queries plus maintainability and reliability checks

Container Image Scanning

If the project produces Docker images, Trivy container scanning is included in the Docker workflow — see docker.yml


Dependency Management

Dependabot

.github/dependabot.yml — see dependabot.yml

Minor/patch updates are grouped into a single PR. Major updates get individual PRs since they may have breaking changes.

Auto-Merge for Dependabot

.github/workflows/dependabot-auto-merge.yml — see dependabot-auto-merge.yml

Security warning: This workflow requires contents: write and pull-requests: write — these are elevated permissions that allow merging PRs and modifying repository content. The if: github.actor == 'dependabot[bot]' guard restricts execution to Dependabot only. Do not remove this guard. Note that github.actor checks are not fully spoof-proof — branch protection rules are the real safety net. Ensure branch protection is configured (see Repository Security Settings) with required status checks and required approvals so that auto-merge only succeeds after all checks pass, regardless of who triggered the workflow.

Renovate (alternative)

Renovate is a more mature and configurable alternative to Dependabot. It supports automerge natively, grouping, scheduling, regex managers, and monorepo-aware updates. If Dependabot feels too limited, Renovate is the go-to choice.

Install the Renovate GitHub App, then create renovate.json at the repo root — see renovate.json

Key advantages over Dependabot:

  • gomodTidy: Automatically runs go mod tidy after updates
  • Native automerge: No separate workflow needed
  • Better grouping: More flexible rules for grouping PRs
  • Regex managers: Can update versions in Dockerfiles, Makefiles, etc.
  • Monorepo support: Handles Go workspaces and multi-module repos

Release Automation

GoReleaser automates binary builds, checksums, and GitHub Releases. The configuration varies significantly depending on the project type.

Release Workflow

.github/workflows/release.yml — see release.yml

Security warning: This workflow requires contents: write to create GitHub Releases. It is restricted to tag pushes (tags: ["v*"]) so it cannot be triggered by pull requests or branch pushes. Only users with push access to the repository can create tags.

GoReleaser for CLI/Programs

Programs need cross-compiled binaries, archives, and optionally Docker images.

.goreleaser.yml — see goreleaser-cli.yml

GoReleaser for Libraries

Libraries don't produce binaries — they only need a GitHub Release with a changelog. Use a minimal config that skips the build.

.goreleaser.yml — see goreleaser-lib.yml

For libraries, you may not even need GoReleaser — a simple GitHub Release created via the UI or gh release create is often sufficient.

GoReleaser for Monorepos / Multi-Binary

When a repository contains multiple commands (e.g., cmd/api/, cmd/worker/).

.goreleaser.yml — see goreleaser-monorepo.yml

Docker Build & Push

For projects that produce Docker images. This workflow builds multi-platform images, generates SBOM and provenance attestations, pushes to both GitHub Container Registry (GHCR) and Docker Hub, and includes Trivy container scanning.

.github/workflows/docker.yml — see docker.yml

Security warning: Permissions are scoped per job: the container-scan job only gets contents: read + security-events: write, while the docker job gets packages: write (to push to GHCR) and attestations: write + id-token: write (for provenance/SBOM signing). This ensures the scan job cannot push images even if compromised. The push flag is set to false on pull requests so untrusted code cannot publish images. The DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets must be configured in the repository secrets settings — never hardcode credentials.

Key details:

  • QEMU + Buildx: Required for multi-platform builds (linux/amd64,linux/arm64). Remove platforms you don't need.
  • push: false on PRs: Images are built but never pushed on pull requests — this validates the Dockerfile without publishing untrusted code.
  • Metadata action: Automatically generates semver tags (v1.2.31.2.3, 1.2, 1), branch tags (main), and SHA tags.
  • Provenance + SBOM: provenance: mode=max and sbom: true generate supply chain attestations. These require attestations: write and id-token: write permissions.
  • Dual registry: Pushes to both GHCR (using GITHUB_TOKEN, no extra secret needed) and Docker Hub (requires DOCKERHUB_USERNAME + DOCKERHUB_TOKEN secrets). Remove the Docker Hub login and image line if not needed.
  • Trivy: Scans the built image for CRITICAL and HIGH vulnerabilities and uploads results to the Security tab.
  • Adapt the image names and registries to your project. For GHCR-only, remove the Docker Hub login step and the docker.io/ line from images:.

Repository Security Settings

After creating workflow files, ALWAYS tell the developer to configure GitHub repository settings (branch protection, workflow permissions, secrets, environments) — see repo-security.md


AI-Driven Code Review

Add AI agents as PR reviewers alongside traditional static analysis. When loaded with this skill plugin, the agent applies the relevant Go skills per review area — catching architectural drift, logic bugs, missing error context, and concurrency hazards that linters cannot detect.

Cost note: AI review agents run concurrently per PR. For cost control, remove jobs you don't need or raise the PR trigger filter to specific branches only.

Claude Code

.github/workflows/ai-review.yml — see claude-code-review.yml

The workflow runs parallel jobs, each scoped to a set of review areas and priority level:

Job Areas Priority
quality Code style, Naming, Documentation, Design patterns Suggestion-first
correctness Error handling, Code safety, Concurrency Blocking-first
security Security, Dependencies Blocking-first
quality-depth Tests, Performance, Observability, Modernize Mixed

Depending on your project, also load: golang-cli, golang-context, golang-data-structures, golang-database, golang-dependency-injection, or any library-specific skill.

Run /install-github-app in Claude Code to connect to the Claude API and configure the required secrets.

GitHub Copilot

Copy skills into your repo, then append copilot-review-instructions.md to .github/copilot-instructions.md:

npx skills add https://github.com/samber/cc-skills-golang --agent github-copilot --skill '*' -y --copy
ln -s .agents .copilot

Common Mistakes

Mistake Fix
Missing -race in CI tests Always use go test -race
No -shuffle=on Randomize test order to catch inter-test dependencies
Caching integration test results Use -count=1 to disable caching
go mod tidy not checked Add go mod tidy && git diff --exit-code step
Missing fail-fast: false One Go version failing shouldn't cancel other jobs
Not pinning action versions GitHub Actions MUST use pinned major versions (e.g. @vN, not @master)
No permissions block Follow least-privilege per job
Ignoring govulncheck findings Fix or suppress with justification
No AI review in CI Add Claude Code or Copilot review — catches logic, security, and architectural issues that static analysis misses

Related Skills

See samber/cc-skills-golang@golang-lint, samber/cc-skills-golang@golang-security, samber/cc-skills-golang@golang-testing, samber/cc-skills-golang@golang-dependency-management, samber/cc-skills-golang@golang-modernize skills.

Usage Guidance
This skill appears to do what it says — produce and audit GitHub Actions CI for Go projects. Before installing or running it, you should: (1) review any generated workflow YAML for permissions (contents: write, packages: write, pull-requests: write, security-events: write) and only grant the minimum permissions needed; (2) review the Dependabot/auto-merge workflow and ensure the github.actor guard and branch-protection rules match your risk tolerance (auto-merge raises risk if combined with broad workflow permissions); (3) ensure repository secrets referenced by generated workflows (e.g., GITHUB_TOKEN, CODECOV_TOKEN, DOCKERHUB_TOKEN) are stored as GitHub Secrets and rotated appropriately — the skill does not ask you to provide these to the agent; (4) validate any suggested third-party actions and versions before merging; and (5) if you allow the agent to fetch latest action versions, be aware it will perform web lookups. Overall the artifacts and instructions are coherent and proportional to the described CI/CD purpose.
Capability Analysis
Type: OpenClaw Skill Name: golang-continuous-integration Version: 1.1.2 The skill bundle provides a comprehensive and security-focused set of CI/CD templates for Go projects, covering testing, linting, SAST (CodeQL, gosec, govulncheck), and release automation (GoReleaser, Docker). It demonstrates high security awareness by explicitly documenting the risks of elevated GitHub Actions permissions in SKILL.md and references/repo-security.md, recommending branch protection rules, and implementing safeguards like disabling Docker pushes on pull requests in assets/docker.yml. No evidence of malicious intent, data exfiltration, or prompt injection was found.
Capability Assessment
Purpose & Capability
The skill's name/description match the artifacts and requirements: it supplies GitHub Actions YAML for testing, linting, SAST, release (GoReleaser), dependency automation, and related guidance. Required binaries (go, goreleaser, gh) and the Homebrew install spec are proportional to producing and releasing Go binaries and are expected for this purpose.
Instruction Scope
SKILL.md confines itself to CI/CD tasks: generating or auditing workflow files, advising on secrets and repo settings, and recommending action versions. It asks the agent to read existing workflow files (appropriate for an 'Improve' mode) and to check latest action versions online (reasonable). It does reference standard workflow secrets (GITHUB_TOKEN, CODECOV_TOKEN, DOCKERHUB_TOKEN) used inside GitHub Actions, but does not attempt to exfiltrate or require those secrets at skill runtime.
Install Mechanism
Install uses Homebrew formulas for goreleaser and gh — a standard, low-risk mechanism. No arbitrary downloads, extract-from-URL steps, or unknown package sources are present.
Credentials
The skill declares no runtime environment variables (none are needed). The workflows it provides reference expected repository secrets (GITHUB_TOKEN, CODECOV_TOKEN, DOCKERHUB_TOKEN) which are standard for CI and are meant to be stored in GitHub Secrets, not provided to the skill itself.
Persistence & Privilege
The skill is not forced-always, is user-invocable, and does not request persistent or cross-skill privileges. It does not modify other skills or system-wide agent settings. Note: like many coding skills, it may suggest using web lookups (to find latest Action versions) and the gh CLI locally; these are normal for the task.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install golang-continuous-integration
  3. After installation, invoke the skill by name or use /golang-continuous-integration
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.1.2
- Bump version to 1.1.2 in SKILL.md metadata. - Add AskUserQuestion to allowed-tools list to enable interactive queries. - No user-facing behavioral changes.
v1.1.1
- Bumped skill metadata version from 1.1.0 to 1.1.1 in SKILL.md. - No functional or instructional changes; metadata only.
v1.1.0
Version 1.1.0 - Expanded documentation with a comprehensive quick reference table of CI/CD stages and tools for Go projects. - Added detailed setup and best practices for testing (including race detection, test shuffling, and code coverage enforcement). - Clarified integration test and linting requirements, including configuration for golangci-lint. - Enhanced security section with recommendations for SAST tools and CodeQL configuration. - Updated dependency management guidance with Dependabot/auto-merge and Renovate comparisons. - Included security notes on workflow permissions and repository protection. - Provided release automation instructions using GoReleaser, with security-focused tagging rules.
Metadata
Slug golang-continuous-integration
Version 1.1.2
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 3
Frequently Asked Questions

What is Golang Continuous Integration?

Provides CI/CD pipeline configuration using GitHub Actions for Golang projects. Covers testing, linting, SAST, security scanning, code coverage, Dependabot,... It is an AI Agent Skill for Claude Code / OpenClaw, with 198 downloads so far.

How do I install Golang Continuous Integration?

Run "/install golang-continuous-integration" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Golang Continuous Integration free?

Yes, Golang Continuous Integration is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Golang Continuous Integration support?

Golang Continuous Integration is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Golang Continuous Integration?

It is built and maintained by Samuel Berthe (@samber); the current version is v1.1.2.

💬 Comments