From mureo
Syncs STATE.json with current campaign data from all marketing platforms. Use when refreshing state, syncing campaigns, or pulling latest campaign snapshots.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mureo:sync-stateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> PREREQUISITE: Read `../_mureo-shared/SKILL.md` for auth, security rules, output format, and **Tool Selection** (Read/Write on Code, `mureo_strategy_*` / `mureo_state_*` MCP on Desktop / Cowork).
PREREQUISITE: Read
../_mureo-shared/SKILL.mdfor auth, security rules, output format, and Tool Selection (Read/Write on Code,mureo_strategy_*/mureo_state_*MCP on Desktop / Cowork).
Synchronize STATE.json with the current state of all marketing platforms.
onboard skill first if not)Read current STATE.json (if exists) to track changes.
Discover platforms: Identify all platforms registered in STATE.json platforms — built-in AND plugin/bridge platforms. Per ../_mureo-shared/SKILL.md → Plugin platforms, also enumerate any installed entry-point plugin that exposes mcp__mureo__<plugin>_* tools; its STATE.json platform key is plugin:<dist> (the same convention mureo uses when promoting plugin mutations into action_log).
Fetch platform data: For each registered platform:
google_ads_campaigns_list, then google_ads_performance_report for the current period (last 30 days). Both work in BYOD and Live API modes. Keep the per-campaign numbers from the performance report — they become each campaign's metrics in step 7. If mureo's Google Ads tools are unavailable (e.g. MUREO_DISABLE_GOOGLE_ADS=1 after mureo providers add google-ads-official), fall back to the official google-ads-official MCP's equivalent campaign-list and performance-report tools for the same period.meta_ads_campaigns_list, then meta_ads_insights_report for the current period — capture result_indicator per campaign so STATE.json reflects whether each campaign's "results" are clicks or real leads, and keep the per-campaign insight numbers for the metrics write in step 7. If mureo's Meta Ads tools are unavailable, fall back to the official meta-ads-official hosted MCP for the campaign list and insights; the result_indicator field is mureo-specific and will not be present — record the raw optimization goal / actions list per campaign in STATE.json instead and note that CV-definition disambiguation requires mureo's native MCP.plugin:<dist>): where the plugin exposes a daily-report / insights / performance tool (infer from the live tool list — best-effort, not deterministic), call it for the current period and keep the per-campaign numbers for the metrics write in step 7. Honest scope per ../_mureo-shared/SKILL.md: capture only the basic metrics the plugin's own tools return; skip mureo-only value-adds (result_indicator CV-mismatch, anomaly detection, RSA-asset audit, rule-based scoring) — they do not exist for plugins, so omit result_indicator for a plugin platform. If a plugin has no such reporting tool, leave its metrics/totals empty (it stays an advisory platform) and continue — never fail the whole sync because a plugin tool is missing.byod/ directory (or ~/.mureo/byod/ for legacy CLI users) and is only accessible through mureo MCP tools — do not look for raw CSVs in the project directory.Check data sources: If Search Console is configured, verify site access is still valid. If GA4 is available, verify connectivity.
Detect new platforms: If new platform credentials exist but have no entry in platforms, prompt the user to run /onboard to add them.
Verify STRATEGY.md Data Sources: If STRATEGY.md is missing a ## Data Sources section (older setup), prompt the user to add it listing all configured platforms.
Update STATE.json with all campaign snapshots. For each campaign, also write the metrics you fetched in step 3 onto the snapshot: spend, impressions, clicks, conversions, cpa, ctr, the Meta result_indicator (when present), period (e.g. LAST_30_DAYS), and fetched_at (ISO 8601). On Code use Write; on Desktop / Cowork call mureo_state_upsert_campaign with the metrics object. Record the per-platform rollup on each platforms[<platform>] entry too — totals (summed spend / clicks / conversions / etc.) and metrics_period (the period the totals cover) — so the reporting dashboard can render KPIs from STATE.json without re-querying. All metric fields are optional: omit any a platform doesn't provide rather than writing nulls. Plugin / bridge platforms use the SAME shape: persist their campaigns + best-effort metrics (canonical vocabulary, minus result_indicator) under platform key plugin:<dist> via mureo_state_upsert_campaign (pass platform="plugin:<dist>"), plus the per-platform totals / metrics_period — so a bridge's KPIs land in the same platforms shape the dashboard reads. A plugin with no reporting tool keeps an entry with empty metrics/totals (advisory, no synced metrics).
Show diff: Compare old vs new state and highlight changes:
Update last_synced_at timestamp.
If STATE.json doesn't exist yet, suggest running /onboard first.
npx claudepluginhub logly/mureo --plugin mureoProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.