Intervals, stop conditions, and Skill chains. The cadences below use each Skill's stated guidance where it gives one. Where it does not, the reasoning is written out.
A note if you came from the LinkedIn post. Some loops moved between the post and this guide. Reading what each Skill actually needs showed that three loops collapsed into one orchestrator, one check could not be automated honestly, and several intervals needed to change. The set below reflects what can run, rather than what listed well.
Read this before you build anything
Three things can save a wasted weekend.
The cadences follow the Skills. performance-max-auditor and competitive-ads-extractor each state monthly re-runs. cross-platform-attribution-auditor audits configuration, so quarterly makes more sense. Running them faster spends tokens on the same data and often returns the same answer.
One loop does the work of three. google-ads-weekly-audit is an orchestrator. It chains a performance diagnostic, search terms analysis, negative keyword mining, and ad copy review across four phases. Running those separately means analysing one export three times.
One important check cannot be a loop. Server-side tracking validation needs a person to fire test events and read debug tools. It is included as a scheduled checklist because pretending otherwise would mean trusting a check that never ran.
How /loop works
/loop takes an interval and a prompt, then re-runs that prompt while the session remains available:
/loop 5m check my PR, address review comments, and fix failing CI
Two constraints:
/loopruns on your machine. Close the session and it stops firing. Recurring tasks expire after seven days, although an unexpired task can return when you resume the session. Use/schedulefor a cloud routine that needs to run while your machine is off.- Match the interval to the change rate. Running a check more often than the underlying data moves burns tokens and returns no new signal.
For work with a clean finish line, use /goal with an explicit completion condition so a separate evaluator checks whether the condition holds. If you run Claude Code non-interactively and need a hard guard, --max-turns is a separate print-mode option.
Autonomy levels
READ - the loop only observes and reports. These can run unattended when their data access is already configured.
PROPOSE - the loop prepares a recommendation for spend, targeting, or creative, then stops for approval.
Eight of the ten only read. Two propose and stop. Nothing here writes to a live ad account. Unattended write access to live ad spend is a poor trade at any level of confidence.
Prerequisites
Several loops fail rather than degrade when these inputs are missing. Check them before turning anything on.
| Requirement | Needed by | What happens without it |
|---|---|---|
| 30+ days of daily data in the export | Loops 1, 5, 7 | No baseline to detect against. Audits refuse to score. |
| 20+ conversions in the period | Loop 7 | The PMax audit lacks statistical confidence. |
| Browser or fetch access | Loops 8, 9 | The Skills cannot reach ad libraries or read the live page. |
brand-profile.json from brand-dna-extractor | Loop 6 | The concept generator returns a list of missing inputs. |
| An image-generation MCP or API | Loop 6 | The image step stops and offers prompts to run elsewhere. |
Two Skills reference files under /mnt/skills/user/, a Cowork path convention. If meta-ads-creative-analyzer or negative-keyword-miner behaves oddly in Claude Code, check that path first.
The ten at a glance
| # | Loop | Interval | Level | Primary Skill |
|---|---|---|---|---|
| 1 | Spend anomaly watch | 24h | READ | data-anomaly-detective |
| 2 | Test significance check | 24h | READ | ab-test-analyzer |
| 3 | Creative fatigue watch | 3d | READ | meta-ads-creative-analyzer |
| 4 | Weekly ads audit | 7d | PROPOSE | google-ads-weekly-audit |
| 5 | Meta structural audit | 14d | READ | meta-ads-andromeda-auditor |
| 6 | Creative refresh | 14d | PROPOSE | ad-test-results-analyzer |
| 7 | PMax visibility | 30d | READ | performance-max-auditor |
| 8 | Competitor watch | 30d | READ | competitive-ads-extractor |
| 9 | Landing page audit | 30d | READ | landing-page-optimizer |
| 10 | Attribution health | 90d | READ | cross-platform-attribution-auditor |
1. Spend anomaly watch
Interval: 24h. Level: READ. Skill: data-anomaly-detective
Why daily: spend anomalies compound. A budget bug found on day 6 has already cost six days.
Data requirement: at least 30 days of daily data. Point it at a rolling export, not today's file.
/loop 24h Read the rolling 30-day spend and CPA export in ./exports/.
Invoke data-anomaly-detective. Flag any metric more than 2 standard
deviations from its 30 day baseline, accounting for day-of-week
seasonality. If nothing breaks that threshold, reply "clean" and
nothing else. If something does, give me the metric, the campaign,
the size of the deviation, and your root cause hypothesis.
Stop condition: one report per run.
Where it breaks: a tight threshold produces daily noise, which trains you to stop reading. Start at 2 standard deviations and loosen.
2. Test significance check
Interval: 24h. Level: READ. Skill: ab-test-analyzer
Why daily: so you learn when a test reaches its planned decision point, rather than the Thursday you happened to look.
/loop 24h For every running test in ./tests/, invoke ab-test-analyzer.
Report only tests that reached significance or exceeded their planned
duration without reaching it. Say nothing about tests still legitimately
running. For any that crossed: winner, effect size with Cohen's
classification, confidence interval, SRM check result, and whether the
effect is large enough to be worth acting on.
Stop condition: natural. Ends when each test resolves.
Where it breaks: peeking bias. Daily checks invite stopping the moment a test crosses, which inflates false positives. Set the planned duration first and let the loop report when that point is reached. The Skill runs its own sample-size adequacy check, so do not override a preliminary flag because the p-value looks good.
3. Creative fatigue watch
Interval: 3d. Level: READ. Skill: meta-ads-creative-analyzer
Why every 3 days: fatigue develops over days, and this catches decay with time left to act.
The thresholds below are the Skill's severity bands.
/loop 3d Pull the current creative performance export.
Invoke meta-ads-creative-analyzer. Report fatigue signals only, using
your own severity bands:
- Early warning: CTR down 10-20% week-over-week, frequency 2-3
- Active fatigue: CTR down 20-40%, frequency 3-4
- Severe: CTR down over 40%, frequency above 4
Name the ads at each level. Do not brief replacements, loop 6 does that.
If an ad never performed above benchmark, say so rather than calling it
fatigued.
Stop condition: one report per run.
Where it breaks: confusing fatigue with a weak ad. The Skill needs the ad's own early-week baseline to tell them apart.
4. Weekly ads audit
Interval: 7d. Level: PROPOSE. Skills: google-ads-weekly-audit then ad-audit-report-builder
This one loop replaces three. google-ads-weekly-audit already chains a performance diagnostic, search-terms-analyzer, negative-keyword-miner, and google-ads-copy-generator across four phases. Running those separately means analysing one export three times and reconciling two negative lists.
Data requirement: search terms report plus campaign performance report, with at least 7 days of data.
/loop 7d Invoke google-ads-weekly-audit across the account using the
exports in ./exports/. Run all four phases: performance diagnostic,
search terms analysis, negative keyword mining, ad copy review.
Then invoke ad-audit-report-builder on the output to produce the PDF
with health score gauge, issues by severity, and the quick wins table.
Save to ./reports/ with the date in the filename.
Lead the executive summary with what changed against last week.
Keep the action plan to 5 items.
Stop before applying anything. The Tier 1 negative list needs my approval.
Stop condition: PDF written to disk, with the negative list awaiting approval.
Where it breaks: the two Skills inside disagree on negative match type. search-terms-analyzer says start with phrase match. negative-keyword-miner says exact to avoid over-blocking. Pick one convention and state it in the prompt. Exact is the safer default for the first month.
5. Meta structural audit
Interval: 14d. Level: READ. Skill: meta-ads-andromeda-auditor
Loop 7 audits your Google structure. This is its Meta counterpart, checking alignment with Andromeda, Meta's ad retrieval system, across eight dimensions: structure, creative diversity, signal quality, audience configuration, budget and learning, bidding, fatigue, and Advantage+ adoption.
Why fortnightly: the Skill says to measure weekly, not daily, and allow 5 to 7 days of learning before adjusting. A full structural audit on a 30 to 90 day window does not change much week to week, so 14 days respects the learning period without re-reading the same data.
Data requirement: a Meta Ads Manager export covering 30 to 90 days at campaign, ad set, and ad level.
/loop 14d Invoke meta-ads-andromeda-auditor on the 90-day Meta export
in ./exports/. Run all 8 dimensions and give me the Andromeda
Readiness Score.
Prioritise these three, since they carry the most weight:
- Creative diversity: am I at 8-15 meaningfully distinct concepts, or
minor variations dressed up as variety
- Structure: audience overlap above 30%, or budget fragmented across
too many ad sets
- Signal quality: CAPI status and Event Match Quality
Report only what changed since the last audit plus anything Critical.
Stop condition: one audit per run.
Where it breaks: creative diversity gets scored as a count instead of genuine variation. The Skill treats a distinct concept as a different message or angle, not a colour or font change. If 12 ads are 3 concepts in 4 colourways, the score should reflect 3.
6. Creative refresh
Interval: 14d. Level: PROPOSE. Skills: ad-test-results-analyzer then ad-campaign-concept-generator then ai-ad-image-generator
Two requirements can stop this loop when missing.
ad-test-results-analyzer needs 10 or more creative variants before it calls a pattern medium-confidence, and 30 or more for high confidence. Six concepts per fortnight sit below that floor, so the prompt analyses a rolling window across cycles rather than the last two weeks alone. From cycle three onward, the sample clears the first threshold.
ad-campaign-concept-generator needs a brand profile, objective, audience, offer, and proof points. It refuses to fill gaps with generic copy. Run brand-dna-extractor once first and keep brand-profile.json in the working directory.
/loop 14d
1. Invoke ad-test-results-analyzer on the rolling creative performance
window in ./creative-history/, not just the last 14 days. Tell me the
variant count and your confidence band before any pattern claims.
Under 10 variants, label everything preliminary.
2. Invoke ad-campaign-concept-generator using ./brand-profile.json plus
the campaign objective, audience and offer in ./brief.md. Brief 6
concepts from elements that cleared significance. Split them 2 close
to the current winner, 2 a moderate departure, 2 that break from it
completely. Include the claims ledger.
3. Stop. Show me the 6 concepts and the compliance flags.
Do not invoke ai-ad-image-generator until I approve the briefs.
Stop condition: waits for approval at the brief stage.
Where it breaks: iterating tightly on one winner makes the ads converge and can burn out the audience. The 2 / 2 / 2 split keeps room for a wider test. The image step also has its own cost gate above roughly $1, so it pauses regardless.
7. PMax visibility
Interval: 30d. Level: READ. Skill: performance-max-auditor
Why monthly, not weekly: the Skill states monthly re-audits in its best practices and quarterly reviews in its tips. It also needs 30 or more days of data plus 20 or more conversions for statistical confidence. A weekly run reads much of the same window.
/loop 30d Invoke performance-max-auditor on the rolling 90-day PMax
export. Run all 7 dimensions.
Check goal setup and conversion quality first. If brand terms are being
counted as PMax conversions, say so before reporting ROAS, because every
downstream number is unreliable until that is resolved.
Then report asset group spread, audience signal strength, bidding and
budget issues, search theme spillover, and landing page barriers.
Stop condition: one audit per run.
Where it breaks: brand contamination makes reported ROAS unreliable. The prompt starts with that check for this reason.
8. Competitor watch
Interval: 30d. Level: READ. Skill: competitive-ads-extractor
Why monthly: the Skill's best practice is to track competitor ads monthly. Ad libraries do not turn over fast enough to justify a shorter interval.
This loop needs browser access. The Skill reaches Facebook and LinkedIn ad libraries and captures screenshots. Without Chrome MCP or an equivalent, it cannot run. Verify access before scheduling.
/loop 30d Invoke competitive-ads-extractor for [competitor list].
Extract 10-15 recent ads per competitor.
Report the delta since the last run only: new creative, retired creative,
changed offers or messaging angles. For anything running more than 14 days,
say what that longevity suggests.
Also flag messaging white space, meaning pain points none of them address.
Stop condition: one delta report per run.
Where it breaks: copying instead of reading. Longevity suggests what works for their offer and audience. It does not prove the same idea will work for yours.
9. Landing page audit
Interval: 30d. Level: READ. Skill: landing-page-optimizer
Most loops in this guide stop at the click. This one covers what happens after it. A 3% landing page conversion rate can waste more budget than a negative keyword list recovers.
Why monthly: pages change when someone changes them. Monthly catches drift, seasonal offer swaps, and speed regressions from new scripts without re-auditing static content weekly.
This needs fetch or browser access to read the live page, plus analytics for the behavioural half.
/loop 30d Invoke landing-page-optimizer on my top 3 landing pages by
ad spend: [URLs].
Run the diagnostic checklist first and report only Critical Issues and
High-Impact Opportunities. Skip medium refinements unless nothing else
surfaces.
Pay attention to:
- Core Web Vitals against the 2.5s LCP and 0.1 CLS targets
- Mobile experience, since most paid traffic lands there
- Message match between the ad promise and the above-fold headline
Compare against last month's run and report only what changed or degraded.
Stop condition: one report per run.
Where it breaks: auditing pages nobody lands on. Rank pages by ad spend, not preference. The Skill analyses the page as rendered, so it will not catch a script that fires only for one user segment.
10. Attribution health
Interval: 90d. Level: READ. Skill: cross-platform-attribution-auditor
Why quarterly: this audits configuration rather than performance: the GA4 attribution model, Consent Mode V2, conversion windows, MMP wiring, and related setup. Those change when someone changes them.
/loop 90d Invoke cross-platform-attribution-auditor.
Score each surface: iOS AdAttributionKit, web GA4 and Ads and CAPI,
Consent Mode V2, server-side stitching, MMP health, cross-device.
Report only what changed since the last audit, plus anything scoring
WARNING or FAIL. Where you lack data to score a section, mark it
"unknown, insufficient data" rather than guessing.
Stop condition: one audit per quarter.
Where it breaks: the Skill asks you to confirm Consent Mode status rather than scoring blind. That is safer, but it means the run is not fully unattended.
The check that cannot be a loop
Server-side tracking validation
Cadence: monthly, manual. Skill: server-side-tracking-auditor
The Skill's core method is to trigger known events and verify they appear in both client-side tools, such as Pixel Helper and Tag Assistant, and server-side tools, such as Events Manager test events and GA4 DebugView. When it cannot reach Events Manager or DebugView, it asks you to run the walkthrough and share the results.
A /loop cannot fire a test purchase or inspect a private Events Manager on its own. Scheduling it would produce a monthly report scored largely as unknown while giving the feeling of coverage.
The practical version: put a monthly calendar block on it, run the six-event walkthrough, then paste the results:
Invoke server-side-tracking-auditor. Here are my test event results:
[paste Pixel Helper output, Events Manager test events, GA4 DebugView]
Score against your thresholds: EMQ, dedup rate, server/client hit ratio,
customer_information completeness, hash convention.
Thresholds worth knowing before the run: EMQ 8.0+ for Purchase, dedup rate 90%+, and server-side hits at 80 to 120% of client-side hits. Below 60% suggests that server-side firing is broken.
This still matters most. Bad conversion data sends the other loops confidently in the wrong direction. This check needs your hands once a month.
Running the set
Order of adoption: run the manual tracking validation first because the other loops trust that data. Then start loop 1 and loop 4. Add the rest after you trust the output.
Cadence map: two daily, one every 3 days, one weekly, two fortnightly, three monthly, and one quarterly. Loops 1 and 2 often fire together. Cluster the three monthly loops on the same day.
Cost: /loop spends tokens on each interval whether or not anything changed. The quiet-run instructions in loops 1, 5, 8, 9, and 10 keep repeat work smaller. Check /usage after the first week and adjust intervals before changing the prompts.
When your machine is off: /loop runs locally. Move work that must survive the weekend to /schedule.
Honest limits
- Eight loops only read. Two propose changes and stop. None write to a live ad account.
- The intervals use the Skill's own stated guidance where available. Where it is not, the reasoning is shown.
- Loops 8 and 9 need browser access. Loop 6 needs a brand profile and an image tool. Without those, they stop.
- The two negative-keyword Skills inside loop 4 disagree on match type. Pick a convention and state it.
- Server-side tracking validation is outside the ten because it cannot be automated honestly. It is still the check worth doing first.
Sources
- Anthropic: Run prompts on a schedule
- Anthropic: Keep Claude working toward a goal
- Anthropic: Automate work with routines
- Anthropic: Claude Code CLI reference
- BuildWire Claude Skills library
Sources last checked: 26 August 2026.
Frequently asked questions
What is the difference between /loop and /schedule in Claude Code?
/loop repeats a prompt inside the current local Claude Code session. /schedule creates a cloud routine that can keep running when your machine is off. Local loops expire after seven days and need an open or resumable session.
Which paid-ads loops should I start with?
Run the manual tracking check first, then start the spend anomaly watch and the weekly ads audit. Add the other loops after you trust the exports, thresholds, and review process.
Do any of these loops change a live ad account?
No. Eight loops read and report. Two prepare proposals and stop for approval. The prompts do not authorize changes to spend, targeting, creative, or live campaign settings.
Why is server-side tracking validation manual?
A useful tracking check requires a person to fire test events and compare browser tools with server-side debug tools. Without that evidence, an unattended run would mark key sections unknown while creating a false sense of coverage.
Why does the Performance Max audit run monthly?
The Skill needs at least 30 days of data and 20 conversions for a useful review. A weekly run would read nearly the same window and usually return the same answer.
Where can I download the Skills used in these loops?
The linked Skill names in this guide point to BuildWire's Claude Skills library, where each listed Skill has its own downloadable file.
Last reviewed 26 August 2026. Claude Code scheduling, loop, goal, and routine behavior checked against Anthropic documentation on 26 August 2026. Commands and limits may change.