Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create production-ready GitHub Actions workflows for automated testing, building, and deploying applications. Use when setting up CI/CD with GitHub Actions, automating development workflows, or creating reusable workflow templates.
.claude/skills/asymmetric-al-github-actions-templates/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 102% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 69% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 67% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 99% | 0% |
Production-ready GitHub Actions workflow patterns for testing, building, and deploying applications.
Create efficient, secure GitHub Actions workflows for continuous integration and deployment across various tech stacks.
yamlname: Test on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 20.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: "npm" - name: Install dependencies run: npm ci - name: Run linter run: npm run lint - name: Run tests run: npm test - name: Upload coverage uses: codecov/codecov-action@v3 with: files: ./coverage/lcov.info
Reference: See assets/test-workflow.yml
yamlname: Build and Push on: push: branches: [main] tags: ["v*"] env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} jobs: build: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Log in to Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max
Reference: See assets/deploy-workflow.yml
yamlname: Deploy to Kubernetes on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-west-2 - name: Update kubeconfig run: | aws eks update-kubeconfig --name production-cluster --region us-west-2 - name: Deploy to Kubernetes run: | kubectl apply -f k8s/ kubectl rollout status deployment/my-app -n production kubectl get services -n production - name: Verify deployment run: | kubectl get pods -n production kubectl describe deployment my-app -n production
yamlname: Matrix Build on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Run tests run: pytest
Reference: See assets/matrix-build.yml
yaml# .github/workflows/reusable-test.yml name: Reusable Test Workflow on: workflow_call: inputs: node-version: required: true type: string secrets: NPM_TOKEN: required: true jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ inputs.node-version }} - run: npm ci - run: npm test
Use reusable workflow:
yamljobs: call-test: uses: ./.github/workflows/reusable-test.yml with: node-version: "20.x" secrets: NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
yamlname: Security Scan on: push: branches: [main] pull_request: branches: [main] jobs: security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@master with: scan-type: "fs" scan-ref: "." format: "sarif" output: "trivy-results.sarif" - name: Upload Trivy results to GitHub Security uses: github/codeql-action/upload-sarif@v2 with: sarif_file: "trivy-results.sarif" - name: Run Snyk Security Scan uses: snyk/actions/node@master env: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
yamlname: Deploy to Production on: push: tags: ["v*"] jobs: deploy: runs-on: ubuntu-latest environment: name: production url: https://app.example.com steps: - uses: actions/checkout@v4 - name: Deploy application run: | echo "Deploying to production..." # Deployment commands here - name: Notify Slack if: success() uses: slackapi/slack-github-action@v1 with: webhook-url: ${{ secrets.SLACK_WEBHOOK }} payload: | { "text": "Deployment to production completed successfully!" }
assets/test-workflow.yml - Testing workflow templateassets/deploy-workflow.yml - Deployment workflow templateassets/matrix-build.yml - Matrix build templatereferences/common-workflows.md - Common workflow patternsgitlab-ci-patterns - For GitLab CI workflowsdeployment-pipeline-design - For pipeline architecturesecrets-management - For secrets handling| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 13,044 | 8,818 | -32% | 1 | 1 | 0% | 2,332 | 3,696 | +58% | 0 | 0 | — |
case-02 | fail→fail | 7,872 | 6,348 | -19% | 1 | 1 | 0% | 1,533 | 3,231 | +111% | 0 | 0 | — |
case-03 | pass→pass | 11,038 | 9,318 | -16% | 1 | 1 | 0% | 2,195 | 3,720 | +69% | 0 | 0 | — |
case-04 | pass→pass | 10,723 | 9,498 | -11% | 1 | 1 | 0% | 2,356 | 3,925 | +67% | 0 | 0 | — |
case-05 | pass→pass | 7,998 | 6,527 | -18% | 1 | 1 | 0% | 1,757 | 3,492 | +99% | 0 | 0 | — |
case-06 | pass→pass | 8,418 | 7,330 | -13% | 1 | 1 | 0% | 1,929 | 3,725 | +93% | 0 | 0 | — |
case-07 | pass→pass | 5,262 | 5,777 | +10% | 1 | 1 | 0% | 1,240 | 3,384 | +173% | 0 | 0 | — |
case-08 | fail→pass | 7,306 | 5,716 | -22% | 1 | 1 | 0% | 1,659 | 3,343 | +102% | 0 | 0 | — |
case-09 | fail→fail | 10,815 | 6,639 | -39% | 1 | 1 | 0% | 2,408 | 3,349 | +39% | 0 | 0 | — |
case-10 | pass→pass | 10,626 | 5,589 | -47% | 1 | 1 | 0% | 1,997 | 2,857 | +43% | 0 | 0 | — |
case-11 | pass→pass | 7,519 | 4,951 | -34% | 1 | 1 | 0% | 1,442 | 2,949 | +105% | 0 | 0 | — |
case-12 | pass→pass | 10,558 | 8,853 | -16% | 1 | 1 | 0% | 2,011 | 3,833 | +91% | 0 | 0 | — |
case-13 | fail→fail | 3,623 | 3,514 | -3% | 1 | 1 | 0% | 692 | 2,649 | +283% | 0 | 0 | — |
case-14 | pass→pass | 6,021 | 4,452 | -26% | 1 | 1 | 0% | 1,233 | 2,629 | +113% | 0 | 0 | — |
case-15 | pass→pass | 7,187 | 3,749 | -48% | 1 | 1 | 0% | 1,303 | 2,641 | +103% | 0 | 0 | — |
case-16 | pass→pass | 3,740 | 1,820 | -51% | 1 | 1 | 0% | 638 | 2,323 | +264% | 0 | 0 | — |
case-17 | pass→pass | 7,374 | 2,120 | -71% | 1 | 1 | 0% | 1,188 | 2,354 | +98% | 0 | 0 | — |
case-18 | pass→pass | 5,501 | 2,549 | -54% | 1 | 1 | 0% | 979 | 2,421 | +147% | 0 | 0 | — |
case-19 | fail→pass | 7,474 | 3,891 | -48% | 1 | 1 | 0% | 1,447 | 2,673 | +85% | 0 | 0 | — |
case-20 | pass→pass | 4,890 | 3,922 | -20% | 1 | 1 | 0% | 867 | 2,713 | +213% | 0 | 0 | — |
case-21 | pass→pass | 6,816 | 10,641 | +56% | 1 | 1 | 0% | 1,352 | 4,165 | +208% | 0 | 0 | — |
case-22 | pass→pass | 4,068 | 5,366 | +32% | 1 | 1 | 0% | 812 | 3,184 | +292% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.