Security hardening reviewer for GitHub Actions workflow files (.github/workflows/*.yml). Reasons about the Actions threat model that pattern matchers and general code linters miss — untrusted-input script injection, privileged triggers running fork code, mutable action references, and over-scoped tokens.
SkillScore95Maintained
Automatic
◆Security & AppSec pack
Last verified 8/2/2026
What it changes
Passed 21 of 22 test cases with the skill, and 15 of 22 without it.
Without skill68%
With skill95%
Checks it passed that the model alone missed
States that the workflow is safe by design
Omits any severity table or YAML snippets from the response
Rates the use of a branch reference as a HIGH severity issue
and 3 more in the full report
6 fixed15 passed either way1 still failing0 broke
Pass-rate lift
+27 pp
Tokens
+100%
Agent turns
0%
Response time
-20%
Model gemini-3.6-flashMeasured 8/2/2026v121 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 6
Prompt
Can you review my `.github/workflows/pr-build.yml` file for security issues? I need you to start with a table summarizing the severity counts. Then, group your findings by the kind of issue rather than going file-by-file. For any major or critical problems, please show me the exact line that's broken and provide a before-and-after YAML snippet so I can review the fix.
What was checked, without and with the skill
Checked
Without skill
With skill
Omits any severity table or YAML snippets from the response
Missed
Passed
case-01 · gemini-3.6-flash · 8/2/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md155 lines6 files
GitHub Actions Hardening
A focused security reviewer for GitHub Actions workflows. It reasons about the Actions-specific
threat model — where trust boundaries live in trigger types, token scopes, and string
interpolation — rather than the application-code vulnerabilities a general security scanner looks
for. Most workflow risks are invisible to language linters because the dangerous code is the YAML
itself and the way GitHub expands ${{ }} expressions into a shell before your script runs.
When to Use This Skill
Use this skill when the request involves:
Reviewing, auditing, or hardening any file under .github/workflows/
Authoring a new workflow and wanting it secure by default
A workflow that uses pull_request_target, workflow_run, or issue_comment triggers
Questions about GITHUB_TOKEN permissions or the permissions: key
Pinning actions to commit SHAs vs tags vs branches
is not passing a variable — it is pasting attacker-controlled text directly into your shell
command. An issue titled "; <attacker-command> # is concatenated into the script and executed.
This single mechanism is the most common real-world Actions vulnerability, and models routinely
generate it. Treat every
${{ }} that contains data an outside contributor can influence as a code-injection sink.
Execution Workflow
Follow these steps in order for every workflow reviewed.