ci-secure SKILL.md skillB

ci-secure from starslingdev/skills is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.

Install it, pinned
mdr add starslingdev/skills/ci-secure@git:20261026.c50cb61

Pins git:20261026.c50cb61 in mdr.lock. Pin the fingerprint instead.

Audit grade
B, 16 of 17 checks passed
Kind
SKILL.md skill
Repository
starslingdev/skills
Path
skills/ci-secure/SKILL.md
Versions recorded
5
Latest version
git:20261026.c50cb61, committed Oct 26, 2026
First version recorded
Aug 19, 2026
Size
31,825 bytes
Repository stars
80
License
MIT

Scans a repo's GitHub Actions workflows for the ten critical CI/CD attack vectors — template injection, fork code executed with privileges (pwn requests), cache poisoning, impostor action SHAs, secrets dumps, GITHUB_ENV hijack, write-token untrusted triggers, credentials in caches/artifacts, unverified remote code execution (curl|bash and mutable fetch-and-run), and dependency install scripts running in a job that holds secrets — reports every finding with a plain-English attacker scenario…

Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.

What the file says

# CI Secure

Scans `.github/workflows/*.yml` against the **ten critical attack vectors**
in [references/security-patterns.md](references/security-patterns.md) — each
a complete outsider → compromise path with real incidents behind it (the
selection criterion and rejection record:
[references/why-these-ten.md](references/why-these-ten.md)). Every finding
renders with a "what an attacker could do" scenario; **zero findings is a
first-class result**. The skill asks which findings to fix and dispatches one
subagent per finding group. It never commits, pushes, or opens a PR
**unasked** — by default the user reviews the working-tree diff themselves.

**Scope honesty (verbatim, in every report):** *Critical exploit-chain checks
only — this is not a comprehensive audit.*

**Prereqs:** PyYAML (`pip install pyyaml` — the scanner's only third-party
dep). `gh` is optional, used for the network-gated impostor-SHA check (P14.11
— the one vector that cannot be answered from YAML alone), the dormancy note,
and six config facts read over the API (required checks skippable, fork-PR
approval, CODEOWNERS enforced, two environment checks, secrets). Everything
…

Read the whole file at its exact version.

How to install

The exact contents, by fingerprint
mdr add starslingdev/skills/ci-secure@sha256:777a4dab3f76a17f

The line at the top of this page pins the label git:20261026.c50cb61, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.

Badge

mdr badge

[![mdr](https://markdownregistry.com/badge/art_6wth4glpixao7i4r.svg)](https://markdownregistry.com/a/art_6wth4glpixao7i4r)

2 badge image fetches in 30 days. What the badge shows.

Versions

The registry has recorded 5 versions of this file, between Aug 19, 2026 and Oct 26, 2026, about one every 17 days.

versioncommittedcommitsizeaudit
git:20261026.c50cb61 latest2026-10-26 c50cb61 31,825 BB view · diff
git:20261023.8ce25fe2026-10-23 8ce25fe 31,815 BB view · diff
git:20261023.18d367e2026-10-23 18d367e 31,790 BB view · diff
git:20260820.0a7e76e2026-08-20 0a7e76e 31,294 BB view · diff
git:20260819.1a49a5c2026-08-19 1a49a5c 31,275 BB view

Audit of the latest version

B  16 of 17 checks passed. Fixed automatic checks with no AI involved, so the same checks give the same answer every run.
  • fail: No curl or wget piped into a shell (matched: curl|bash)
  • pass: Frontmatter block present
  • pass: Frontmatter declares a name
  • pass: Frontmatter declares a description
  • pass: Size between 200 bytes and 200 KB (31825 bytes)
  • pass: No zero-width or bidi control characters
  • pass: No instruction hidden inside an HTML comment
  • pass: No link to an exfiltration or paste host
  • pass: No credential-shaped string
  • pass: No instruction to send local credentials anywhere
  • pass: No text hidden with inline styles
  • pass: No prompt-injection phrasing
  • pass: No recursive delete of root, home or parent
  • pass: No instruction to read or print local credentials
  • pass: No base64 blob over 200 characters
  • pass: No link to a raw IP address
  • pass: No script tag

Starting a new one? Use a template for SKILL.md on mdpantry, which passes every one of these checks and says what to change in it.

Source

GitHub

starslingdev/skills · 80 stars · license MIT · pushed 2026-11-06 · branch main

API

GET https://markdownregistry.com/api/v1/artifacts/art_6wth4glpixao7i4r
GET https://markdownregistry.com/api/v1/resolve?ref=starslingdev/skills/ci-secure
GET https://markdownregistry.com/api/v1/blob/777a4dab3f76a17f1c1e67501dcf9d200021e5e6c449e52268283276c7addb29

Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.

Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.

More from starslingdev/skills

AGENTS.md AGENTS.md file
starslingdev/skills · AGENTS.md
git:20261029.3a5823c · audit A · 80 stars
CLAUDE.md CLAUDE.md file
starslingdev/skills · CLAUDE.md
git:20261029.3a5823c · audit A · 80 stars
skills-registry-security SKILL.md skill
starslingdev/skills · maintainers/skills-registry-security/SKILL.md · Checks the third-party security audit status of a skill published to a skills registry (skills.sh) across every cached…
git:20260813.c8495fe · audit A · 80 stars
ci-score SKILL.md skill
starslingdev/skills · skills/ci-score/SKILL.md · Grades a repository's GitHub Actions configuration against CI best practices (the CI Score: eleven pass/fail…
git:20261102.edadda0 · audit A · 80 stars
ci-speedup SKILL.md skill
starslingdev/skills · skills/ci-speedup/SKILL.md · Audits a repository's GitHub Actions workflows for CI optimization opportunities — missing caches, redundant setup…
git:20261104.fec2fec · audit A · 80 stars
sling SKILL.md skill
starslingdev/skills · skills/sling/SKILL.md · Diagnoses GitHub Actions failures and attributes CI time and cost using StarSling's `sling` CLI. Invoke this BEFORE…
git:20261105.3675fc6 · audit A · 80 stars

Every file in starslingdev/skills

Browse by kind, by grade B, or by owner.