Claude Skills

12 Investigation Loops for Performance Marketers

Claude Fable 5.1 came out on 1 September 2026, and it will name a cause for a performance drop in under a minute. Ask again on the same export and you can get a different cause, stated with the same confidence. These 12 skills are loops with a stop condition, and every one of them ends in a verdict that includes the option to say it does not know yet.

MD Marek Dąbrowski · September 11, 2026

Key takeaways

  • A loop is not a checklist. It names five parts before a single step: what it reads, the work it repeats, the bar that work has to clear, how it checks its own answer, and the condition that ends it.
  • Every one of the 12 loops ends in exactly one of three verdicts: action, needs_data or approval. A third verdict is what stops a model from naming a cause it cannot support.
  • needs_data only counts when it names the gap by source: which export, from which panel, over which period. "Insufficient data" is a shrug, not a verdict.
  • Every output also carries a stop condition and a list of what the loop could not see, because a finding that hides its own edges is worse than one that states them.
  • An empty result and a failed read look identical on a screen. One loop exists purely to separate them, and every other loop defers to it before stating that something does not exist.

Why loops, and why now

Claude Fable 5.1 was released on 1 September 2026 and runs as claude-fable-5-1 on the Claude API, Amazon Web Services, Google Cloud and Microsoft Foundry. It is better at ambiguous work than the model before it, which changes what is worth building on top of it. A model that reasons well through a messy account still answers whatever question you asked, in one pass, and stops where the prose stopped.

That single pass is the problem in a paid media account. Google Ads reports one conversion total, GA4 reports another, and the export that would settle it covers a window that ends before the change you are investigating. A single pass reads what it was given and names a cause. A loop reads what it was given, states what is missing, and refuses to name a cause until the missing piece arrives or the question changes.

So this pack is written the other way round from a prompt library. Each skill starts from a symptom, repeats work against a bar, checks itself, and ends on a stated condition. Run any one of them once, top to bottom, with no repeat and no stop condition, and if that single pass is indistinguishable from the finished skill, it was never a loop.

AdLume

New version of AdLume launching soon

Join the waitlist and get notified when the new AdLume is ready. It catches wasted ad spend automatically and optimises campaigns around the clock.

One email, on the day access opens. Nothing else, and you can leave the list with one click.

What is in the pack

Twelve loops, in four families. Each one is a markdown file with required inputs, the loop itself, decision rules with labelled thresholds, an output format, a worked example and guardrails.

An agent that will not say what happened

  • Agent Blocked Investigation. Starts from an agent that stopped mid-task with a short refusal or with silence, and separates a policy stop from a broken input.
  • Safety Versus Capability Split. Resolves the two-way tie between a refusal that is a rule and a refusal that is a missing ability.
  • Empty Versus Failed Read. Takes a blank query, export or tool call and decides whether it is an absence or a read that failed.

Sources of measurement that disagree

  • Measurement Contradiction. Two systems report different totals for the same metric, and the loop ranks the explanations instead of picking the convenient one.
  • Duplicate Conversion Check. Runs when the same transaction, order or event id looks recorded more than once. Ships with a script, because a model should not eyeball order ids.
  • Attribution Window Contradiction. Tests whether a gap between two systems is a real difference or two different windows being compared. Also script-backed.

A result that suddenly looks worse

  • Performance Drop Investigation. Works through the stages a drop has to survive before anything gets called its cause.
  • Spend Without Result. Handles a segment with real spend and a zero in the conversion column, where the zero itself is the first thing to verify.
  • Lead Quality Collapse. Runs when the disqualification rate jumped while cost per lead still looks fine.
  • Change Log Correlation. Sits between a confirmed anomaly and a logged change, and stops proximity from being read as cause.

Turning a finding into a move

  • Minimal Reversible Move. Takes a confirmed cause and cuts the proposed fix down to the smallest change that can be undone.
  • Verdict And Stop Condition. Checks a finished loop's output against the pack's own contract before anyone acts on it.

Three verdicts, and why the third one matters

Every loop ends in exactly one of three words, defined once in a shared reference file and cited by every skill rather than restated.

