What problem does it solve? Managing recurring paid ad launches and campaign provisioning across Meta, TikTok, Snapchat, Pinterest, and LinkedIn requires repetitive manual work in ad dashboards, with real risk of accidental spend. This Skill automates both flows from declarative config files while enforcing PAUSED-by-default launches and a daily spend cap circuit-breaker. ## Core Features & Use Cases - Scheduled ad launches: Reads config.yaml, matches schedule entries to today's date (weekday, exact date, date list, or cron), and launches ads into existing ad sets via the AdManage.ai API, always PAUSED unless explicitly overridden. - Campaign and ad set provisioning: The create branch diffs config.create.yaml against local state and creates missing Meta campaigns and ad sets, writing returned IDs back to .admanage-state/campaigns.json for idempotent re-runs. - Spend guardrails: A dailySpendCap circuit-breaker fails closed when spend cannot be verified, and a DRY_RUN mode writes payloads to disk for review without making API calls. - Use Case: A growth operator wants a promo ad launched every Monday into an existing Meta ad set. They define the schedule once in config.yaml, and the daily 8 AM run launches it PAUSED with spend-cap protection, notifying them of the result. ## Quick Start Copy config.example.yaml to config.yaml, fill in your AdManage ad account, workspace, page, and ad set IDs, then ask the agent to run the schedule-ads skill with DRY_RUN=true to preview today's launches.