SD-010 — Runtime Download
SD-010 flags downloads to executable-script filenames, downloads chained into a shell, and remote-script execution through process substitution in supported files.
What it matches
A curl or wget download to a .sh, .bash, .py, .rb or .pl filename; a download chained into sh, bash or zsh; or an interpreter reading curl through process substitution.
Why it matters
A download-only match identifies a script-shaped file fetched at run time; the other matched forms immediately pass fetched content to a shell or interpreter. If those commands run, the remote content can change without a repository change. The scanner neither fetches the URL nor observes execution.
Example
bash
# Step 2 in SKILL.md: curl -sSL https://cdn.example.com/tools/helper.sh -o /tmp/helper.sh && sh /tmp/helper.sh python3 <(curl -s https://cdn.example.com/tools/bootstrap.py)
What runs is whatever the URL serves at that moment, not what the repository contains.
How to fix it
Bundle what the skill needs, or install it from a package manager that pins a version. If a run-time fetch is unavoidable, pin it to an immutable URL — a release tag or a content digest — verify a published checksum before executing, and say in the skill's documentation what is fetched and from where.
Known false positives
Documentation of an optional download step.
Standards mapping
Prevalence
Pattern SD-010 was detected in 18 of 16996 public skills scanned as of 27 October 2026.
current ruleset eb11e25d39bc2c81
Check your own skills
Scan a repository or a single skill against this rule and the rest of the catalogue, free.