creative-health — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited creative-health (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
Script location. If your host does not set${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin'sscripts/folder, next toskills/. Run them with Python 3.10 or newer:python, orpython3wherepythonis not found (macOS, many Linux systems).
Monitor creative health across all active advertising. Score each creative for fatigue risk, predict when fatigue will impact performance, generate refresh recommendations with specific change suggestions, and create A/B test plans for fatiguing creatives. Creative fatigue is one of the fastest ways to waste ad spend — a high-performing ad that ran too long silently bleeds money as CTR drops, CPM rises, and engagement fades. This command catches fatigue before it costs you, tells you exactly what to change, and gives you a structured test plan to validate the refresh. It covers the full creative lifecycle from launch through maturity to decline, so you always know which creatives are earning their spend and which need attention.
The user must provide (or will be prompted for):
~/.claude-marketing/brands/_active-brand.json for the active slug, then load ~/.claude-marketing/brands/{slug}/profile.json. Apply brand creative guidelines, historical creative performance benchmarks, known fatigue patterns from past campaigns, and production capacity constraints. Also check for guidelines at ~/.claude-marketing/brands/{slug}/guidelines/_manifest.json — if present, load visual identity restrictions and messaging guardrails that constrain refresh options. Check for agency SOPs at ~/.claude-marketing/sops/. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with industry defaults.creative-fatigue-predictor.py with the performance data for each creative. The scoring model evaluates five fatigue signals — CTR ratio (current vs baseline, weighted 30%), CPM ratio (current vs baseline, weighted 20%), engagement ratio (current vs baseline, weighted 20%), frequency or impression saturation (weighted 20%), and time running relative to channel norms (weighted 10%). Each creative receives a health score from 0-100 where 100 is peak health and 0 is fully fatigued, plus a risk-level classification: Healthy (75-100), Watch (50-74), Fatiguing (25-49), or Critical (0-24). python "${CLAUDE_PLUGIN_ROOT}/scripts/creative-fatigue-predictor.py" --action predict-fatigue --creative-id {id} --performance-history '[{"date":"2026-01-01","ctr":0.025,"cpm":9.0},{"date":"2026-01-08","ctr":0.022,"cpm":9.6},{"date":"2026-01-15","ctr":0.019,"cpm":10.4}]'Give at least 3 rows, one per date, in any order. date is YYYY-MM-DD (an ISO timestamp's date part is used), ctr is required and cpm is optional: leave it out for email or for search bought on CPC, and the forecast uses CTR alone (signals_used says which signals it used). The script fits a straight-line trend over calendar days and reports days_remaining from the latest row to the first threshold crossing (CTR 30% below, or CPM 30% above, the earliest row). 0 means a threshold is already crossed; null means the trend never crosses it, which is not proof the creative is healthy. confidence is a label from the number of rows, not a statistical range. Adjust the reading for audience size (smaller audiences fatigue faster), frequency and channel dynamics (social fatigues faster than search) as stated judgment, separate from the script's number. Without a dated history, report the health score only and say that no timeline was projected.
A creative health report containing:
days_remaining and predicted date, the signals it used, its sample-count confidence label, and, as your judgment, the primary driver of projected fatigue (frequency saturation, audience exhaustion, or creative wear-out)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.