treadmill — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited treadmill (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Run a command on a recurring interval using a background shell loop. Portable across all agent harnesses.
The bundled treadmill script handles start/stop/status. Set it up from the skill directory:
SKILL_DIR="$(cd "$(dirname "$0")" && pwd)"
export PATH="${SKILL_DIR}/scripts:$PATH"Or reference it directly: bash ${CLAUDE_SKILL_DIR}/scripts/treadmill
treadmill start <interval> <command...>Interval formats: 30s, 5m, 1h, or plain seconds (e.g. 300).
Examples:
# Check research status every 5 minutes
treadmill start 5m python .research/experiments/00-baseline/modal_app.py
# Poll a deployment
treadmill start 2m curl -s https://api.example.com/health
# Run a script every hour
treadmill start 1h python check_metrics.pytreadmill stoptreadmill statustreadmill log # last 30 lines
treadmill log 100 # last 100 linesTreadmill keeps its state in .treadmill/ in the current directory:
pid — PID of the background loopconfig — interval, command, start timelog — stdout/stderr from each runFor overnight ML research, start a treadmill that re-runs the labrat state-advance worker rather than a passive status printer:
# Reconcile state every 5 minutes
treadmill start 5m python /path/to/labrat/scripts/research-advanceUse research-status only for human-readable inspection. Use research-advance for automation, because it updates .research/state.json when artifacts appear.
If the harness is Codex, prefer the supervisor wrapper instead:
# Reconcile state, then wake Codex when the session is actionable
treadmill start 5m python /path/to/labrat/scripts/research-superviseThat wrapper gives you the missing /loop behavior: the background loop notices finished artifacts, updates .research/state.json, and only then starts a fresh non-interactive Codex run to do the next research step.
The agent can read treadmill logs to see what happened between invocations.
Some agent tools (like Claude Code) have a built-in /loop command. Use that when available. Use /treadmill when:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.