CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

poisoned-pipeline-execution

Poisoned Pipeline Execution (PPE) — direct + indirect: inject commands via attacker-controllable build files (Makefile, package.json scripts, build.gradle, Dangerfile, .pre-commit-config.yaml), abuse pull_request_target / fork-PR triggers, and ride dependency / test-script execution on CI.

Quality

85%

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

SKILL.md
Quality
Evals
Security

Quality

Content

90%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.

An exceptionally dense, executable technique reference: concrete recon commands, per-ecosystem payload diffs, and a safety decision gate with almost no wasted tokens. The main gaps are the absence of an explicit numbered end-to-end workflow with a beacon-verification feedback loop, and a monolithic single-file structure that could push per-ecosystem examples into references/.

Suggestions

Add a short numbered operational sequence (recon → confirm scope → select vector → deploy beacon-only PoC → verify beacon received → close and delete fork) with an explicit verification checkpoint before cleanup.

Split the per-ecosystem payload examples (Gradle/Maven, Danger/pre-commit, setup.py, test fixtures) into a references/ file with one-level-deep links from SKILL.md, keeping the main file as a lean overview.

Fold the Tools table entries for zizmor/octoscan/actionlint into the recon section as concrete commands (e.g., the exact zizmor invocation) so the tool guidance is directly runnable.

DimensionReasoningScore

Conciseness

The body is lean and code-first: every section is either a compact command block, a payload diff, or a two-column table, and the prose adds only non-obvious domain knowledge (the D-PPE/I-PPE taxonomy, why pull_request_target + PR-head checkout is privileged). It is not 4 because nothing reads as over-explanation to trim; the CVE/date mentions ("CVE-2025-30066", "Mar 2025") are precedent citations, not date-conditional instructions.

5 / 5

Actionability

Guidance is fully executable: copy-paste recon greps and gh api commands, concrete PR-diff payloads per ecosystem (package.json postinstall, Makefile target, build.gradle doFirst, pom.xml plugin, Dangerfile, pre-commit repo, setup.py), and a named tool table (gato/gato-x, actionlint, zizmor, octoscan). It is not 4 because the examples are complete and cover the common cases; the <COLLAB>/<REPO> placeholders are parameters, not pseudocode.

5 / 5

Workflow Clarity

A clear implicit sequence runs Recon → choose D-PPE or I-PPE vector → payload → Decision gate, with a numbered recon checklist (trigger greps, fork/permission checks) and a Decision gate acting as a safety checklist (beacon-only PoC, labeled research fork, close+delete after capture). It is not 5 because there is no explicit end-to-end numbered workflow or feedback loop (e.g., verify the beacon was received before cleanup); not 3 because validation checkpoints are present via the recon gates and Decision gate.

4 / 5

Progressive Disclosure

The body is well-sectioned with navigable headers (Recon, Direct PPE, Indirect PPE, pull_request_target, Chains, Tools, Detection, Decision gate) and cross-skill references clearly signaled in the Chains table (cicd-secrets-exfil/SKILL.md, self-hosted-runner-abuse/SKILL.md); no bundle files exist, so inline placement is the only option. It is not 5 because at ~180 lines the per-ecosystem payload examples are candidates for one-level-deep references/ files that would keep SKILL.md a leaner overview.

4 / 5

Total

18

/

20

Passed

Description

75%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 dense, highly concrete description that names specific actions, files, and triggers with near-zero vagueness. Its only structural weakness is the missing explicit "Use when..." clause, which caps completeness, and a few absent natural synonyms (CI/CD, GitHub Actions).

Suggestions

Append an explicit trigger clause, e.g. "Use when testing CI/CD pipeline security, auditing workflows for pull_request_target misuse, or running PPE PoCs during authorized red-team engagements."

Add natural synonyms users would say, such as "CI/CD", "GitHub Actions", "Jenkins", "GitLab CI", and "workflow injection", to broaden trigger coverage.

Move a compact version of the when_to_use trigger phrases into the description itself so the evaluated field self-contains both what and when.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "inject commands via attacker-controllable build files (Makefile, package.json scripts, build.gradle, Dangerfile, .pre-commit-config.yaml)", "abuse pull_request_target / fork-PR triggers", and "ride dependency / test-script execution on CI" — each with named file targets, comprehensively covering the direct and indirect PPE space. It is not 4 because there are no coverage gaps: the actions are specific and span the technique's full scope.

5 / 5

Completeness

The "what" is explicit and concrete (inject commands via named build files, abuse specific triggers), but the description field contains no "Use when..." clause or equivalent explicit trigger guidance — the trigger phrasing lives in metadata.when_to_use, outside the evaluated field — which caps completeness at 3 per the rubric. It is not 4 because "when" is absent entirely rather than merely imprecise.

3 / 5

Trigger Term Quality

Strong keyword coverage including "PPE", "pull_request_target", "fork-PR", "Makefile", "package.json scripts", "Dangerfile", ".pre-commit-config.yaml", and "CI" — terms a security researcher would naturally say. It is not 5 because natural synonyms and variations such as "CI/CD", "GitHub Actions", "workflow", or "supply chain" are absent; not 3 because the terms present are specific and abundant rather than missing common variations.

4 / 5

Distinctiveness Conflict Risk

"Poisoned Pipeline Execution (PPE)" names a specific attack technique with highly distinct triggers ("pull_request_target", "Dangerfile", ".pre-commit-config.yaml") that no sibling skill would plausibly claim, giving a clear niche with minimal conflict risk. It is not 4 because the named technique and unique file/trigger terms make even minor overlap with related CI/CD security skills unlikely.

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.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

PurpleAILAB/Decepticon

Path

packages/decepticon/decepticon/skills/standard/exploit/cicd/poisoned-pipeline-execution/SKILL.md

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.