Golang Continuous Integration
Samuel BertheCommunityCreated by samberDistributed by Samuel Berthe
- Skill
- Workflow
- Software development
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a comprehensive framework for setting up and maintaining CI/CD pipelines for Golang projects using GitHub Actions. It covers the full lifecycle, including testing, linting, security scanning, dependency management, containerization, and automated releases. The skill emphasizes a quality-gate approach, providing best practices for pipeline security, least-privilege permissions, and AI-driven code review integration to ensure build reliability and architectural integrity.
What it does
- Generates GitHub Actions workflows for testing, linting, and security scanning.
- Configures automated dependency updates via Dependabot or Renovate.
- Sets up GoReleaser pipelines for automated binary releases and container builds.
- Provides guidance on repository security settings and branch protection rules.
- Integrates AI agents for automated PR reviews to catch logic and concurrency issues.
- Defines best practices for Go-specific CI flags like -race and -shuffle.
When to use it
- When initializing CI/CD for a new Go project.
- When auditing or improving an existing Go pipeline to meet modern standards.
- When adding new quality gates like SAST, vulnerability scanning, or linting.
- When setting up automated release processes or container image builds.
- When configuring automated dependency management bots.
Advantages
- Standardizes CI/CD practices across Go projects.
- Improves security posture through least-privilege permission management.
- Reduces manual effort with automated releases and dependency updates.
- Enhances code quality by integrating AI-driven PR reviews.
- Ensures reliable builds with Go-specific test configurations.
Usage examples
- “Set up a new CI pipeline for my Go project with test, lint, and security jobs.”
- The agent will generate the necessary .github/workflows/ files, including test, lint, and security configurations, while advising on branch protection settings.
- “How do I add GoReleaser to my existing Go repository?”
- The agent will provide the appropriate .goreleaser.yml configuration and the corresponding GitHub Actions workflow file for automated releases.
- “Configure Dependabot for my Go project with auto-merge enabled.”
- The agent will generate the dependabot.yml and the required workflow file for auto-merging, while warning about the necessary security guards.
- “Add AI-driven PR review to my repository.”
- The agent will set up the Claude Code or Copilot workflow to automatically review PRs for style, correctness, and security.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/samber/golang-continuous-integration/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip golang-continuous-integration.zip -d .agents/skills
Documentation by samber
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.
Dependencies:
goreleaser:
go install github.com/goreleaser/goreleaser/v2@latestgh:
brew install gh
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", "1.27", "stable"]
go 1.24 → matrix: ["1.24", "1.25", "1.26", "1.27", "stable"]
go 1.25 → matrix: ["1.25", "1.26", "1.27", "stable"]
go 1.26 → matrix: ["1.26", "1.27", "stable"]
go 1.27 → matrix: ["1.27", "stable"]Use fail-fast: false so a failure on one Go version doesn't cancel the others.
Go 1.27 raises the Darwin floor to macOS 13 (Ventura). macos-latest/macos-14+ runners are unaffected; only pin an older macos-12 runner if a project still needs it, and note it can no longer build with a Go 1.27 toolchain.
Test flags:
-race: CI MUST run tests with the-raceflag (catches data races — undefined behavior in Go)-shuffle=on: Randomize test order to catch inter-test dependencies-coverprofile: Generate coverage datagit diff --exit-code: Fails ifgo mod tidychanges 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: writeandpull-requests: write— these are elevated permissions that allow merging PRs and modifying repository content. Theif: github.actor == 'dependabot[bot]'guard restricts execution to Dependabot only. Do not remove this guard. Note thatgithub.actorchecks 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 runsgo mod tidyafter updatesNative 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: writeto 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-scanjob only getscontents: read+security-events: write, while thedockerjob getspackages: write(to push to GHCR) andattestations: write+id-token: write(for provenance/SBOM signing). This ensures the scan job cannot push images even if compromised. Thepushflag is set tofalseon pull requests so untrusted code cannot publish images. TheDOCKERHUB_USERNAMEandDOCKERHUB_TOKENsecrets 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: falseon 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.3→1.2.3,1.2,1), branch tags (main), and SHA tags.Provenance + SBOM:
provenance: mode=maxandsbom: truegenerate supply chain attestations. These requireattestations: writeandid-token: writepermissions.Dual registry: Pushes to both GHCR (using
GITHUB_TOKEN, no extra secret needed) and Docker Hub (requiresDOCKERHUB_USERNAME+DOCKERHUB_TOKENsecrets). 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 fromimages:.
Repository Security Settings
Repository security settings (branch protection, workflow permissions, secrets, environments) form the security foundation for the CI pipeline — these are documented in 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.
Each subsection below is a generated artifact targeting one specific reviewer — the linked asset file runs on a CI runner, not the developer's local harness, so its tool names and permission flags are deliberately literal rather than capability prose.
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 |
Additional skills that may be relevant depending on the project: golang-cli, golang-context, golang-data-structures, golang-database, golang-dependency-injection, or any library-specific skill.
The Claude Code GitHub App integration is configured via the /install-github-app command, which sets up the required API 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 .copilotCommon 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.
Files
- ATTRIBUTION.mdAdded by AutoGineer944 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md14.5 KiB
- assets/claude-code-review.yml21.0 KiB
- assets/codecov.yml135 B
- assets/codeql-config.yml118 B
- assets/copilot-review-instructions.md3.6 KiB
- assets/dependabot-auto-merge.yml698 B
- assets/dependabot.yml623 B
- assets/docker.yml2.4 KiB
- assets/goreleaser-cli.yml551 B
- assets/goreleaser-lib.yml122 B
- assets/goreleaser-monorepo.yml452 B
- assets/integration.yml1.1 KiB
- assets/lint.yml494 B
- assets/release.yml539 B
- assets/renovate.json467 B
- assets/security.yml1.6 KiB
- assets/test.yml1.0 KiB
- evals/evals.json17.7 KiB
- references/repo-security.md3.8 KiB
evals/evals.json
[
{
"id": 1,
"name": "test-workflow-flags",
"description": "Tests whether CI test workflows include all required flags (-race, -shuffle, -coverprofile) and use fail-fast: false",
"prompt": "Create a GitHub Actions workflow file for running Go tests on a library that supports Go 1.25+. The project uses codecov for coverage. Just give me the YAML.",
"trap": "Model may omit -shuffle=on, forget fail-fast: false, or skip the go mod tidy check",
"assertions": [
{"id": "1.1", "text": "Workflow includes -race flag in the go test command"},
{"id": "1.2", "text": "Workflow includes -shuffle=on flag in the go test command"},
{"id": "1.3", "text": "Workflow includes -coverprofile flag in the go test command"},
{"id": "1.4", "text": "Strategy uses fail-fast: false"},
{"id": "1.5", "text": "Go version matrix includes at least 'stable' and one explicit version like '1.25' or '1.26'"}
]
},
{
"id": 2,
"name": "go-mod-tidy-check",
"description": "Tests whether the workflow enforces go mod tidy consistency via git diff --exit-code",
"prompt": "I want to make sure our Go CI catches cases where someone forgot to run go mod tidy before pushing. How should I add this check to our GitHub Actions workflow?",
"trap": "Model may suggest running go mod tidy without the git diff --exit-code step to actually fail the build on changes",
"assertions": [
{"id": "2.1", "text": "Suggests running 'go mod tidy' as a CI step"},
{"id": "2.2", "text": "Includes 'git diff --exit-code' after go mod tidy to detect uncommitted changes"},
{"id": "2.3", "text": "The git diff checks go.mod and/or go.sum specifically, or uses a general git diff --exit-code"},
{"id": "2.4", "text": "Also includes 'go mod verify' or 'go mod download' step"}
]
},
{
"id": 3,
"name": "integration-test-caching",
"description": "Tests knowledge that integration tests must use -count=1 to disable caching",
"prompt": "I have integration tests that interact with PostgreSQL and Redis via GitHub Actions service containers. Sometimes tests pass even when the services are broken because Go seems to cache test results. How do I set up the workflow?",
"trap": "Model may not know about -count=1 to disable test caching, or may suggest other workarounds",
"assertions": [
{"id": "3.1", "text": "Uses -count=1 flag to disable test result caching"},
{"id": "3.2", "text": "Includes -race flag for integration tests"},
{"id": "3.3", "text": "Uses build tags (e.g., -tags=integration) to separate integration tests"},
{"id": "3.4", "text": "Uses GitHub Actions 'services' block for PostgreSQL and/or Redis"},
{"id": "3.5", "text": "Includes health check options for service containers"}
]
},
{
"id": 4,
"name": "security-scanning-pipeline",
"description": "Tests whether the model recommends the full security stack: govulncheck, gosec, CodeQL, and Bearer",
"prompt": "I want to add security scanning to my Go project's CI pipeline. What tools should I use and how do I set them up in GitHub Actions?",
"trap": "Model may only suggest one or two tools (e.g., just gosec) and miss govulncheck (call-path-aware), CodeQL (Security tab integration), or Bearer (sensitive data flow)",
"assertions": [
{"id": "4.1", "text": "Recommends govulncheck and explains it only reports vulnerabilities in actually-called code paths"},
{"id": "4.2", "text": "Recommends gosec for Go security scanning"},
{"id": "4.3", "text": "Recommends CodeQL and mentions the security-extended or security-and-quality query suite"},
{"id": "4.4", "text": "Recommends Bearer for sensitive data flow issues"},
{"id": "4.5", "text": "Workflow includes security-events: write permission for SARIF upload"},
{"id": "4.6", "text": "Suggests creating a CodeQL config file to use an extended query suite rather than just the default"}
]
},
{
"id": 5,
"name": "dependabot-grouping-strategy",
"description": "Tests whether Dependabot config groups minor/patch updates but keeps major updates separate",
"prompt": "Set up Dependabot for my Go project on GitHub. I want automated dependency update PRs for Go modules, GitHub Actions, and Docker base images.",
"trap": "Model may not group minor/patch into a single PR, or may group all updates including majors which could have breaking changes",
"assertions": [
{"id": "5.1", "text": "Configures Dependabot for gomod package ecosystem"},
{"id": "5.2", "text": "Configures Dependabot for github-actions package ecosystem"},
{"id": "5.3", "text": "Configures Dependabot for docker package ecosystem"},
{"id": "5.4", "text": "Groups minor and patch Go module updates into a single PR"},
{"id": "5.5", "text": "Major updates are NOT grouped (individual PRs for breaking changes)"},
{"id": "5.6", "text": "Sets a weekly schedule"}
]
},
{
"id": 6,
"name": "dependabot-auto-merge-security",
"description": "Tests awareness of security implications in auto-merge workflow (elevated permissions, actor guard, branch protection as safety net)",
"prompt": "I want Dependabot PRs to auto-merge when CI passes, but only for minor and patch updates. Create the workflow. What security concerns should I be aware of?",
"trap": "Model may create the workflow without the github.actor guard, without mentioning elevated permissions risk, or without recommending branch protection as the real safety net",
"assertions": [
{"id": "6.1", "text": "Workflow has 'if: github.actor == dependabot[bot]' guard to restrict execution"},
{"id": "6.2", "text": "Workflow checks metadata to exclude major updates from auto-merge"},
{"id": "6.3", "text": "Warns about contents: write and pull-requests: write being elevated/high-risk permissions"},
{"id": "6.4", "text": "Mentions branch protection rules as the real safety net (not just the actor guard)"},
{"id": "6.5", "text": "Notes that github.actor checks are not fully spoof-proof"}
]
},
{
"id": 7,
"name": "renovate-vs-dependabot",
"description": "Tests knowledge of Renovate advantages over Dependabot",
"prompt": "I'm using Dependabot for my Go monorepo with multiple modules but it's creating too many PRs and doesn't run go mod tidy. What are my options?",
"trap": "Model may suggest workarounds for Dependabot rather than recommending Renovate with its gomodTidy, native automerge, and monorepo support",
"assertions": [
{"id": "7.1", "text": "Recommends Renovate as an alternative to Dependabot"},
{"id": "7.2", "text": "Mentions Renovate's gomodTidy feature (automatic go mod tidy after updates)"},
{"id": "7.3", "text": "Mentions Renovate's native automerge without needing a separate workflow"},
{"id": "7.4", "text": "Mentions Renovate's monorepo/workspace support"},
{"id": "7.5", "text": "Mentions Renovate's better grouping rules"}
]
},
{
"id": 8,
"name": "goreleaser-library-vs-cli",
"description": "Tests knowledge that GoReleaser config differs significantly between libraries and CLI programs",
"prompt": "I need to set up GoReleaser for my Go project which is a library (no main package). How should I configure it?",
"trap": "Model may generate a full GoReleaser config with builds, archives, and cross-compilation that doesn't apply to libraries",
"assertions": [
{"id": "8.1", "text": "Uses 'skip: true' in the builds section since libraries don't produce binaries"},
{"id": "8.2", "text": "Keeps the config minimal (mainly changelog generation)"},
{"id": "8.3", "text": "Mentions that for libraries, a simple GitHub Release via gh release create may be sufficient without GoReleaser"},
{"id": "8.4", "text": "Does NOT include cross-compilation (goos/goarch) in the library config"},
{"id": "8.5", "text": "Includes changelog configuration"}
]
},
{
"id": 9,
"name": "docker-workflow-security",
"description": "Tests awareness of Docker workflow security: push: false on PRs, per-job permissions, dual registry, provenance/SBOM",
"prompt": "Create a GitHub Actions workflow that builds a multi-platform Docker image and pushes it to GHCR. Include security best practices.",
"trap": "Model may push images on PRs (allowing untrusted code to publish), use overly broad permissions, or skip provenance/SBOM attestations",
"assertions": [
{"id": "9.1", "text": "Sets push to false on pull requests to prevent untrusted code from publishing images"},
{"id": "9.2", "text": "Uses per-job permissions scoping (not just top-level)"},
{"id": "9.3", "text": "Includes QEMU and Buildx setup for multi-platform builds"},
{"id": "9.4", "text": "Includes provenance and/or SBOM attestation configuration"},
{"id": "9.5", "text": "Includes packages: write permission for GHCR push"},
{"id": "9.6", "text": "Login step is conditional on non-PR events"}
]
},
{
"id": 10,
"name": "permissions-least-privilege",
"description": "Tests whether the model follows least-privilege permissions principle and sets GITHUB_TOKEN to read-only by default",
"prompt": "I'm setting up CI for a new open-source Go project. What GitHub repository settings should I configure for security? I already have the workflow files.",
"trap": "Model may focus only on branch protection and miss workflow permissions, fork PR restrictions, and environment-based approval gates",
"assertions": [
{"id": "10.1", "text": "Recommends setting default GITHUB_TOKEN to read-only at the repository level"},
{"id": "10.2", "text": "Recommends branch protection with required status checks"},
{"id": "10.3", "text": "Recommends requiring PR approvals (at least 1)"},
{"id": "10.4", "text": "Recommends dismissing stale approvals when new commits are pushed"},
{"id": "10.5", "text": "Recommends restricting fork PR workflows for outside collaborators"},
{"id": "10.6", "text": "Warns against pull_request_target with untrusted code"},
{"id": "10.7", "text": "Recommends creating a release environment with required reviewers"}
]
},
{
"id": 11,
"name": "release-workflow-fetch-depth",
"description": "Tests whether the release workflow uses fetch-depth: 0 for changelog generation",
"prompt": "Create a GitHub Actions release workflow that triggers on version tags and runs GoReleaser to produce binaries and a changelog.",
"trap": "Model may use default checkout which does a shallow clone, causing GoReleaser to generate an incomplete or empty changelog",
"assertions": [
{"id": "11.1", "text": "Checkout step uses fetch-depth: 0 for full git history"},
{"id": "11.2", "text": "Workflow triggers on tag push with a v* pattern"},
{"id": "11.3", "text": "Uses contents: write permission for creating releases"},
{"id": "11.4", "text": "Passes GITHUB_TOKEN to GoReleaser"}
]
},
{
"id": 12,
"name": "action-version-pinning",
"description": "Tests whether actions are pinned to major versions not branches",
"prompt": "Review this GitHub Actions step and tell me if there are any issues:\n\n```yaml\nsteps:\n - uses: actions/checkout@master\n - uses: actions/setup-go@main\n with:\n go-version: stable\n```",
"trap": "Model may not notice the branch references (@master, @main) instead of pinned major versions",
"assertions": [
{"id": "12.1", "text": "Identifies that using @master and @main is wrong and insecure"},
{"id": "12.2", "text": "Recommends pinning to major versions like @v4, @v6"},
{"id": "12.3", "text": "Explains the risk: branch references can change unexpectedly or be compromised"}
]
},
{
"id": 13,
"name": "coverage-threshold-configuration",
"description": "Tests knowledge of codecov.yml configuration with project and patch targets",
"prompt": "I want to enforce that our Go project maintains at least 80% code coverage and that each PR doesn't drop coverage by more than 2%. How do I configure this?",
"trap": "Model may only configure project-level thresholds and miss patch-level coverage targets",
"assertions": [
{"id": "13.1", "text": "Configures codecov.yml (not just CLI flags) for coverage thresholds"},
{"id": "13.2", "text": "Sets project target to 80%"},
{"id": "13.3", "text": "Sets a threshold value (e.g., 2%) to allow small drops"},
{"id": "13.4", "text": "Configures patch coverage target for new code in PRs"},
{"id": "13.5", "text": "Coverage upload is conditional on a single matrix entry (e.g., only on stable)"}
]
},
{
"id": 14,
"name": "ai-review-workflow-setup",
"description": "Tests whether the model recommends Claude Code Action or Copilot with skills for AI-driven PR review, rather than generic tools or manual checklists",
"prompt": "I want to add AI-powered code review to my Go project's CI pipeline. How do I set it up?",
"trap": "Model may suggest generic tools (CodeRabbit, PR-Agent, Reviewdog) or manual checklists instead of Claude Code Action / Copilot with Go skills loaded",
"assertions": [
{"id": "14.1", "text": "Recommends using anthropics/claude-code-action or GitHub Copilot for AI review"},
{"id": "14.2", "text": "Mentions installing Go skills via 'npx skills add' so the agent loads skill-based review guidelines"},
{"id": "14.3", "text": "Workflow includes pull-requests: write permission for inline PR comments"},
{"id": "14.4", "text": "References review areas mapped to specific Go skills (golang-security, golang-concurrency, etc.)"},
{"id": "14.5", "text": "References the claude-code-review.yml or copilot-review-instructions.md asset"}
]
},
{
"id": 15,
"name": "ai-review-vs-linting",
"description": "Tests whether the model explains that AI review complements linting by catching issues linters cannot detect",
"prompt": "I already have golangci-lint, govulncheck, and CodeQL in my CI. Why would I also need AI code review?",
"trap": "Model may say linting is sufficient or treat AI review as a luxury, failing to explain the complementary value",
"assertions": [
{"id": "15.1", "text": "Explains that AI review catches architectural drift and logic bugs that static analysis misses"},
{"id": "15.2", "text": "Mentions at least one concrete example: missing error context, goroutine leaks, broken contracts, or design issues"},
{"id": "15.3", "text": "Positions AI review as a complement to linting, not a replacement"},
{"id": "15.4", "text": "Notes that AI agents loaded with Go skills apply the same expertise as a senior Go reviewer"}
]
},
{
"id": 16,
"name": "ai-review-prompt-customization",
"description": "Tests whether the model explains how to scope the review prompt and apply the priority guidance",
"prompt": "Our Go project CI is slow. We want AI review but only for security and correctness issues — not style or documentation. How do we configure this?",
"trap": "Model may keep all 12 review areas or not know about the 4-job structure that can be selectively disabled",
"assertions": [
{"id": "16.1", "text": "Suggests removing or disabling the 'quality' job (style, naming, documentation) from the workflow"},
{"id": "16.2", "text": "Recommends keeping the 'correctness' and 'security' jobs as blocking-first areas"},
{"id": "16.3", "text": "Mentions the depth vs. speed tradeoff: fewer jobs = faster feedback, lower API cost"},
{"id": "16.4", "text": "References the priority guidance: Security, Code safety, Error handling, Concurrency are blocking-first"}
]
},
{
"id": 17,
"name": "ai-review-claude-vs-copilot",
"description": "Tests whether the model clearly differentiates Claude Code Action (GitHub Actions workflow) from Copilot (copilot-instructions.md) and their respective setups",
"prompt": "We use both GitHub Copilot and Claude Code in our team. Can we use both for CI code review? What's the difference?",
"trap": "Model may conflate the two setups, not know about copilot-instructions.md, or miss that Claude uses /golang-* syntax while Copilot uses golang-* without slash",
"assertions": [
{"id": "17.1", "text": "Explains Claude Code review runs as a GitHub Actions workflow using anthropics/claude-code-action"},
{"id": "17.2", "text": "Explains Copilot review uses .github/copilot-instructions.md to configure the review prompt"},
{"id": "17.3", "text": "Notes that both require installing Go skills so the AI loads skill-based guidelines"},
{"id": "17.4", "text": "Correctly describes that both can coexist — they run independently and complement each other"}
]
},
{
"id": 18,
"name": "ai-review-permissions-security",
"description": "Tests whether the model correctly identifies required permissions and security implications of the AI review workflow",
"prompt": "Our security team is concerned about giving an AI workflow write access to pull requests. What permissions does the Claude Code review workflow actually need and why?",
"trap": "Model may not know the minimal permission set, may suggest contents: write (too broad), or may not warn about fork PR risks",
"assertions": [
{"id": "18.1", "text": "Identifies pull-requests: write as required for posting inline review comments"},
{"id": "18.2", "text": "Identifies contents: read as sufficient for reading the repository code"},
{"id": "18.3", "text": "Does NOT suggest contents: write (that would be excessive for a review-only workflow)"},
{"id": "18.4", "text": "Warns about fork PR security: untrusted code in forks can access the ANTHROPIC_API_KEY secret if the workflow triggers on pull_request_target without careful guards"}
]
}
]
Requirements and compatibility
Written for: Claude Code, OpenAI Codex
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Claude Code frontmatter, Names Copilot tools, Needs Node.js
The author says: Designed for Claude Code, Codex or similar harness, and for projects using Golang.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- samber
- Publisher
- Samuel Berthe (Community)
- Distributed by
- Samuel Berthe
- Source
- samber/cc-skills-golang · skills/golang-continuous-integration · commit bb1d43d
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by samber or Samuel Berthe.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download golang-continuous-integration.zip