From mac-security-suite
On-demand malware triage of a specific file, app bundle, or directory — NOT a resident scanner. Layers ClamAV (signatures), YARA (IOC/family rules), capability analysis (entitlements + frameworks + imported symbols for Mach-O; capa for PE/ELF), and VirusTotal (cloud reputation) into one verdict. Read-only. Invoke with /mac-security:malware-triage <path>. Trigger phrases: "scan this file", "is this safe", "check this download", "triage this binary", "what does this app do", "virustotal this", "scan my downloads".
How this skill is triggered — by the user, by Claude, or both
Slash command
/mac-security-suite:malware-triageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Deliberately **on-demand, not resident** — the community consensus is that resident
Deliberately on-demand, not resident — the community consensus is that resident third-party AV on macOS adds privileged attack surface for little gain. This skill is for triaging a specific suspect: a download, an unsigned binary, an app you don't recognize, or files you're relaying to Windows users.
bash ${CLAUDE_PLUGIN_ROOT}/bin/install-tools.sh # confirms clamav, yara, capa, vt
freshclam # update ClamAV signatures (first run)
vt init # store free VirusTotal key (one-time)
bash ${CLAUDE_PLUGIN_ROOT}/skills/malware-triage/scripts/triage.sh <path> [yara_rules_dir]
Runs all layers below against one target, static-only (never executes it). Or run the individual commands for finer control.
codesign -dvvv --verbose=4 "$TARGET" 2>&1
spctl -a -vv "$TARGET" 2>&1 # Gatekeeper assessment
xattr -l "$TARGET" # quarantine / provenance
Unsigned + quarantined + unknown developer = elevate scrutiny.shasum -a 256 "$TARGET"
vt file <sha256> --format json # VirusTotal detection ratio
clamscan -r -i "$TARGET" # exit 0 clean / 1 found / 2 error
yara -r "$RULES_DIR" "$TARGET"
triage.sh picks the path:
codesign -d --entitlements - "$TARGET" # declared capabilities
otool -L "$TARGET" # linked frameworks (AVFoundation, IOKit…)
nm -u "$TARGET" # imported symbols vs watchlist (CGEventTap, AVCapture, task_for_pid…)
Caveat: dlsym-based dynamic lookup hides imports — absence of watchlist symbols ≠ absence of capability.capa -j "$TARGET" # ATT&CK-mapped: persistence, networking, injection
Synthesize into one call: clean / suspicious / malicious, with the evidence per layer. State confidence. A clean signature scan does NOT mean safe (signatures miss fresh infostealers like AMOS/Atomic Stealer) — weight VT reputation + capa capabilities + provenance (where did this file come from) over ClamAV alone.
capa and friends parse, they
don't run the binary.vt scan file (which uploads the
file itself) on anything containing secrets or confidential data — hash lookup only.bash ${CLAUDE_PLUGIN_ROOT}/bin/get-yara-rules.sh fetches Elastic's
maintained macOS rule set to ~/.mac-security-suite/yara-rules/elastic-macos —
triage.sh's default rules dir. Re-run to refresh.Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub ejkaz/claude-mac-security --plugin mac-security-suite