Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user has a winning ad and wants to scale it safely: readiness checks, vertical scaling at +20-30% per step, horizontal scaling into new audiences, creatives, and channels, learning-phase reset risk, how Advantage+ and Performance Max behave when scaled, and the signals that mean stop. Trigger on 'scale ads', 'increase ad budget', 'scale campaign', 'scale a winner', 'vertical scaling', 'horizontal scaling', or 'CPA went up after scaling'.
.claude/skills/minhnv0807-55-scaling-ads-global/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 98% | 0% |
Scaling means increasing spend while holding or improving efficiency. Scaling badly means CPA spikes and budget burns. Hard rule: never increase budget while CPA is bad. Fix the problem first (run 21-ads-audit-global), then scale.
Ask up to 4 questions:
53-tracking-setup-global)If any item fails, do not scale. Go back to optimizing or preparing.
| Mode | Increase | Cadence | Condition | |------|---------:|---------|-----------| | Conservative | +20% | Every 72h | CPA holding at target | | Moderate | +30% | Every 2-3 days | CPA clearly better than baseline | | Aggressive | +50% | Once only | Very stable campaign, risk accepted | | Never | 2x overnight | — | Guarantees a learning reset and CPA spike |
After each increase, monitor for 24-48 hours:
references/benchmarks-global.md, a Tier 2 market can cost a fraction of Tier 1 CPM, but conversion value and AOV usually drop too. Re-run 10-reverse-kpi-global for the new market before committing budget.| Action | Resets learning? | Safer way | |--------|------------------|-----------| | Budget increase up to 20-30% | Usually not | Step up gradually, wait 72h | | Budget increase above 30-50% | Likely | Break into several smaller steps | | Change audience, placement, or bid strategy | Yes | Duplicate into a new ad set instead of editing | | Add or remove creative inside the ad set | Possibly | Add in a new ad set or the testing campaign | | Pause and restart after a long gap | Possibly | Avoid pausing winners; throttle with budget instead |
Advantage+ (Meta) and Performance Max (Google) do not respond to scaling the way manual campaigns do:
Expressed as multiples of the starting daily budget so it holds in any market or currency.
| Week | Daily budget | Action | KPI checkpoint | |------|-------------|--------|----------------| | 1 (testing) | 1.0x baseline | Test 3-5 ad sets | CPA at or below target | | 2 | 1.4-1.7x | +20% on the winner, pause losers | CPA stable 5 of 7 days | | 3 | 2.0-3.0x | +20-30% again, duplicate the winner into a new audience | Volume up, CPA held | | 4 | 3.0-5.0x | Horizontal: lookalikes, broad, new channel | CPA within tolerance | | Month 2+ | 5x+ | Full scale plus continuous new creative | ROAS at or above target |
Every step must still clear the learning floor from 52-account-structure-global: (50 events x target CPA) / 7.
Daily, 15 minutes: yesterday's CPA versus target — scale, hold, or pause; frequency above 2.5 means prepare new creative; check spend pace.
Weekly: pull 7 days of data and apply the decision rules — scale winners +20%, pause losers with a written reason, brief new creative wherever frequency is climbing. Compare against references/benchmarks-global.md for the market and industry before concluding a campaign is broken.
Action: revert to the last budget that worked, wait 48-72 hours for stability, and run 21-ads-audit-global if it does not recover.
| Signal | Severity | Action | |--------|----------|--------| | Frequency above 2.5 | Warning | Brief new creative now | | Frequency above 3.5 | Urgent | Launch new creative today | | CTR down more than 30% | Week 2-3 | Refresh the hook, keep the body | | Routine | Every 2-3 weeks | Keep 2-3 new creatives ready to swap |
File name: scaling-plan-[product]-[YYYYMMDD].md
markdown# Scaling Plan — [Campaign/Product] Baseline CPA: [amount] · Current daily budget: [amount] · Target daily budget: [amount] · Market: [x] ## 1. Readiness checklist [7 items with status] ## 2. Vertical plan [increase schedule, 24-48h checkpoints] ## 3. Horizontal plan [new audiences / creatives / channels / markets, with exclusions] ## 4. Automated campaign notes [Advantage+ / Performance Max handling] ## 5. Weekly roadmap [budget multiple, action, checkpoint] ## 6. Stop signals [thresholds and the action for each] ## 7. Creative pipeline [reserve creatives and deadlines]
19-ab-test-setup-global: a winner must come from a valid test before it is scaled.21-ads-audit-global: audit before scaling if CPA is unstable, and again if scaling breaks performance.03-performance-eval-global: daily and weekly checks and decision rules.56-retargeting-plan-global: scaling cold traffic grows the warm pool — raise retargeting budget alongside.52-account-structure-global: how to split the winner into its own scaling campaign.57-next-ads-plan-global: this period's scaling results feed next period's plan.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-12 | pass→pass | 9,479 | 7,086 | -25% | 1 | 1 | 0% | 1,772 | 3,641 | +105% | 0 | 0 | — |
case-01 | fail→pass | 54,253 | 39,988 | -26% | 1 | 1 | 0% | 8,386 | 8,975 | +7% | 0 | 0 | — |
case-02 | fail→pass | 47,388 | 36,965 | -22% | 1 | 1 | 0% | 8,343 | 8,388 | +1% | 0 | 0 | — |
case-03 | fail→pass | 48,407 | 34,076 | -30% | 1 | 1 | 0% | 8,327 | 7,682 | -8% | 0 | 0 | — |
case-04 | pass→pass | 17,721 | 12,701 | -28% | 1 | 1 | 0% | 2,903 | 4,542 | +56% | 0 | 0 | — |
case-05 | pass→pass | 22,092 | 18,272 | -17% | 1 | 1 | 0% | 3,923 | 5,755 | +47% | 0 | 0 | — |
case-06 | pass→pass | 17,459 | 20,179 | +16% | 1 | 1 | 0% | 3,076 | 5,649 | +84% | 0 | 0 | — |
case-07 | pass→pass | 10,976 | 12,066 | +10% | 1 | 1 | 0% | 2,034 | 4,650 | +129% | 0 | 0 | — |
case-08 | fail→pass | 10,367 | 5,875 | -43% | 1 | 1 | 0% | 1,812 | 3,474 | +92% | 0 | 0 | — |
case-09 | fail→pass | 11,106 | 6,953 | -37% | 1 | 1 | 0% | 1,787 | 3,538 | +98% | 0 | 0 | — |
case-10 | pass→pass | 13,006 | 11,494 | -12% | 1 | 1 | 0% | 2,031 | 4,266 | +110% | 0 | 0 | — |
case-11 | pass→pass | 8,717 | 5,853 | -33% | 1 | 1 | 0% | 1,620 | 3,374 | +108% | 0 | 0 | — |
case-13 | pass→pass | 13,833 | 3,662 | -74% | 1 | 1 | 0% | 2,240 | 3,008 | +34% | 0 | 0 | — |
case-14 | pass→pass | 10,993 | 7,515 | -32% | 1 | 1 | 0% | 1,715 | 3,590 | +109% | 0 | 0 | — |
case-15 | pass→pass | 14,026 | 8,905 | -37% | 1 | 1 | 0% | 2,397 | 3,862 | +61% | 0 | 0 | — |
case-16 | fail→pass | 10,183 | 6,015 | -41% | 1 | 1 | 0% | 1,781 | 3,403 | +91% | 0 | 0 | — |
case-17 | fail→pass | 12,849 | 3,877 | -70% | 1 | 1 | 0% | 2,122 | 3,056 | +44% | 0 | 0 | — |
case-18 | pass→pass | 8,609 | 5,912 | -31% | 1 | 1 | 0% | 1,410 | 3,147 | +123% | 0 | 0 | — |
case-19 | fail→pass | 11,713 | 3,772 | -68% | 1 | 1 | 0% | 2,084 | 2,888 | +39% | 0 | 0 | — |
case-20 | pass→pass | 11,360 | 6,948 | -39% | 1 | 1 | 0% | 1,926 | 3,636 | +89% | 0 | 0 | — |
case-21 | fail→fail | 18,158 | 14,954 | -18% | 1 | 1 | 0% | 2,853 | 4,854 | +70% | 0 | 0 | — |
case-22 | pass→pass | 12,758 | 8,416 | -34% | 1 | 1 | 0% | 1,987 | 3,718 | +87% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.