Creative Health logo

Creative Health

Community
indranilbanerjee
creative-health

Score ad creative fatigue against baseline, predict days left, brief refreshes. "are our ads fatiguing"

Overview

Publisherindranilbanerjee
Repositorydigital-marketing-pro
Skill namecreative-health
Stars
866
Forks
138
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by indranilbanerjee on GitHub. Read the source before you install it.

Installation

Install the Creative Health AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/indranilbanerjee/digital-marketing-pro/tree/main/skills/creative-health
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/indranilbanerjee/digital-marketing-pro.git /tmp/digital-marketing-pro
mkdir -p .claude/skills
cp -r /tmp/digital-marketing-pro/skills/creative-health .claude/skills/creative-health
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Creative Health in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Creative Health on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Creative Health is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

/digital-marketing-pro:creative-health

Script location. If your host does not set ${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin's scripts/ folder, next to skills/. Run them with Python 3.10 or newer: python, or python3 where python is not found (macOS, many Linux systems).

Purpose

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.

Input Required

The user must provide (or will be prompted for):

  • Active creatives with performance data: A list of currently running creatives, each with: creative ID or name, channel (paid social, display, search, email, video), current performance metrics (impressions served, frequency or average times shown per user, current CTR, current CPM or CPC, current engagement rate), baseline metrics from the creative's first 7-14 days (baseline CTR, baseline CPM, baseline engagement rate), days running since launch, audience size the creative is serving, and current daily or weekly spend. Can be provided as exported data or pulled from connected ad platform MCPs
  • Channel context: Which advertising channels the creatives run on — Meta Ads, Google Ads, TikTok Ads, LinkedIn Ads, display networks, programmatic, or email. Each channel has different fatigue dynamics (social fatigues faster than search, video fatigues differently than static)
  • Refresh constraints (optional): Any constraints on creative refreshes — brand guidelines that limit visual changes, approval processes that add lead time, production capacity (how many new creatives can be produced per week), or budget for creative production. These constraints shape the refresh recommendations to be actionable within real-world limits
  • Performance thresholds (optional): Brand-specific thresholds for when a creative is considered "fatigued" — e.g., "CTR drops 30% from baseline" or "CPM increases 25% from baseline." If not provided, industry-standard thresholds are applied per channel

Process

  1. Load brand context: Read ~/.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.
  2. Score each creative's health: Execute 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).
  3. Predict fatigue timeline: For each creative not yet at Critical risk that has a dated daily or weekly history, run:
    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.
  4. Generate refresh briefs for fatiguing creatives: For each creative at Fatiguing or Critical risk, produce a specific refresh brief — what to keep (elements that drove initial performance: hook, value proposition, social proof, CTA that still resonates), what to change (elements contributing to fatigue: visual treatment, headline angle, color scheme, format, opening hook for video), and what to test (new angles or approaches worth experimenting with based on competitor creative trends and brand positioning). Ensure all refresh suggestions comply with brand guidelines.
  5. Create A/B test plan for each creative needing refresh: For each refresh brief, generate a structured A/B test plan — control (current creative), variant(s) with the recommended changes, hypothesis for why the variant should outperform, primary metric to evaluate (CTR, CPC, conversion rate depending on campaign objective), minimum sample size for statistical significance, expected test duration, and decision criteria for declaring a winner. Include a test naming convention for organized tracking.
  6. Prioritize by spend and impact: Rank all creatives needing attention by the combination of daily spend (higher spend = more waste if fatigued) and fatigue severity (more fatigued = more urgency). Creatives burning large budgets while deeply fatigued rank highest. Calculate the estimated spend waste — the incremental cost of running a fatigued creative versus a fresh one at baseline performance — to quantify the cost of inaction.

Output

A creative health report containing:

  • Creative health dashboard: All active creatives scored and classified — showing creative name or ID, channel, health score (0-100), risk level (Healthy/Watch/Fatiguing/Critical), key metrics versus baseline (CTR ratio, CPM ratio, engagement ratio), frequency, days running, and daily spend
  • Fatigue predictions: For each non-critical creative with a dated history, the script's 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)
  • Refresh priority list: Creatives ranked by urgency — combining fatigue severity with spend level to show which refreshes will save the most budget, with estimated daily spend waste for each fatigued creative
  • Refresh briefs per creative: Specific, actionable refresh recommendations for each fatiguing or fatigued creative — what to keep, what to change, what to test, and why, all within brand guidelines and production constraints
  • A/B test plans: Structured test plans for each creative refresh — control and variant definitions, hypothesis, primary metric, sample size requirement, test duration estimate, and success criteria with statistical confidence threshold
  • Creative lifecycle timeline: A timeline view showing when each active creative was launched, its current lifecycle stage, and projected transition dates — enabling proactive production planning so fresh creatives are ready before current ones fatigue out
  • Estimated performance recovery: Projected improvement in CTR, CPM, and engagement if fatigued creatives are refreshed — quantifying the expected return on creative production investment

Agents Used

  • content-creator — Creative refresh ideation including new visual angles, headline variations, hook alternatives, and format experiments grounded in brand voice and positioning, refresh brief generation with specific keep/change/test recommendations, and A/B test variant design with clear hypotheses tied to fatigue diagnosis
  • media-buyer — Performance analysis across channels with fatigue-adjusted benchmarking, spend waste calculation for fatigued creatives, budget impact prioritization ranking refreshes by cost of inaction, and channel-specific fatigue threshold calibration based on platform dynamics and audience behavior
  • performance-monitor-agent — Fatigue signal detection from performance metric trends, health score calculation using weighted multi-signal composite model, fatigue timeline projection based on decay rate analysis, and creative lifecycle stage classification with transition monitoring

Frequently asked questions

What does the Creative Health AI skill do?

Score ad creative fatigue against baseline, predict days left, brief refreshes. "are our ads fatiguing"

Why use Creative Health on TypingMind?

Because you install it once and use it with any model. Creative Health is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Creative Health in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/indranilbanerjee/digital-marketing-pro/tree/main/skills/creative-health. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Creative Health?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Creative Health?

As many as you like. As long as a model supports skills, you can use Creative Health with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Creative Health AI skill free?

Yes. It is published on GitHub by indranilbanerjee under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