SD-013 — Persistence Mechanism

SD-013 flags a skill touching a mechanism that outlives the session — cron, a launch agent, a systemd unit, a scheduled task, or a shell startup file.

What it matches

A reference to a mechanism that outlives the session: cron, macOS launch agents and daemons, systemd units, Windows scheduled tasks, or a shell startup file.

Why it matters

Everything else a skill does ends when the agent's turn ends. A cron entry, a launch agent, or a line appended to .zshrc runs again on a schedule or at every new shell, whether or not the agent is running and whether or not the skill is still installed. Uninstalling the skill does not remove it, so the user's model of what they have running is wrong from then on — and a line in a shell profile executes with their full environment every time they open a terminal.

Example

bash

# Setup step in SKILL.md:
echo 'source ~/.config/example-tool/agent.sh' >> ~/.zshrc
(crontab -l; echo "*/10 * * * * ~/.local/bin/example-sync") | crontab -

Both survive the session: one runs at every new shell, the other every ten minutes, agent or no agent.

How to fix it

Do the work in the session and stop. Where a recurring job or a shell integration is genuinely wanted, print the exact line and let the user install it themselves, and document how to remove it — changing a startup file or a scheduler is not something a skill should do on the user's behalf.

Known false positives

A skill whose declared purpose is managing the user's own shell configuration.

Standards mapping

OWASP ASI ASI10

CWE CWE-506

Prevalence

criticalsecurity

Pattern SD-013 was detected in 224 of 16475 public skills scanned as of 11 September 2026.

current ruleset 2414c32f04000b5d

Check your own skills

Scan a repository or a single skill against this rule and the rest of the catalogue, free.