github-actions
Skill47 starsChanged 9 months agoMITView on GitHub
GitHub Actions CI/CD expert skill. Use when creating, debugging, optimizing, or securing GitHub Actions workflows, implementing DevSecOps pipelines, setting up deployment strategies, configuring matrix builds, caching, reusable workflows, OIDC authentication, or troubleshooting CI/CD failures.
- Reads credentials
48 other projects use a version of this, 2 of them edited.
Adopted by
Most recently taken up by
- StephanMeijer/skillstheir own version, first seen Nov 8, 2026
- p-chan/agent-skillstheir own version, first seen Nov 8, 2026
- p-chan/skillstheir own version, first seen Nov 8, 2026
- microsoft/scopetheir own version, first seen Nov 8, 2026
- fmind/dottheir own version, first seen Nov 8, 2026
- fmind/dotfilestheir own version, first seen Nov 8, 2026
Used with
Projects with it also use react-native-brownfield-migration, gitlab-ci and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
maikotrindadeSkillreact-native-brownfield-migration
Provides an incremental adoption strategy to migrate native iOS or Android apps to React Native or Expo using @callstack/react-native-brownfield for initial setup. Use when planning migration steps, packaging XCFramework/AAR artifacts, and integrating them into host apps.
Also in 4 projects that use this
jcsaaddupuySkillgitlab-ci
GitLab CI/CD configuration guide
Also in 3 projects that use this
maikotrindadeSkillupgrading-react-native
Upgrades React Native apps to newer versions by applying rn-diff-purge template diffs, updating package.json dependencies, migrating native iOS and Android configuration, resolving CocoaPods and Gradle changes, and handling breaking API updates. Use when upgrading React Native, bumping RN version, updating from RN 0.x to 0.y, or migrating Expo SDK alongside a React Native upgrade.
Also in 3 projects that use this
rogue-dev-studioSkillnodejs
Node.js development environment. Use when the project needs this capability or the user / team manifest asks for it. Use for specialized `nodejs` work when listed in TEAM.yaml or explicitly requested.
Also in 4 projects that use this
Sorcha-PlatformSkillgrpc
Build or review gRPC services and clients in .NET. USE FOR: ASP.NET Core gRPC, protobuf contracts, unary or streaming RPC, gRPC client factory, interceptors, deadlines, cancellation, channel reuse, backend service integration. DO NOT USE FOR: broad browser-facing APIs without gRPC-Web tradeoff review, SignalR realtime hubs, plain REST APIs. INVOKES: dotnet build/test and focused service or client smoke checks when code changes.
Also in 3 projects that use this
ihiteshguptaSkillterraform
Expert in Infrastructure as Code with Terraform. Use for creating, managing, and versioning infrastructure across cloud providers.
Also in 5 projects that use this
Other versions48 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- abdullah1854/ClaudeSuperSkills★ 113% same
- shristi2211/Claude_Skills★ 111% same
Wrote their own version · 46
- JabRef/jabref★ 4.9ksame name
- callstackincubator/agent-skills★ 1.7ksame name
- tddworks/ClaudeBar★ 1.6ksame name
- OpenHands/extensions★ 167same name
- microsoft/scope★ 78same name
- nitinjain999/platform-skills★ 71same name
- wendylabsinc/claude-skills★ 62same name
- nahid-sparktales/agent-dispatcher★ 59same name
- sabahattink/antigravity-fullstack-hq★ 30same name
- G1Joshi/Agent-Skills★ 15same name
36 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- argocd-helmSkill
- brand-guidelinesSkill
- frontend-reactSkill
- gcp-platformSkill
- golang-backendSkill
- mideast-fintech-contentSkill
- security-engineeringSkill
- seo-optimizationSkill
The file
Files
You are operating as a Principal DevOps Engineer with 10+ years of CI/CD experience, specializing in GitHub Actions pipelines for production workloads.
Pipeline Design Principles
Fail fast → Parallelize → Cache → Build once → Deploy many
1. Fast feedback (lint, format) → <1 min
2. Unit tests → 1-5 min
3. Security scanning (SAST, SCA) → 2-5 min
4. Integration tests → 5-15 min
5. Build artifacts → 2-5 min
6. E2E tests (main branch only) → 15-30 min
7. Deploy (with approval gates) → 2-10 minWorkflow Structure
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- # lint steps
test:
runs-on: ubuntu-latest
needs: [lint]
strategy:
matrix:
shard: [1, 2, 3]
steps:
- uses: actions/checkout@v4
- # test steps with sharding
build:
runs-on: ubuntu-latest
needs: [test]
steps:
- uses: actions/checkout@v4
- # build and upload artifact
deploy:
runs-on: ubuntu-latest
needs: [build]
if: github.ref == 'refs/heads/main'
environment:
name: production
url: https://example.com
steps:
- # download artifact and deployCaching Strategies
Node.js
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- run: npm ciGo
- uses: actions/setup-go@v5
with:
go-version: '1.23'
cache: true
- run: go build ./...Docker Layer Caching
- uses: docker/build-push-action@v6
with:
context: .
cache-from: type=gha
cache-to: type=gha,mode=maxCustom Cache
- uses: actions/cache@v4
with:
path: |
~/.cache/custom
./build-cache
key: ${{ runner.os }}-custom-${{ hashFiles('**/lockfile') }}
restore-keys: |
${{ runner.os }}-custom-Security Best Practices
OIDC Authentication (no static credentials)
AWS:
permissions:
id-token: write
contents: read
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789:role/GitHubActionsRole
aws-region: us-east-1GCP:
permissions:
id-token: write
contents: read
steps:
- uses: google-github-actions/auth@v2
with:
workload_identity_provider: projects/123/locations/global/workloadIdentityPools/gh/providers/gh
service_account: deploy@project.iam.gserviceaccount.comPin Actions to SHA
# Good - pinned to SHA
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# Acceptable - pinned to major version
- uses: actions/checkout@v4
# Bad - unpinned
- uses: actions/checkout@mainMinimal Permissions
# Global - restrictive
permissions:
contents: read
# Per-job - grant only what's needed
jobs:
deploy:
permissions:
contents: read
id-token: write
packages: writeSecurity Scanning Pipeline
jobs:
secret-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: trufflesecurity/trufflehog@main
sast:
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- uses: actions/checkout@v4
- uses: github/codeql-action/init@v3
with:
languages: go # or javascript, python
- uses: github/codeql-action/analyze@v3
sca:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm audit --audit-level=high # or govulncheck, pip-audit
container-scan:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: aquasecurity/trivy-action@master
with:
image-ref: ${{ needs.build.outputs.image }}
severity: CRITICAL,HIGHReusable Workflows
Define
# .github/workflows/reusable-deploy.yml
on:
workflow_call:
inputs:
environment:
required: true
type: string
image-tag:
required: true
type: string
secrets:
DEPLOY_KEY:
required: true
jobs:
deploy:
runs-on: ubuntu-latest
environment: ${{ inputs.environment }}
steps:
- # deployment stepsConsume
jobs:
deploy-staging:
uses: ./.github/workflows/reusable-deploy.yml
with:
environment: staging
image-tag: ${{ needs.build.outputs.tag }}
secrets:
DEPLOY_KEY: ${{ secrets.STAGING_DEPLOY_KEY }}Docker Build & Push
jobs:
docker:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v5
id: meta
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=sha
type=ref,event=branch
type=semver,pattern={{version}}
- uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64,linux/arm64Matrix Builds
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
go-version: ['1.22', '1.23']
include:
- os: ubuntu-latest
go-version: '1.23'
coverage: true
exclude:
- os: macos-latest
go-version: '1.22'Deployment Patterns
| Pattern | Use Case | Implementation |
| Direct | Simple apps | Push to main → deploy |
| Blue-Green | Zero downtime | Deploy to inactive, switch traffic |
| Canary | Gradual rollout | Route % of traffic, monitor, promote |
| Rolling | Kubernetes | Rolling update with health checks |
Multi-Environment
deploy-staging:
needs: [build, test]
if: github.ref == 'refs/heads/main'
environment: staging
deploy-production:
needs: [deploy-staging]
environment:
name: production
# Manual approval via GitHub EnvironmentsTroubleshooting
| Error Pattern | Common Cause | Fix |
| "Module not found" | Missing dep or cache | Clear cache, npm ci |
| "Timeout" | Job too slow | Add caching, increase timeout |
| "Permission denied" | Missing permissions | Add to permissions: block |
| "Resource not accessible" | Token scope | Check GITHUB_TOKEN permissions |
| "Cannot connect to Docker" | Docker not available | Use correct runner |
| Intermittent failures | Flaky tests | Add retries, fix timing |
Debug Logging
# Add repository secrets:
# ACTIONS_RUNNER_DEBUG = true
# ACTIONS_STEP_DEBUG = trueLocal Testing
# Use act for local GitHub Actions testing
act -j build
act push --secret-file .secretsCLI Quick Reference
# List workflows
gh workflow list
# View recent runs
gh run list --limit 20
# View specific run details
gh run view <run-id>
# Re-run failed jobs
gh run rerun <run-id> --failed
# Download logs
gh run view <run-id> --log
# Trigger workflow manually
gh workflow run ci.yml -f param=value
# Watch run in real-time
gh run watchOptimization Checklist
- Dependency caching enabled (50-90% faster)
- Unnecessary
needsdependencies removed - Path filters to skip irrelevant runs
concurrencywithcancel-in-progressfor PRs- Job timeouts set to prevent hung builds
- Matrix builds for cross-platform testing
- Test sharding for large test suites
- Docker layer caching with BuildKit
- Artifacts: build once, deploy many
- Reusable workflows for DRY pipelines
For detailed references see references/patterns.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

