Skip to content
Back to skills

Github Workflows

ASecurity

Initialize or update GitHub Actions workflows for Go projects with comprehensive CI/CD pipelines including linting, testing, coverage, snapshot builds, and releases. Use when setting up GitHub Actions automation for Go projects. Trigger with "setup github actions", "add github workflows", or "configure ci/cd".

  • 16 stars
  • 0 votes
  • 0 copies
  • 10 views
  • Added February 7, 2026
developmentgobashdockertestinggitci/cdsecuritydocumentation

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned February 10, 2026

npx -y skills add sgaunet/claude-plugins --skill github-workflows --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Github Workflows?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Github Workflows
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sgaunet-github-workflows/badge)](https://www.skillsdirectory.com/skills/sgaunet-github-workflows)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: github-workflows
description: Initialize or update GitHub Actions workflows for Go projects with comprehensive CI/CD pipelines including linting, testing, coverage, snapshot builds, and releases. Use when setting up GitHub Actions automation for Go projects. Trigger with "setup github actions", "add github workflows", or "configure ci/cd".
version: 1.0.0
author: sylvain
license: MIT
allowed-tools: Read, Write, Bash(git:*)
---

# GitHub Workflows Setup Skill

Automate Go project CI/CD with production-ready GitHub Actions workflows for testing, linting, coverage reporting, and releases.

## Overview

This skill provides a complete GitHub Actions CI/CD setup for Go projects:

- **Linting**: Automated code quality checks with golangci-lint
- **Coverage**: Test coverage reporting with badge generation
- **Snapshot**: Test release builds on every push
- **Release**: Automated releases with GoReleaser on tag push
- **Dependabot**: Automated dependency updates
- **Funding**: GitHub Sponsors configuration

All workflows integrate with [Task](https://taskfile.dev) for consistent build commands.

## Prerequisites

1. **GitHub repository**: Project hosted on GitHub
2. **Go module**: Project uses Go modules (`go.mod` present)
3. **Task runner** (recommended): Taskfile.yml for build commands
   - Install: `brew install go-task/tap/go-task`
   - Docs: https://taskfile.dev
4. **GoReleaser config** (for releases): `.goreleaser.yml` in repository root
5. **GitHub Container Registry**: Enabled for Docker image publishing

## Workflow Architecture

| Workflow | Trigger | Purpose | Permissions |
|----------|---------|---------|-------------|
| **linter.yml** | Every push | Code quality validation | `contents: read` |
| **snapshot.yml** | Every push | Test release process | `contents: read` |
| **coverage.yml** | Push to main | Generate coverage badge | `contents: write` |
| **release.yml** | Push tags | Production release | `contents: write`, `packages: write` |

Workflow files are located in `assets/workflows/` directory.

## Quick Start

### Step 1: Copy Workflow Files

```bash
# Create directories
mkdir -p .github/workflows

# Copy workflows from assets
cp assets/workflows/*.yml .github/workflows/

# Copy configurations
cp assets/dependabot.yml .github/dependabot.yml
cp assets/FUNDING.yml .github/FUNDING.yml
```

### Step 2: Configure Taskfile (Recommended)

Create or update `Taskfile.yml`:

```yaml
version: '3'

tasks:
  linter:
    desc: Run golangci-lint
    cmds:
      - golangci-lint run ./...

  test:
    desc: Run tests
    cmds:
      - go test -v ./...

  snapshot:
    desc: Create snapshot build (test release)
    cmds:
      - goreleaser release --snapshot --clean --skip=publish

  release:
    desc: Create production release
    cmds:
      - goreleaser release --clean
```

### Step 3: Customize Go Version

Update Go version in all workflows:

```yaml
- uses: actions/setup-go@v6
  with:
    go-version: '1.24'  # CUSTOMIZE: Use your Go version
```

### Step 4: Customize Coverage Settings

In `.github/workflows/coverage.yml`:

```yaml
- name: Generate coverage badge
  with:
    limit-coverage: "70"  # CUSTOMIZE: Set your coverage threshold
```

### Step 5: Update Funding Configuration

Update `.github/FUNDING.yml`:

```yaml
github: [YOUR_GITHUB_USERNAME]  # CUSTOMIZE
```

### Step 6: Configure GitHub Settings

Enable required GitHub features:

**Actions Permissions**:
- Settings → Actions → General
- Set "Workflow permissions" to "Read and write permissions"

**GitHub Container Registry**:
- Settings → Packages
- Enable "Inherit access from repository"

**Branch Protection** (optional):
- Settings → Branches → Add rule
- Require status checks: `linter`, `goreleaser-snapshot`

**Secrets** (if needed):
- Settings → Secrets → Actions
- Add `HOMEBREW_TAP_TOKEN` (if using Homebrew in GoReleaser)

### Step 7: Test Workflows

```bash
# 1. Push changes to trigger linter and snapshot
git add .github/
git commit -m "ci: add GitHub Actions workflows"
git push origin main

# 2. Check workflow runs at: https://github.com/OWNER/REPO/actions

# 3. Test release workflow (without publishing)
git tag -a v0.1.0-test -m "Test release"
git push origin v0.1.0-test

# 4. If successful, create real release
git tag -a v1.0.0 -m "First release"
git push origin v1.0.0
```

## Status Badges (Optional)

Add workflow badges to README.md:

```markdown
[![Linter](https://github.com/OWNER/REPO/actions/workflows/linter.yml/badge.svg)](https://github.com/OWNER/REPO/actions/workflows/linter.yml)
[![Release](https://github.com/OWNER/REPO/actions/workflows/release.yml/badge.svg)](https://github.com/OWNER/REPO/actions/workflows/release.yml)
![Coverage](https://raw.githubusercontent.com/OWNER/REPO/main/coverage-badge.svg)
```

## Expected Output

After using this skill, your repository will have:
- ✓ Complete CI/CD pipeline with 4 workflows
- ✓ Automated linting on every push
- ✓ Snapshot builds to validate releases
- ✓ Coverage badges showing test coverage
- ✓ Automated releases on Git tags
- ✓ Dependabot for dependency updates
- ✓ GitHub Sponsors configuration
- ✓ Production-ready workflow structure

Your project will have professional-grade CI/CD matching industry best practices.

## Additional Documentation

- **Detailed configurations and customization**: See [REFERENCE.md](REFERENCE.md)
- **Troubleshooting common issues**: See [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
- **Workflow templates**: Available in `assets/workflows/` directory

## Resources

- **GitHub Actions**: https://docs.github.com/en/actions
- **Task Runner**: https://taskfile.dev
- **golangci-lint**: https://golangci-lint.run
- **GoReleaser**: https://goreleaser.com
- **Dependabot**: https://docs.github.com/en/code-security/dependabot

Files in this skill

  • REFERENCE.md8.4 KB
  • SKILL.md5.7 KB
  • TROUBLESHOOTING.md9.3 KB
  • assets/FUNDING.yml890 B
  • assets/dependabot.yml2.7 KB
  • assets/workflows/coverage.yml2.8 KB
  • assets/workflows/linter.yml2 KB
  • assets/workflows/release.yml4.7 KB
  • assets/workflows/snapshot.yml3.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.