From linux-av-manager
Set up periodic AV scans on a Linux desktop using systemd timers (preferred) or cron. Schedules definition updates plus scans (ClamAV, rkhunter, Lynis) at user-chosen cadences (e.g. daily definitions refresh, weekly quick scan, monthly deep scan). Wires desktop notifications on findings via notify-send / libnotify. Triggers on "schedule scans", "set up periodic AV", "automate clamav".
npx claudepluginhub danielrosehill/claude-code-plugins --plugin linux-av-managerThis skill uses the workspace's default tool permissions.
Create systemd timer units (or cron jobs) that run `update-definitions` and `scan` at a user-chosen cadence. Notify on findings.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Create systemd timer units (or cron jobs) that run update-definitions and scan at a user-chosen cadence. Notify on findings.
${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/linux-av-manager/config.json
Persist the chosen schedule in config.json under schedule:
"schedule": {
"definitions_update": "daily",
"quick_scan": "weekly",
"deep_scan": "monthly",
"notify": true
}
Default to systemd timers — robust, handles missed runs (Persistent=true), integrates with journalctl. Fall back to cron only if the host isn't running systemd.
Create three timer + service unit pairs under /etc/systemd/system/:
linux-av-manager-definitions.{service,timer} — runs the equivalent of the update-definitions skill via a small shell wrapper.linux-av-manager-quick-scan.{service,timer} — quick scan (~ only, ClamAV + rkhunter).linux-av-manager-deep-scan.{service,timer} — deep scan (full FS, all installed scanners).Each service writes its report to the configured scans_dir and, if notify == true and a finding is non-clean, calls notify-send as the desktop user (use loginctl show-user / XDG_RUNTIME_DIR to send a notification from a system-scope unit, or install timers as user units under ~/.config/systemd/user/ and use systemctl --user enable --now).
For the desktop-notification path, prefer user-scope units — they run as the user already, so notify-send works without extra plumbing. Recommend this path; only use system-scope when the user explicitly wants root-owned timers.
Place small wrapper scripts under ${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/linux-av-manager/bin/:
run-update.sh — invokes the same commands as update-definitions.run-quick-scan.sh — invokes clamdscan ~ + rkhunter --check --rwo and writes to <scans_dir>/clamav/ and <scans_dir>/rkhunter/.run-deep-scan.sh — full-FS variant; warns in the report header about expected runtime.Each wrapper ends with: if the report contains findings, call notify-send -u critical "Linux AV Manager" "Findings in <tool> — see <path>".
| Cadence | systemd OnCalendar |
|---|---|
| daily | daily |
| weekly | weekly (Mon 00:00) |
| monthly | monthly (first of month) |
| custom | accept a literal OnCalendar spec from the user |
Always set Persistent=true so missed runs (laptop asleep) catch up on next boot.
systemctl daemon-reload (or --user), then enable --now each timer.systemctl list-timers | grep linux-av-manager.config.json schedule block.If systemd isn't available, drop the same wrappers and add /etc/cron.d/linux-av-manager:
0 3 * * * root /path/to/run-update.sh
0 4 * * 1 root /path/to/run-quick-scan.sh
0 5 1 * * root /path/to/run-deep-scan.sh
Notifications won't reach the desktop from cron without extra plumbing — surface that limitation.
systemctl disable --now linux-av-manager-*.timer.