CtrlK
BlogDocsLog inGet started
Tessl Logo

github-actions-injection

GitHub Actions ${{ }} expression injection — attacker-controlled context (issue/PR title, body, branch name, commit message) substituted into run: steps, unsafe pull_request_target + PR-head checkout, GITHUB_TOKEN scope abuse, artifact/cache poisoning, action tag-vs-SHA pinning.

64

Quality

76%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Critical

Do not install without reviewing

Fix and improve this skill with Tessl

tessl review fix ./packages/decepticon/decepticon/skills/standard/exploit/cicd/github-actions-injection/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

81%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A dense, highly actionable offensive-security skill with executable recon and exploit patterns and a clear safe-pattern/detection section. The main gap is progressive disclosure — everything is packed into one file with no supporting bundle files — and the exploit workflow could use an explicit pre-exfil validation checkpoint.

Suggestions

Split the Detection signatures and Tools tables into a references/ file (e.g. references/detection.md) and link to it from SKILL.md so the main file stays a tight overview.

Add an explicit numbered validation step before the exfil-truncation step in the Decision gate (e.g. '4. Confirm only the first 8-12 chars of the token are exfiltrated; abort if more would leak').

Consider extracting the full exploit-payload worked example into a references/exploits.md and keeping a one-line summary inline.

DimensionReasoningScore

Conciseness

Lean, table-and-code-driven layout that assumes Claude's competence and avoids explaining basic Actions concepts; a few sections (e.g. the multi-path explanation under pull_request_target) could be tightened, but no padding.

4 / 5

Actionability

Copy-paste-ready grep recon commands, a fully worked vulnerable workflow plus the matching expanded shell exploit, branch-name injection commands, scope-check curl/gh calls, and SHA-vs-tag pinning examples — concrete and executable throughout.

5 / 5

Workflow Clarity

Clear sequence from recon → sink identification → exploit → safe pattern → detection, plus an explicit Decision Gate with validation/cleanup steps; capped below 5 because the destructive exploit path lacks a hard validation checkpoint before exfil-truncation and the recon→exploit handoff is implied rather than a numbered checklist.

4 / 5

Progressive Disclosure

Well-organized sections with a References list, but all substantive content is inlined in the single SKILL.md with no bundle files (references/, scripts/, assets/ absent) and only one outward link (to poisoned-pipeline-execution/SKILL.md); the detection/tools tables could live in separate reference files.

3 / 5

Total

16

/

20

Passed

Description

71%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A specific, comprehensive, and distinctive description that clearly names the domain and its concrete attack patterns. Its main weakness is the absence of an explicit 'Use when...' trigger clause in the description text itself, which limits the completeness dimension.

Suggestions

Append an explicit 'Use when ...' trigger clause to the description, e.g. 'Use when auditing GitHub Actions workflows for script/expression injection, pull_request_target misuse, token scope, or action pinning.'

Add a couple of lay synonyms (e.g. 'workflow injection', 'CI/CD script injection') alongside the technical identifiers to broaden natural keyword coverage.

DimensionReasoningScore

Specificity

Lists multiple concrete capabilities — 'expression injection ... substituted into run: steps', 'unsafe pull_request_target + PR-head checkout', 'GITHUB_TOKEN scope abuse', 'artifact/cache poisoning', 'action tag-vs-SHA pinning' — covering the full attack surface comprehensively.

5 / 5

Completeness

Has a very clear and specific 'what' but no explicit 'Use when...' / trigger clause; the when-to-use guidance lives only in metadata.when_to_use rather than the description itself, which caps completeness at 3 per the rubric.

3 / 5

Trigger Term Quality

Includes natural terms a user would say ('GitHub Actions', 'expression injection', 'pull_request_target', 'artifact', 'cache', 'pinning') but leans on technical identifiers rather than lay synonyms; missing a few common phrasings like 'CI/CD injection' or 'workflow security'.

4 / 5

Distinctiveness Conflict Risk

Targets a tight, well-defined niche (Actions expression injection with named sub-patterns) that is clearly distinguishable from sibling offensive skills like poisoned-pipeline-execution, with minimal overlap risk.

5 / 5

Total

17

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository
PurpleAILAB/Decepticon
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.