action means a cause, the evidence behind it, and a minimal reversible move to make. approval means the cause is known but the move crosses a line the pack does not cross on its own: money, customer data, publication, or anything not cleanly reversible. needs_data means the cause cannot be named yet, and it is only a valid verdict when it names the missing input by source.

Two verdicts force a model to have an opinion. Given a partial export and a real question, it produces one, and it sounds exactly as confident as it does when it is right. A third verdict is what makes the other two worth reading.

Done for you

Rather have it run for you?

AdLume watches your ad accounts and brings the next fix to your team's tools.

One email, on the day access opens. Nothing else, and you can leave the list with one click.

What these loops refuse to do

They do not log in, publish, pause or move a budget. An action verdict names the move. A person runs it.

They do not turn a blank result into a stated absence. Empty Versus Failed Read runs first, and every loop that reads a system defers to it before saying you do not have something.

They do not name a cause on one artifact. A single-source finding is capped at needs_data by the pack's own evidence rule, however convincing it looks.

They do not carry benchmark claims. No number in this pack says how much faster or more accurate anything is, because we have not measured that.

How thresholds work

Every number lives in exactly one file and is cited by key, so a threshold cannot drift between two skills that both depend on it. Each entry is tagged heuristic, which means a practitioner starting point to recalibrate against your own account history, or platform guidance, which means a platform states it in its own documentation. All seven thresholds in this pack are heuristics, and they say so rather than dressing themselves up as more certain than they are.

If your data cannot reach the model

These loops read exports, panel screenshots and change logs, so they work with a copy-paste. If you would rather the account data arrived on its own, the connector path is already written up: connecting Claude to Google Ads and Meta Ads with MCP. For the screen-only checks that no export contains, the browser pack is a sibling to this one: 12 browser operator skills.

How to install

The pack is on GitHub under an MIT licence. Clone it and copy the loop folders into your skills directory, either inside a project or at user level.

Get all 12 investigation loop skills on GitHub ->

bash
git clone https://github.com/mardab96/fable-investigation-loops.git
mkdir -p ~/.claude/skills
cp -r fable-investigation-loops/*-fable \
      fable-investigation-loops/references \
      fable-investigation-loops/scripts \
      fable-investigation-loops/examples \
      fable-investigation-loops/AGENTS.md \
      ~/.claude/skills/

Note the glob has no trailing slash. A trailing slash on a recursive copy of directories collapses every skill file into one on macOS. The references folder is not optional: it holds every threshold the loops cite and the verdict definitions they all quote. Scripts holds the two deterministic helpers and a self-test that checks them. If you run something other than Claude Code, the files are plain markdown, so paste the relevant one into your agent along with the export.

FAQ

Do I need Claude Fable 5.1 to use these?

No. All 12 loops are markdown files, so any capable agent can run one. The pack is written for Fable 5.1 because a loop that ranks explanations and checks its own answer leans on judgement about ambiguous inputs, and that is the published strength of this release.

What makes a loop different from a checklist?

A stop condition. A checklist ends when the list ends. A loop states what "done" means before it starts, repeats its work against a bar, and checks the second pass against the first. Run it once with no repeat and no stop condition, and if nothing is lost, it was a checklist.

Can these skills change something in my ad account?

No. They read exports, screenshots and change logs, and they hand back a verdict. Any move lives in the verdict text and a person runs it.

Why does needs_data exist as its own verdict?

Because a model asked to choose between acting and asking for approval will always produce one of the two, including when the input cannot support either. needs_data names the missing export, the panel it comes from and the period it has to cover, so the gap becomes a task instead of a guess.

Are the numbers in the pack official platform limits?

No. All seven thresholds are labelled heuristics, which means a starting point to recalibrate against your own account, and each one lives in a single file that every skill cites by key.

Keep reading

AdLume

New version of AdLume launching soon

Join the waitlist and get notified when the new AdLume is ready. It catches wasted ad spend automatically and optimises campaigns around the clock.

One email, on the day access opens. Nothing else, and you can leave the list with one click.