github-actions

Guides authoring and reviewing GitHub Actions workflows with supply-chain security rules.

Updated Apr 11, 2026
One-click install
npx skills add https://github.com/lurodrisilva/personal-skills --skill github-actions-lurodrisilva
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: github-actions
Source: https://github.com/lurodrisilva/personal-skills/tree/main/platform-engineering/github-actions
Command: npx skills add https://github.com/lurodrisilva/personal-skills --skill github-actions-lurodrisilva

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? GitHub Actions workflows are frequently written with over-privileged tokens, mutable action tags, script-injection vulnerabilities, and long-lived cloud secrets, creating supply-chain and blast-radius risks across an organization's repositories. ## Core Features & Use Cases - Security-first workflow authoring: Enforces floor-level permissions:, SHA-pinning of third-party actions, script-injection-safe run: steps via env: bindings, and OIDC federation to AWS/GCP/Azure instead of long-lived secrets. - Complete syntax reference: Covers triggers, contexts, expressions, workflow commands, environment files, dependency caching, reusable workflows, composite actions, matrices, concurrency, and environment protection rules. - Supply-chain attestation track: Guides build-provenance attestations, SBOM generation, SLSA Build L3 posture, and Sigstore policy-controller enforcement for release artifacts. - Use Case: When reviewing a PR that adds a deploy workflow, apply the six non-negotiables to flag a pull_request_target step that interpolates ${{ github.event.pull_request.title }} directly into a shell command and rewrite it using an env: binding. ## Quick Start Ask the AI to write a CI workflow for your repository that builds, tests, and deploys to AWS using OIDC, and it will produce a SHA-pinned, least-privilege workflow following the mandatory prologue.

Frequently Asked Questions about github-actions

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write a secure GitHub Actions workflow?▼

Start every workflow with `permissions: {}` at the top level and widen scopes only per-job. Pin all third-party actions by full commit SHA, bind untrusted `${{ github.event.* }}` data through `env:` variables instead of interpolating into `run:` strings, and use OIDC federation for cloud credentials.

How to prevent script injection in GitHub Actions run steps?▼

Never interpolate `${{ github.event.* }}` values like PR titles or issue bodies directly into a `run:` string, since GitHub substitutes them before the shell executes. Instead, assign the value to an `env:` variable and reference it as a shell variable like `$TITLE`, which is a safe runtime read.

Should I pin GitHub Actions by SHA or tag?▼

Pin every third-party action by its full 40-character commit SHA, with a comment noting the resolved tag. Tags are mutable and can be force-pushed by attackers, as demonstrated by the tj-actions/changed-files supply-chain attack. Tools like pinact, Ratchet, and Dependabot automate SHA pinning and updates.

How do I use OIDC instead of AWS secrets in GitHub Actions?▼

Grant `id-token: write` on the job, then use `aws-actions/configure-aws-credentials` with a `role-to-assume` ARN. On the AWS side, create a federated identity provider trusting token.actions.githubusercontent.com and scope the IAM role trust policy's `sub` claim to a specific repo and environment.

What is the difference between reusable workflows and composite actions?▼

Composite actions reuse a sequence of steps within a single job and cannot define jobs, matrices, or environments. Reusable workflows (`on: workflow_call`) package entire jobs including matrices, concurrency, and environment gates, making them suited for org-wide CI/CD templates. Secrets must be passed explicitly to reusable workflows.

Why is pull_request_target dangerous in GitHub Actions?▼

pull_request_target runs in the base repository's context with access to its secrets while the fork's code can be checked out. Checking out the PR head and referencing untrusted context together lets attackers execute code with the base repo's token. Separate privileged steps from untrusted code execution.