From dev-workflows
Update all GitHub Actions workflow dependencies (uses: owner/action@vX) to their latest released versions. Fetches current releases from GitHub, updates all workflow YAML files to use SHA pinning with version comments, and commits.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev-workflows:update-github-actionsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scan all `.github/workflows/*.yml` files, find every `uses:` reference, resolve the latest release for each action, and update in place. **All actions are migrated to SHA pinning with a version comment** (e.g. `@abc123 # v4.1.0`) for supply-chain security.
Scan all .github/workflows/*.yml files, find every uses: reference, resolve the latest release for each action, and update in place. All actions are migrated to SHA pinning with a version comment (e.g. @abc123 # v4.1.0) for supply-chain security.
git status. If there are uncommitted changes, stop and ask the user how to proceed.git switch -c update-github-actions.Find all workflow files:
find .github/workflows -name '*.yml' -o -name '*.yaml'
Extract every uses: line. Each reference has one of these forms:
uses: owner/[email protected] — pinned to a semver taguses: owner/repo@vX — pinned to a major-version taguses: owner/repo@<sha> # vX.Y.Z — already SHA-pinned with version commentuses: owner/repo@<sha> — SHA-pinned with no comment (treat as unknown version)uses: ./.github/actions/local — local action (skip)Deduplicate the list. For each unique owner/repo reference, record the current version string.
For each owner/repo, fetch the latest release from GitHub:
https://api.github.com/repos/{owner}/{repo}/releases/latest
If the action does not publish GitHub Releases, fall back to the latest tag:
https://api.github.com/repos/{owner}/{repo}/tags
Record the latest version tag (e.g. v4.1.0).
For every action (regardless of how it is currently pinned), fetch the commit SHA for the latest release tag:
https://api.github.com/repos/{owner}/{repo}/git/ref/tags/{latest-tag}
If the tag is an annotated tag (type tag), follow the object.url to get the underlying commit SHA. If it is a lightweight tag (type commit), use the SHA directly.
The target format for every action reference is:
uses: owner/repo@<full-commit-sha> # vX.Y.Z
For each reference, compare the current state to the target SHA-pinned form:
@vX.Y.Z → migrate to @<sha> # vX'.Y'.Z'@vX → migrate to @<sha> # vX'.Y'.Z'@<sha> # vX.Y.Z → update SHA and version tag to latest@<sha> with no comment → update to @<sha> # vX'.Y'.Z' using the resolved latest releaseReport any major-version bumps separately — these may have breaking changes.
For each workflow file, replace every action reference with its SHA-pinned form using exact string replacement.
Examples:
# before (semver tag)
uses: actions/checkout@v3
# after
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.0
# before (major-version tag)
uses: actions/setup-go@v4
# after
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
# before (SHA-pinned, stale)
uses: actions/download-artifact@9782bd6a9848b53b110e712e20e42d89988822b7 # v3.0.1
# after
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.1.0
Print a table of all changes:
| Action | Old version | New version | Major bump? |
|---|
If any major-version bumps are present, note that the action's changelog should be reviewed for breaking changes and provide the GitHub releases URL.
Stage only .github/workflows/ files.
Commit:
chore(ci): update GitHub Actions to latest versions
<paste summary table>
@<sha> # vTag format — this is the target state regardless of how the action was previously pinned.-beta, -rc), skip it and use the latest stable release instead.github/codeql-action) release very frequently — confirm the version looks sane before committing.npx claudepluginhub mattermost/mattermost-ai-marketplace --plugin dev-workflowsReviews GitHub Actions workflows for supply chain risks: enforces SHA pinning, rates third-party actions, scopes permissions, checks triggers and inputs, and recommends updates.
Hardens GitHub Actions workflows against supply chain attacks, credential theft, and privilege escalation. Pins actions to SHAs, minimizes GITHUB_TOKEN permissions, prevents script injections via PR inputs, and enforces workflow change reviews.
Hardens GitHub Actions workflows against supply chain attacks, credential theft, and privilege escalation by pinning actions to SHA digests, minimizing GITHUB_TOKEN permissions, preventing script injection, and adding reviewer gates.