AC github-actions-hardening
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. Use this skill when asked to review, audit, harden, or secure a GitHub Actions workflow, when writing a new workflow, or for any request like "is this workflow safe?", "review my CI for security issues", "why is pull_request_target dangerous here?", "pin my actions", or "lock down GITHUB_TOKEN permissions". Covers script injection via ${{ }} interpolation, pull_request_target / workflow_run privilege escalation, SHA-pinning of third-party actions, least-privilege permissions, GITHUB_ENV/GITHUB_OUTPUT injection, secret exposure, OIDC over long-lived credentials, and self-hosted runner exposure on public repositories.
Security hardening reviewer for GitHub Actions workflow files (.github/workflows/.yml). Reasons about the Actions threat model that pattern matchers and…
As a process C 52/100 · Has gaps — weak spots: when it triggers, inputs and preconditions, failures and branches
How to improve
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 1
✓ No critical or high findings
Medium and low: 1
-
low Risky intent
intent-offensive-securitySKILL.md:3Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (detector / deny-list definition)description: 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 — untru
detector
Files scanned: 6. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
✓ No remarks against the Agent Skills spec
Process rating: all ten parameters 52/100
- 0Inputs and preconditions. Does not say what the process needs to start
- 0Failures and branches. Linear process with no failure handling
- 0Progress reporting. Says nothing while it works
- 20When it triggers. No condition that starts the skill
- 60Tools and files. Uses tools (bash, node) that frontmatter does not declare
- 60Result and completion. Output format stated, no completion criterion
- 85Steps. 44 steps, 2 vague phrases
- 100Consistency. Name and required fields are in place
- 100Execution cost. Instruction body is 2203 tokens
- 100Running it twice. Mutating operations check current state
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +4Description does not say when NOT to use the skill (false activations)
- +3Description length 929: 120–800 characters recommended
- +1No license
- +2Single-language instructions
- +5Description quotes 5 example trigger phrases
- +4Structure: 14 headings
- +3Step-by-step instructions: 44 items
- +3Output format is stated explicitly
- +4Has examples (1 code blocks)
- +4Reference files are cited in the instructions (5 of 5)
Quality base 70; lint remarks subtract, signals add up to 100. Result: 93.