Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add EmpiricaAI/empirica --skill services-audit-crongit clone --depth 1 https://github.com/EmpiricaAI/empiricaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/empiricaai/empirica/services-audit-cron)<a href="https://agentmods.dev/skills/empiricaai/empirica/services-audit-cron"><img src="https://agentmods.dev/badge/skills/empiricaai/empirica/services-audit-cron/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/empiricaai/empirica/services-audit-cron"><img src="https://agentmods.dev/badge/skills/empiricaai/empirica/services-audit-cron.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Rogue Agent · line 72 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00126 | $0.01767 |
| Opus 5 | $0.00063 | $0.00883 |
| Sonnet 5 | $0.00025 | $0.00353 |
| Haiku 4.5 | $0.00013 | $0.00177 |
Grade A, and why
services-audit-cron scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 185 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Services-audit cron loop wiring
The Phase 3 services-audit loop runs empirica services-audit on a
biweekly cadence, captures novelty between runs, and notifies the
operator when something new is running.
This skill is a thin wrapper over /loop-cron — same self-scheduling
template, with services-audit plugged in as the body.
When to Use
Register the canonical biweekly services-audit cron when:
- You've just shipped Phase 1 + Phase 2 of the scanner (one-shot scan + auditor skill) and want the audit to run unattended on a schedule
- You want novelty notifications (new processes, new listening ports, new MCP servers) without remembering to scan manually
- You want a durable audit trail in
~/.empirica/scan_history_<project_id>.jsonl
If you only want a one-shot audit, run empirica services-audit
directly — no loop needed.
Cron Prompt Template
When invoking /loop in cron mode, prepend these CLI lines to your
task prompt. The body itself is one command — the rest is registry
wiring.
At start (idempotent — safe to call every fire):
empirica loop register --name services-audit --kind cron \
--cron "0 6 1,15 * *" \
--description "Biweekly AI services audit (scan + diff + notify on novelty)" \
--backoff none
Check pause — exit silently AND don't schedule next fire if paused:
PAUSED=$(empirica loop status services-audit --output json | jq -r .paused)
if [ "$PAUSED" = "true" ]; then
empirica loop heartbeat services-audit --status ok --result paused \
--message "skipped, paused"
exit 0 # CRITICAL: exit without scheduling next; loop is genuinely off
fi
Run the audit body — single command, returns structured JSON.
The .result field is shaped to feed straight into heartbeat:
AUDIT=$(empirica services-audit --output json)
RESULT=$(echo "$AUDIT" | jq -r .result) # found | empty | fail
SCAN_ID=$(echo "$AUDIT" | jq -r .scan_id)
PROC_NEW=$(echo "$AUDIT" | jq -r '.novelty.processes_added | length')
PORT_NEW=$(echo "$AUDIT" | jq -r '.novelty.listeners_added | length')
SUMMARY="scan ${SCAN_ID:0:8} → $RESULT (+$PROC_NEW procs, +$PORT_NEW listeners)"
empirica loop heartbeat services-audit --status ok --result $RESULT \
--message "$SUMMARY"
Schedule + install the next fire:
NEXT_CRON=$(empirica loop schedule-next services-audit --output json | jq -r .cron_one_shot)
# CronCreate(cron=$NEXT_CRON, recurring=false, prompt='<this whole template again>')
# Heartbeat back the scheduler-returned job_id so pause can cancel:
empirica loop heartbeat services-audit --status ok --result $RESULT \
--next-scheduled-job-id "$JOB_ID" --scheduler-kind cron-create
On failure (collect_snapshot threw, scan dir unwritable, etc.):
empirica loop heartbeat services-audit --status fail --result fail \
--message "{error message}"
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 185 lines · 126 tokens per session scan A c9c3861944c8
services-audit-cron is a skill published in the GitHub repository EmpiricaAI/empirica (246 stars, last pushed today), licensed MIT. It adds 126 tokens to every session and 1,767 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
workflow-builder
Design, build, and maintain autonomous OpenClaw workflows (stewards). Use when creating new workflow agents, improving existing ones, evaluating automation opportunities, or debugging workflow reliability. Triggers on "build a workflow", "create a steward", "automate this process", "workflow audit", "what should I…
smart-delegation
Intelligent task delegation — route to think with deep reasoning for hard problems, or Grok for unfiltered takes. Teaches when to escalate, how to pack context into sub-agent spawns, and how to communicate delays transparently. Default: handle directly on chat (thinking off). Escalate only when the quality gain…
review
A pause before an artifact goes into the world. Reviews external comms, money, calendar, public posts, or send-as-operator actions through a small panel of independent lenses (empathy first) and returns a verdict of pass / edit / hold / block.
claude-code
Route real repo work to Claude Code instead of editing by hand. Triggers on "claude code" or "cc", and on any request to edit, fix, refactor, or open a PR in a repo outside /.openclaw/workspace. Claude Code picks up the repo's CLAUDE.md / AGENTS.md, applies its standards, and knows the /ai-coding-config:multi-review…
cortex
Personal knowledge compiler and memory system. Ingests raw sources (documents, notes, transcripts, captures) into a structured, interlinked knowledge base. Maintains living entity pages, learning analysis, and the MEMORY.md routing table. Replaces the librarian skill.
drive-to-done
Drive a task all the way to a verified done state — write DoD first, verify each item with evidence, stop only at named stop conditions.