diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 8138aae0..d45dc967 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "mureo", - "version": "0.10.43", + "version": "0.10.44", "description": "Your local-first AI ad ops crew for Google Ads, Meta Ads, Search Console & GA4. mureo sits on top of the official ad-platform MCPs, gates every change against your strategy, correlates outcomes locally, and keeps an auditable decision log — credentials never leave your machine.", "author": { "name": "Logly Inc.", diff --git a/CHANGELOG.md b/CHANGELOG.md index a56dd298..68f08902 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.10.44] - 2026-08-12 + ### Fixed - **Every Meta lead-form create was a guaranteed 400, and duplicating a @@ -251,6 +253,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 the two guards: the path guard resolves symlinks in each direction, the Bash guard never touches the filesystem and cannot. +- **Campaign flight dates are read from the fields v23 actually has.** + `map_campaign` read `campaign.start_date` / `campaign.end_date`. The v23 + `Campaign` has neither — it spells the flight `start_date_time` / + `end_date_time` — and because both reads sat behind `hasattr` guards, the + keys were simply never emitted. No error, no empty string, just two absent + keys. The campaign date-range diagnosis in `_diagnostics.py` reads exactly + those keys, so "campaign start date is in the future" and "campaign end date + has passed" could never fire, and a finished flight was reported as a healthy + campaign that happened to have stopped spending. + + Both layers were stale, so both were fixed: the mapper now reads + `start_date_time` / `end_date_time` and narrows each to `YYYY-MM-DD` (the + consumers compare whole days), and the two GAQL queries that feed it + (`list_campaigns`, `get_campaign`) now select those fields — neither selected + any date field, so correcting the attribute name alone would still have + yielded nothing. The output keys stay `start_date` / `end_date`. The same + narrowing is now shared with `_daily_delivery_row` rather than duplicated. + +- **The mapper layer is now swept against the proto, not just the queries.** + `tests/test_gaql_field_names.py` validated every GAQL `SELECT` against the + live descriptors, which is why the flight-date bug survived it: a + `hasattr(campaign, "end_date")` is invisible to a query sweep, and + `MagicMock` answers `hasattr` for any name, so every test agreed with the + broken code. The file now also resolves the literal attribute reads in + `google_ads/mappers.py` against the proto, covering `x.field`, + `hasattr`/`getattr`, and the `_safe_str` / `_safe_int` / `_safe_float` + helpers that most of the file actually uses. The helper names are derived + from the source rather than listed, the extraction is pinned against an + independent count, and each read subject must be either bound to a message or + listed as unbindable with a reason — so the sweep cannot quietly decay into a + no-op, which is the failure mode it exists to prevent. + + It immediately found a second instance: `map_tag_snippet` read + `snippet.page_header`, which `TagSnippet` does not have, so the conversion + tag's page-header snippet was always `""`. It now reads `global_site_tag`; + the response key stays `page_header` for compatibility with the documented + `google_ads_conversions_tag` contract. + +- **A targeted STATE.json write no longer resets fields it does not own.** + All five mutators (`upsert_campaign`, `append_action_log`, `set_report`, + `set_platform_metrics`, `set_conversion_action_types`) rebuilt the + `StateDocument` — and three of them the `PlatformState` — by enumerating + every field. That works until a field is added, at which point every mutator + that forgot it silently resets it, and a reset field is indistinguishable + downstream from one that was never set. + + They now use `dataclasses.replace` and change only the fields each call + actually owns, so preservation is structural rather than remembered. A new + field on either model is carried across by every mutator with no edit. + + The same shape was found and fixed in `_merge_campaign_metrics` + (`mureo/analytics/builtin/_live_clients.py`), which folded two rows for one + campaign by enumerating five of `CampaignMetrics`'s seven fields and dropped + `cpa` / `ctr`. Inert today because nothing populates them — the exact state + the other instances were in before a field was added. The two duplicated + merge blocks are now one helper, and `cpa` / `ctr` are cleared *explicitly* + rather than by omission: they are ratios, cannot be summed, and carrying one + row's value across would report it as the total's. + + A fifth was found in `preflight_tracking_consistency` + (`mureo/analysis/tracking/checks.py`) while rebasing onto the commit that + introduced it: narrowing a `TrackingConsistencyReport` to the planned ads + enumerated all five of its fields, so nothing is dropped today and the sixth + field added to that model would be. Two helpers beside it in the same file + already used `replace`. + + This is the same defect that dropped `archived` from a renamed agency client + and `origin` from a batched `action_log` entry. Finding it four times did + not prevent the fifth, because the failure is an omission and omissions are + invisible in review — so the fix comes with tests driven off + `dataclasses.fields(...)`: each names only what its mutator declares it + changes and asserts everything else survived. + + `state_codec` must keep enumerating (it maps to an external JSON schema, so + `replace` cannot help it), so it gets two guards with a clear division of + labour. Its field coverage is asserted **at module import**, so adding a + field without naming it there raises immediately — on any `import mureo`, a + REPL, or a `pytest -k` run that never collects the round-trip test. That + check asserts *declaration*; the round-trip tests assert the field actually + **survives**, and they now cover every model the codec touches — including + the nested `ActionLogEntry` and `AdState`, where a declared-but-unwired + field would previously have round-tripped to `None` unnoticed because the + fixtures left it at its default. + ### Added - **Delivery-collapse detection and diagnosis, across all platforms** (#546). @@ -851,92 +937,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 campaign carrying the scheme on a single ad when the campaigns use different landing pages. -### Fixed - -- **Campaign flight dates are read from the fields v23 actually has.** - `map_campaign` read `campaign.start_date` / `campaign.end_date`. The v23 - `Campaign` has neither — it spells the flight `start_date_time` / - `end_date_time` — and because both reads sat behind `hasattr` guards, the - keys were simply never emitted. No error, no empty string, just two absent - keys. The campaign date-range diagnosis in `_diagnostics.py` reads exactly - those keys, so "campaign start date is in the future" and "campaign end date - has passed" could never fire, and a finished flight was reported as a healthy - campaign that happened to have stopped spending. - - Both layers were stale, so both were fixed: the mapper now reads - `start_date_time` / `end_date_time` and narrows each to `YYYY-MM-DD` (the - consumers compare whole days), and the two GAQL queries that feed it - (`list_campaigns`, `get_campaign`) now select those fields — neither selected - any date field, so correcting the attribute name alone would still have - yielded nothing. The output keys stay `start_date` / `end_date`. The same - narrowing is now shared with `_daily_delivery_row` rather than duplicated. - -- **The mapper layer is now swept against the proto, not just the queries.** - `tests/test_gaql_field_names.py` validated every GAQL `SELECT` against the - live descriptors, which is why the flight-date bug survived it: a - `hasattr(campaign, "end_date")` is invisible to a query sweep, and - `MagicMock` answers `hasattr` for any name, so every test agreed with the - broken code. The file now also resolves the literal attribute reads in - `google_ads/mappers.py` against the proto, covering `x.field`, - `hasattr`/`getattr`, and the `_safe_str` / `_safe_int` / `_safe_float` - helpers that most of the file actually uses. The helper names are derived - from the source rather than listed, the extraction is pinned against an - independent count, and each read subject must be either bound to a message or - listed as unbindable with a reason — so the sweep cannot quietly decay into a - no-op, which is the failure mode it exists to prevent. - - It immediately found a second instance: `map_tag_snippet` read - `snippet.page_header`, which `TagSnippet` does not have, so the conversion - tag's page-header snippet was always `""`. It now reads `global_site_tag`; - the response key stays `page_header` for compatibility with the documented - `google_ads_conversions_tag` contract. - -- **A targeted STATE.json write no longer resets fields it does not own.** - All five mutators (`upsert_campaign`, `append_action_log`, `set_report`, - `set_platform_metrics`, `set_conversion_action_types`) rebuilt the - `StateDocument` — and three of them the `PlatformState` — by enumerating - every field. That works until a field is added, at which point every mutator - that forgot it silently resets it, and a reset field is indistinguishable - downstream from one that was never set. - - They now use `dataclasses.replace` and change only the fields each call - actually owns, so preservation is structural rather than remembered. A new - field on either model is carried across by every mutator with no edit. - - The same shape was found and fixed in `_merge_campaign_metrics` - (`mureo/analytics/builtin/_live_clients.py`), which folded two rows for one - campaign by enumerating five of `CampaignMetrics`'s seven fields and dropped - `cpa` / `ctr`. Inert today because nothing populates them — the exact state - the other instances were in before a field was added. The two duplicated - merge blocks are now one helper, and `cpa` / `ctr` are cleared *explicitly* - rather than by omission: they are ratios, cannot be summed, and carrying one - row's value across would report it as the total's. - - A fifth was found in `preflight_tracking_consistency` - (`mureo/analysis/tracking/checks.py`) while rebasing onto the commit that - introduced it: narrowing a `TrackingConsistencyReport` to the planned ads - enumerated all five of its fields, so nothing is dropped today and the sixth - field added to that model would be. Two helpers beside it in the same file - already used `replace`. - - This is the same defect that dropped `archived` from a renamed agency client - and `origin` from a batched `action_log` entry. Finding it four times did - not prevent the fifth, because the failure is an omission and omissions are - invisible in review — so the fix comes with tests driven off - `dataclasses.fields(...)`: each names only what its mutator declares it - changes and asserts everything else survived. - - `state_codec` must keep enumerating (it maps to an external JSON schema, so - `replace` cannot help it), so it gets two guards with a clear division of - labour. Its field coverage is asserted **at module import**, so adding a - field without naming it there raises immediately — on any `import mureo`, a - REPL, or a `pytest -k` run that never collects the round-trip test. That - check asserts *declaration*; the round-trip tests assert the field actually - **survives**, and they now cover every model the codec touches — including - the nested `ActionLogEntry` and `AdState`, where a declared-but-unwired - field would previously have round-tripped to `None` unnoticed because the - fixtures left it at its default. - ## [0.10.43] - 2026-08-07 ### Changed diff --git a/gemini-extension.json b/gemini-extension.json index 6d763e73..efc694cd 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "mureo", - "version": "0.10.43", + "version": "0.10.44", "description": "Your local-first AI ad ops crew. Works with Claude Code, Cursor, Codex & Gemini.", "contextFileName": "CONTEXT.md" } diff --git a/mureo/__init__.py b/mureo/__init__.py index 94906f9c..fc7cf6d6 100644 --- a/mureo/__init__.py +++ b/mureo/__init__.py @@ -1,3 +1,3 @@ """mureo — your local-first AI ad ops crew. Works with Claude Code, Cursor, Codex & Gemini.""" -__version__ = "0.10.43" +__version__ = "0.10.44" diff --git a/mureo/_data/skills/_mureo-amazon-ads/SKILL.md b/mureo/_data/skills/_mureo-amazon-ads/SKILL.md index db9961ed..4ea544b6 100644 --- a/mureo/_data/skills/_mureo-amazon-ads/SKILL.md +++ b/mureo/_data/skills/_mureo-amazon-ads/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-amazon-ads description: "Amazon Ads (official MCP, bridged by mureo): query campaigns, ad groups, ads and targets, run reports, and manage account access under Amazon's own tool names." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/mureo/_data/skills/_mureo-google-ads/SKILL.md b/mureo/_data/skills/_mureo-google-ads/SKILL.md index dce04af2..4fb119ea 100644 --- a/mureo/_data/skills/_mureo-google-ads/SKILL.md +++ b/mureo/_data/skills/_mureo-google-ads/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-google-ads description: "Google Ads: Manage campaigns, ad groups, ads, keywords, budgets, and performance analysis." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/mureo/_data/skills/_mureo-learning/SKILL.md b/mureo/_data/skills/_mureo-learning/SKILL.md index 3a3d02e5..fe10ff59 100644 --- a/mureo/_data/skills/_mureo-learning/SKILL.md +++ b/mureo/_data/skills/_mureo-learning/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-learning description: "Evidence-based marketing decision framework: statistical thinking for AI agents operating ad accounts." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "marketing" requires: diff --git a/mureo/_data/skills/_mureo-meta-ads/SKILL.md b/mureo/_data/skills/_mureo-meta-ads/SKILL.md index 81efc37f..ecc45019 100644 --- a/mureo/_data/skills/_mureo-meta-ads/SKILL.md +++ b/mureo/_data/skills/_mureo-meta-ads/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-meta-ads description: "Meta Ads: Manage campaigns, ad sets, ads, insights, and audiences on Facebook/Instagram." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/mureo/_data/skills/_mureo-shared/SKILL.md b/mureo/_data/skills/_mureo-shared/SKILL.md index f8e78f56..56d735f5 100644 --- a/mureo/_data/skills/_mureo-shared/SKILL.md +++ b/mureo/_data/skills/_mureo-shared/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-shared description: "mureo: Shared patterns for authentication, security rules, and output formatting." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/mureo/_data/skills/_mureo-strategy/SKILL.md b/mureo/_data/skills/_mureo-strategy/SKILL.md index 9175e5b8..a800e9b1 100644 --- a/mureo/_data/skills/_mureo-strategy/SKILL.md +++ b/mureo/_data/skills/_mureo-strategy/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-strategy description: "Strategy Context: Manage business strategy files (STRATEGY.md, STATE.json) for strategy-driven ad operations." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/mureo/_data/skills/ad-fatigue-check/SKILL.md b/mureo/_data/skills/ad-fatigue-check/SKILL.md index 06764a99..008619da 100644 --- a/mureo/_data/skills/ad-fatigue-check/SKILL.md +++ b/mureo/_data/skills/ad-fatigue-check/SKILL.md @@ -2,7 +2,7 @@ name: ad-fatigue-check description: "Detect creative fatigue across active ads — rising frequency, declining CTR week-over-week, and CPM drift — score each ad FATIGUED / WATCH / FRESH, and hand the evidence to a creative refresh. Use when the user asks whether creatives are worn out, why CTR is falling, if frequency is too high, when to rotate or refresh ads, or requests クリエイティブ疲弊チェック / 広告の疲弊を確認 / フリークエンシーが高い / CTRが落ちてきた / そろそろ差し替え時か. Reads active ads per platform, applies documented fatigue thresholds with noise guards, and routes fatigued ads to /creative-generate or /creative-refresh." metadata: - version: 0.10.43 + version: 0.10.44 --- # Ad Fatigue Check diff --git a/mureo/_data/skills/audience-review/SKILL.md b/mureo/_data/skills/audience-review/SKILL.md index a909c5bb..920f9d1c 100644 --- a/mureo/_data/skills/audience-review/SKILL.md +++ b/mureo/_data/skills/audience-review/SKILL.md @@ -2,7 +2,7 @@ name: audience-review description: "Audit who your ads actually target and where they run, compare it against the STRATEGY.md Persona, and surface exclusions, bid adjustments, lookalikes, and placement pruning tied to that Persona. Use when the user asks to review targeting, audiences, demographics, placements, or device performance, to check whether spend matches the Persona, to find wasted placements (e.g. Audience Network with no conversions), or requests オーディエンスレビュー / 配置レビュー / ターゲティング見直し / ペルソナと配信のズレを確認 / 除外設定を提案して. Reads Persona + Target Audience from STRATEGY.md and drives the read-only targeting tools." metadata: - version: 0.10.43 + version: 0.10.44 --- # Audience Review diff --git a/mureo/_data/skills/budget-pacing/SKILL.md b/mureo/_data/skills/budget-pacing/SKILL.md index ac368d04..512e06b5 100644 --- a/mureo/_data/skills/budget-pacing/SKILL.md +++ b/mureo/_data/skills/budget-pacing/SKILL.md @@ -2,7 +2,7 @@ name: budget-pacing description: "Month-to-date spend vs the monthly budget target, projected month-end landing, and pace alerts across all configured platforms. Use when the user asks about pacing, burn rate, whether they will overspend or underspend this month, monthly-budget tracking, landing/forecast, 'are we on budget', or requests 予算ペーシング / 着地予測 / 予算消化ペース. DISTINCT from /budget-rebalance (which reallocates budget between campaigns) — this manages total-spend trajectory toward a monthly target. Reads STRATEGY.md Guardrails / a Monthly Budget section and STATE.json." metadata: - version: 0.10.43 + version: 0.10.44 --- # Budget Pacing diff --git a/mureo/_data/skills/budget-rebalance/SKILL.md b/mureo/_data/skills/budget-rebalance/SKILL.md index 6c3177b4..4dcc61f9 100644 --- a/mureo/_data/skills/budget-rebalance/SKILL.md +++ b/mureo/_data/skills/budget-rebalance/SKILL.md @@ -2,7 +2,7 @@ name: budget-rebalance description: "Rebalance campaign budgets across all configured platforms based on strategy and performance signals. Use when the user asks to optimize budgets, redistribute spend, scale efficient campaigns, or cap overspending ones. Reads STRATEGY.md goals, analyzes campaign efficiency, and proposes budget changes with rationale. Also use when the user asks in Japanese (予算を最適化して / 予算の再配分 / 好調なキャンペーンに予算を寄せて / 予算リバランス)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Budget Rebalance diff --git a/mureo/_data/skills/competitive-scan/SKILL.md b/mureo/_data/skills/competitive-scan/SKILL.md index 8ec4dcda..1c48094b 100644 --- a/mureo/_data/skills/competitive-scan/SKILL.md +++ b/mureo/_data/skills/competitive-scan/SKILL.md @@ -2,7 +2,7 @@ name: competitive-scan description: "Scan competitor activity using auction insights and market signals. Use when the user asks about competitors, market dynamics, impression share changes, competitor moves, or competitive positioning. Also use when the user asks in Japanese (競合の動きを調べて / 競合分析 / インプレッションシェアの変化を確認 / 競合にシェアを取られていないか)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Competitive Scan diff --git a/mureo/_data/skills/creative-generate/SKILL.md b/mureo/_data/skills/creative-generate/SKILL.md index 96306842..e558c915 100644 --- a/mureo/_data/skills/creative-generate/SKILL.md +++ b/mureo/_data/skills/creative-generate/SKILL.md @@ -2,7 +2,7 @@ name: creative-generate description: "Generate creator-quality ad creatives — text-free key visuals plus composed banners — from a strategy-grounded brief. Use when the user asks to create ad creatives, generate ad images or banners, make banner variations, design display / social ad creatives, or asks in Japanese (クリエイティブ作成 / バナー作成 / 広告画像を生成 / バナーのバリエーションを作って). Runs a 6-step workflow (brief → copy → visuals → art-direction scoring loop → HTML/CSS composition → delivery) via the creative_studio_* MCP tools, then hands approved banners to the existing upload tools." metadata: - version: 0.10.43 + version: 0.10.44 --- # Creative Generate diff --git a/mureo/_data/skills/creative-refresh/SKILL.md b/mureo/_data/skills/creative-refresh/SKILL.md index 48c3b7e8..bd9bc626 100644 --- a/mureo/_data/skills/creative-refresh/SKILL.md +++ b/mureo/_data/skills/creative-refresh/SKILL.md @@ -2,7 +2,7 @@ name: creative-refresh description: "Refresh ad copy and creative assets based on performance signals and brand voice. Use when the user asks to refresh creative, propose new ad copy, A/B test creatives, update RSA assets, rotate underperformers, or visually evaluate / compare banner (image) creatives. Also use when the user asks in Japanese (クリエイティブを刷新して / 広告文の改善案がほしい / RSAアセットの入れ替え / バナーを比較評価して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Creative Refresh diff --git a/mureo/_data/skills/daily-check/SKILL.md b/mureo/_data/skills/daily-check/SKILL.md index 9da4843f..d34c8319 100644 --- a/mureo/_data/skills/daily-check/SKILL.md +++ b/mureo/_data/skills/daily-check/SKILL.md @@ -2,7 +2,7 @@ name: daily-check description: "Run a daily health check on all configured ad accounts (Google Ads, Meta Ads, Amazon Ads, TikTok Ads, Search Console, GA4, and any configured plugin platform). Use when the user asks for a daily review, health check, status update, anomaly detection, or 'how are my campaigns doing today'. Reads STRATEGY.md and STATE.json, runs platform-specific health diagnostics, checks goal progress, evaluates pending action_log observations, and reports findings as Healthy / Watch / Action-needed. Also use when the user asks in Japanese (デイリーチェック / 今日のアカウント状況は / 異常がないか確認して / 日次ヘルスチェック)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Daily Check diff --git a/mureo/_data/skills/experiment/SKILL.md b/mureo/_data/skills/experiment/SKILL.md index 7c5631fd..f0005863 100644 --- a/mureo/_data/skills/experiment/SKILL.md +++ b/mureo/_data/skills/experiment/SKILL.md @@ -2,7 +2,7 @@ name: experiment description: "Design, run, and evaluate a controlled A/B test (split test) on your ad accounts with evidence discipline — one variable, a falsifiable hypothesis, a fixed window, and a per-variant outcome verdict. Use when the user asks to run an A/B test, split test, or experiment, to 'test whether X beats Y', to validate a creative-refresh or learning hunch properly, to validate a breakdown exclusion or reallocation hypothesis before acting on it, or requests A/Bテスト / スプリットテスト設計 / 実験を回したい / どちらが勝ったか評価して / 仮説を検証したい. Forces a designed experiment instead of an ad-hoc change, records the baseline in action_log, and forbids peeking-based decisions before the window closes." metadata: - version: 0.10.43 + version: 0.10.44 --- # Experiment diff --git a/mureo/_data/skills/goal-review/SKILL.md b/mureo/_data/skills/goal-review/SKILL.md index 32185788..d4d45205 100644 --- a/mureo/_data/skills/goal-review/SKILL.md +++ b/mureo/_data/skills/goal-review/SKILL.md @@ -2,7 +2,7 @@ name: goal-review description: "Review Goal progress against STRATEGY.md targets. Use when the user asks to evaluate goal achievement, review KPI progress, assess strategy performance, or check if targets are being met. Also use when the user asks in Japanese (目標の進捗を確認 / KPIレビュー / ゴール達成状況は / 目標に届きそうか)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Goal Review diff --git a/mureo/_data/skills/incident-postmortem/SKILL.md b/mureo/_data/skills/incident-postmortem/SKILL.md index f2d21cc3..285db4e2 100644 --- a/mureo/_data/skills/incident-postmortem/SKILL.md +++ b/mureo/_data/skills/incident-postmortem/SKILL.md @@ -2,7 +2,7 @@ name: incident-postmortem description: "Close the learning loop after a rescue or incident — reconstruct the timeline from action_log, run root-cause analysis (platform / site / measurement / external), produce a structured postmortem document, distill reusable insights via /learn, and propose preventive guardrails. Use after a /rescue, a CPA spike, a conversion drop, or a runaway-spend event has been handled, or when the user asks for a postmortem, retrospective, root-cause writeup, or requests インシデント振り返り / ポストモーテム / 事後分析 / なぜ起きたのか / 再発防止策. Read-and-document only — makes no ad-platform writes." metadata: - version: 0.10.43 + version: 0.10.44 --- # Incident Postmortem diff --git a/mureo/_data/skills/lead-form-create/SKILL.md b/mureo/_data/skills/lead-form-create/SKILL.md index fdde82d1..0a90c4e6 100644 --- a/mureo/_data/skills/lead-form-create/SKILL.md +++ b/mureo/_data/skills/lead-form-create/SKILL.md @@ -2,7 +2,7 @@ name: lead-form-create description: "Create a Meta Instant Form (Lead Ad form) through a one-question-at-a-time interview. Use when the user asks to create a lead form, Instant Form, CV form, or similar. The agent collects required parameters via a guided dialogue, confirms, then calls meta_ads_lead_forms_create. Also use when the user asks in Japanese (リードフォームを作成 / インスタントフォームを作って / CVフォーム作成)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Lead Form Create diff --git a/mureo/_data/skills/learn/SKILL.md b/mureo/_data/skills/learn/SKILL.md index 37182214..125368e7 100644 --- a/mureo/_data/skills/learn/SKILL.md +++ b/mureo/_data/skills/learn/SKILL.md @@ -2,7 +2,7 @@ name: learn description: "Save a marketing diagnosis insight to the pro-diagnosis knowledge base so it is applied in future operations across all platforms. Use when the user runs /learn, explicitly teaches the agent a marketing insight, corrects the agent's analysis, or asks to remember/record an operational learning for next time. Also use when the user asks in Japanese (この学びを記録して / 次回から反映して / 運用の気づきを覚えておいて)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Learn diff --git a/mureo/_data/skills/monthly-report/SKILL.md b/mureo/_data/skills/monthly-report/SKILL.md index f2c9bacd..b24e9ba1 100644 --- a/mureo/_data/skills/monthly-report/SKILL.md +++ b/mureo/_data/skills/monthly-report/SKILL.md @@ -2,7 +2,7 @@ name: monthly-report description: "Stakeholder / client-facing monthly digest across all configured platforms: the previous full calendar month with month-over-month comparison, per-Goal attainment, an action-log recap grouped by command with outcome verdicts, budget utilization, and next-month recommendations. Use when the user asks for a monthly report, month-end summary, client report, monthly recap / digest, or requests 月次レポート / 月次まとめ / クライアント向けレポート. Written in plain language for a client audience." metadata: - version: 0.10.43 + version: 0.10.44 --- # Monthly Report diff --git a/mureo/_data/skills/onboard/SKILL.md b/mureo/_data/skills/onboard/SKILL.md index e9d8a3e2..14f94ec2 100644 --- a/mureo/_data/skills/onboard/SKILL.md +++ b/mureo/_data/skills/onboard/SKILL.md @@ -2,7 +2,7 @@ name: onboard description: "Initial account setup — create STRATEGY.md and STATE.json from scratch, import platform data, and establish baseline metrics. Use when the user is starting fresh with mureo, has no STRATEGY.md yet, or asks to set up a new account. Also use when the user asks in Japanese (初期セットアップ / STRATEGY.mdを作成して / mureoを使い始めたい / アカウントの立ち上げ)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Onboard diff --git a/mureo/_data/skills/rescue/SKILL.md b/mureo/_data/skills/rescue/SKILL.md index a610644b..67acf8a3 100644 --- a/mureo/_data/skills/rescue/SKILL.md +++ b/mureo/_data/skills/rescue/SKILL.md @@ -2,7 +2,7 @@ name: rescue description: "Emergency performance fix when an ad account is in trouble. Use when the user reports a sudden CPA spike, conversion drop, runaway spend, or asks for an urgent performance rescue. Sets Operation Mode to TURNAROUND_RESCUE and applies stabilization actions. Also use when the user asks in Japanese (CPAが急に悪化した / CVが激減した / 広告費が暴走している / 緊急で立て直して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Rescue diff --git a/mureo/_data/skills/search-term-cleanup/SKILL.md b/mureo/_data/skills/search-term-cleanup/SKILL.md index 3184c484..83c5e383 100644 --- a/mureo/_data/skills/search-term-cleanup/SKILL.md +++ b/mureo/_data/skills/search-term-cleanup/SKILL.md @@ -2,7 +2,7 @@ name: search-term-cleanup description: "Audit and clean up search terms (negative keywords, intent classification, query hygiene). Use when the user asks to clean up search queries, add negative keywords, review search term reports, or improve match quality. Cross-references Search Console, GA4, and ad platform data. Also use when the user asks in Japanese (検索語句のクリーンアップ / 除外キーワードを追加して / 無駄な検索クエリを止めたい)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Search Term Cleanup diff --git a/mureo/_data/skills/sync-state/SKILL.md b/mureo/_data/skills/sync-state/SKILL.md index 6b0a2240..bbb1cc3d 100644 --- a/mureo/_data/skills/sync-state/SKILL.md +++ b/mureo/_data/skills/sync-state/SKILL.md @@ -2,7 +2,7 @@ name: sync-state description: "Sync STATE.json with current campaign data from all platforms. Use when the user asks to refresh state, sync campaigns, update STATE.json from live data, or pull latest campaign snapshots. Also use when the user asks in Japanese (STATE.jsonを更新 / 最新データに同期して / キャンペーン情報を取り込み直して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Sync State diff --git a/mureo/_data/skills/tracking-health/SKILL.md b/mureo/_data/skills/tracking-health/SKILL.md index ca42df41..afcf3a71 100644 --- a/mureo/_data/skills/tracking-health/SKILL.md +++ b/mureo/_data/skills/tracking-health/SKILL.md @@ -2,7 +2,7 @@ name: tracking-health description: "Preventive audit of conversion tracking across all configured ad platforms — Meta pixels + CAPI, Google Ads conversion actions, and final-URL tracking-parameter consistency on every platform — with a GA4 cross-check. Use when the user asks to check tracking, audit conversion measurement, verify pixels / tags, check that ads carry the right utm / tracking parameters for the campaign they are in, diagnose why conversions stopped or look wrong, sanity-check CV counting, or requests a 計測ヘルスチェック / タグ・計測監査 / パラメータ整合性チェック / 計測が壊れていないか確認. Reads STRATEGY.md and STATE.json, produces a per-platform tracking scorecard (OK / Watch / Broken per check) and a fix list ranked by revenue risk." metadata: - version: 0.10.43 + version: 0.10.44 --- # Tracking Health diff --git a/mureo/_data/skills/weekly-report/SKILL.md b/mureo/_data/skills/weekly-report/SKILL.md index 12bd9e5d..53d3cbd1 100644 --- a/mureo/_data/skills/weekly-report/SKILL.md +++ b/mureo/_data/skills/weekly-report/SKILL.md @@ -2,7 +2,7 @@ name: weekly-report description: "Generate a weekly summary report across all platforms. Use when the user asks for a weekly report, summary, recap, end-of-week review, or weekly digest. Also use when the user asks in Japanese (週次レポート / 今週のまとめ / 週報を作成して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Weekly Report diff --git a/pyproject.toml b/pyproject.toml index ce7c229f..5e5bd8d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "mureo" -version = "0.10.43" +version = "0.10.44" description = "Your local-first AI ad ops crew. Works with Claude Code, Cursor, Codex & Gemini." requires-python = ">=3.10" license = "Apache-2.0" diff --git a/skills/_mureo-amazon-ads/SKILL.md b/skills/_mureo-amazon-ads/SKILL.md index db9961ed..4ea544b6 100644 --- a/skills/_mureo-amazon-ads/SKILL.md +++ b/skills/_mureo-amazon-ads/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-amazon-ads description: "Amazon Ads (official MCP, bridged by mureo): query campaigns, ad groups, ads and targets, run reports, and manage account access under Amazon's own tool names." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/skills/_mureo-google-ads/SKILL.md b/skills/_mureo-google-ads/SKILL.md index dce04af2..4fb119ea 100644 --- a/skills/_mureo-google-ads/SKILL.md +++ b/skills/_mureo-google-ads/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-google-ads description: "Google Ads: Manage campaigns, ad groups, ads, keywords, budgets, and performance analysis." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/skills/_mureo-learning/SKILL.md b/skills/_mureo-learning/SKILL.md index 3a3d02e5..fe10ff59 100644 --- a/skills/_mureo-learning/SKILL.md +++ b/skills/_mureo-learning/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-learning description: "Evidence-based marketing decision framework: statistical thinking for AI agents operating ad accounts." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "marketing" requires: diff --git a/skills/_mureo-meta-ads/SKILL.md b/skills/_mureo-meta-ads/SKILL.md index 81efc37f..ecc45019 100644 --- a/skills/_mureo-meta-ads/SKILL.md +++ b/skills/_mureo-meta-ads/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-meta-ads description: "Meta Ads: Manage campaigns, ad sets, ads, insights, and audiences on Facebook/Instagram." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/skills/_mureo-pro-diagnosis/SKILL.md b/skills/_mureo-pro-diagnosis/SKILL.md index 4e000ee0..c10cd49a 100644 --- a/skills/_mureo-pro-diagnosis/SKILL.md +++ b/skills/_mureo-pro-diagnosis/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-pro-diagnosis description: "Professional marketing diagnostic frameworks: expert-level campaign analysis that grows with your experience." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "marketing" requires: diff --git a/skills/_mureo-shared/SKILL.md b/skills/_mureo-shared/SKILL.md index f8e78f56..56d735f5 100644 --- a/skills/_mureo-shared/SKILL.md +++ b/skills/_mureo-shared/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-shared description: "mureo: Shared patterns for authentication, security rules, and output formatting." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/skills/_mureo-strategy/SKILL.md b/skills/_mureo-strategy/SKILL.md index 9175e5b8..a800e9b1 100644 --- a/skills/_mureo-strategy/SKILL.md +++ b/skills/_mureo-strategy/SKILL.md @@ -2,7 +2,7 @@ name: _mureo-strategy description: "Strategy Context: Manage business strategy files (STRATEGY.md, STATE.json) for strategy-driven ad operations." metadata: - version: 0.10.43 + version: 0.10.44 openclaw: category: "advertising" requires: diff --git a/skills/ad-fatigue-check/SKILL.md b/skills/ad-fatigue-check/SKILL.md index 06764a99..008619da 100644 --- a/skills/ad-fatigue-check/SKILL.md +++ b/skills/ad-fatigue-check/SKILL.md @@ -2,7 +2,7 @@ name: ad-fatigue-check description: "Detect creative fatigue across active ads — rising frequency, declining CTR week-over-week, and CPM drift — score each ad FATIGUED / WATCH / FRESH, and hand the evidence to a creative refresh. Use when the user asks whether creatives are worn out, why CTR is falling, if frequency is too high, when to rotate or refresh ads, or requests クリエイティブ疲弊チェック / 広告の疲弊を確認 / フリークエンシーが高い / CTRが落ちてきた / そろそろ差し替え時か. Reads active ads per platform, applies documented fatigue thresholds with noise guards, and routes fatigued ads to /creative-generate or /creative-refresh." metadata: - version: 0.10.43 + version: 0.10.44 --- # Ad Fatigue Check diff --git a/skills/audience-review/SKILL.md b/skills/audience-review/SKILL.md index a909c5bb..920f9d1c 100644 --- a/skills/audience-review/SKILL.md +++ b/skills/audience-review/SKILL.md @@ -2,7 +2,7 @@ name: audience-review description: "Audit who your ads actually target and where they run, compare it against the STRATEGY.md Persona, and surface exclusions, bid adjustments, lookalikes, and placement pruning tied to that Persona. Use when the user asks to review targeting, audiences, demographics, placements, or device performance, to check whether spend matches the Persona, to find wasted placements (e.g. Audience Network with no conversions), or requests オーディエンスレビュー / 配置レビュー / ターゲティング見直し / ペルソナと配信のズレを確認 / 除外設定を提案して. Reads Persona + Target Audience from STRATEGY.md and drives the read-only targeting tools." metadata: - version: 0.10.43 + version: 0.10.44 --- # Audience Review diff --git a/skills/budget-pacing/SKILL.md b/skills/budget-pacing/SKILL.md index ac368d04..512e06b5 100644 --- a/skills/budget-pacing/SKILL.md +++ b/skills/budget-pacing/SKILL.md @@ -2,7 +2,7 @@ name: budget-pacing description: "Month-to-date spend vs the monthly budget target, projected month-end landing, and pace alerts across all configured platforms. Use when the user asks about pacing, burn rate, whether they will overspend or underspend this month, monthly-budget tracking, landing/forecast, 'are we on budget', or requests 予算ペーシング / 着地予測 / 予算消化ペース. DISTINCT from /budget-rebalance (which reallocates budget between campaigns) — this manages total-spend trajectory toward a monthly target. Reads STRATEGY.md Guardrails / a Monthly Budget section and STATE.json." metadata: - version: 0.10.43 + version: 0.10.44 --- # Budget Pacing diff --git a/skills/budget-rebalance/SKILL.md b/skills/budget-rebalance/SKILL.md index 6c3177b4..4dcc61f9 100644 --- a/skills/budget-rebalance/SKILL.md +++ b/skills/budget-rebalance/SKILL.md @@ -2,7 +2,7 @@ name: budget-rebalance description: "Rebalance campaign budgets across all configured platforms based on strategy and performance signals. Use when the user asks to optimize budgets, redistribute spend, scale efficient campaigns, or cap overspending ones. Reads STRATEGY.md goals, analyzes campaign efficiency, and proposes budget changes with rationale. Also use when the user asks in Japanese (予算を最適化して / 予算の再配分 / 好調なキャンペーンに予算を寄せて / 予算リバランス)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Budget Rebalance diff --git a/skills/competitive-scan/SKILL.md b/skills/competitive-scan/SKILL.md index 8ec4dcda..1c48094b 100644 --- a/skills/competitive-scan/SKILL.md +++ b/skills/competitive-scan/SKILL.md @@ -2,7 +2,7 @@ name: competitive-scan description: "Scan competitor activity using auction insights and market signals. Use when the user asks about competitors, market dynamics, impression share changes, competitor moves, or competitive positioning. Also use when the user asks in Japanese (競合の動きを調べて / 競合分析 / インプレッションシェアの変化を確認 / 競合にシェアを取られていないか)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Competitive Scan diff --git a/skills/creative-generate/SKILL.md b/skills/creative-generate/SKILL.md index 96306842..e558c915 100644 --- a/skills/creative-generate/SKILL.md +++ b/skills/creative-generate/SKILL.md @@ -2,7 +2,7 @@ name: creative-generate description: "Generate creator-quality ad creatives — text-free key visuals plus composed banners — from a strategy-grounded brief. Use when the user asks to create ad creatives, generate ad images or banners, make banner variations, design display / social ad creatives, or asks in Japanese (クリエイティブ作成 / バナー作成 / 広告画像を生成 / バナーのバリエーションを作って). Runs a 6-step workflow (brief → copy → visuals → art-direction scoring loop → HTML/CSS composition → delivery) via the creative_studio_* MCP tools, then hands approved banners to the existing upload tools." metadata: - version: 0.10.43 + version: 0.10.44 --- # Creative Generate diff --git a/skills/creative-refresh/SKILL.md b/skills/creative-refresh/SKILL.md index 48c3b7e8..bd9bc626 100644 --- a/skills/creative-refresh/SKILL.md +++ b/skills/creative-refresh/SKILL.md @@ -2,7 +2,7 @@ name: creative-refresh description: "Refresh ad copy and creative assets based on performance signals and brand voice. Use when the user asks to refresh creative, propose new ad copy, A/B test creatives, update RSA assets, rotate underperformers, or visually evaluate / compare banner (image) creatives. Also use when the user asks in Japanese (クリエイティブを刷新して / 広告文の改善案がほしい / RSAアセットの入れ替え / バナーを比較評価して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Creative Refresh diff --git a/skills/daily-check/SKILL.md b/skills/daily-check/SKILL.md index 9da4843f..d34c8319 100644 --- a/skills/daily-check/SKILL.md +++ b/skills/daily-check/SKILL.md @@ -2,7 +2,7 @@ name: daily-check description: "Run a daily health check on all configured ad accounts (Google Ads, Meta Ads, Amazon Ads, TikTok Ads, Search Console, GA4, and any configured plugin platform). Use when the user asks for a daily review, health check, status update, anomaly detection, or 'how are my campaigns doing today'. Reads STRATEGY.md and STATE.json, runs platform-specific health diagnostics, checks goal progress, evaluates pending action_log observations, and reports findings as Healthy / Watch / Action-needed. Also use when the user asks in Japanese (デイリーチェック / 今日のアカウント状況は / 異常がないか確認して / 日次ヘルスチェック)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Daily Check diff --git a/skills/experiment/SKILL.md b/skills/experiment/SKILL.md index 7c5631fd..f0005863 100644 --- a/skills/experiment/SKILL.md +++ b/skills/experiment/SKILL.md @@ -2,7 +2,7 @@ name: experiment description: "Design, run, and evaluate a controlled A/B test (split test) on your ad accounts with evidence discipline — one variable, a falsifiable hypothesis, a fixed window, and a per-variant outcome verdict. Use when the user asks to run an A/B test, split test, or experiment, to 'test whether X beats Y', to validate a creative-refresh or learning hunch properly, to validate a breakdown exclusion or reallocation hypothesis before acting on it, or requests A/Bテスト / スプリットテスト設計 / 実験を回したい / どちらが勝ったか評価して / 仮説を検証したい. Forces a designed experiment instead of an ad-hoc change, records the baseline in action_log, and forbids peeking-based decisions before the window closes." metadata: - version: 0.10.43 + version: 0.10.44 --- # Experiment diff --git a/skills/goal-review/SKILL.md b/skills/goal-review/SKILL.md index 32185788..d4d45205 100644 --- a/skills/goal-review/SKILL.md +++ b/skills/goal-review/SKILL.md @@ -2,7 +2,7 @@ name: goal-review description: "Review Goal progress against STRATEGY.md targets. Use when the user asks to evaluate goal achievement, review KPI progress, assess strategy performance, or check if targets are being met. Also use when the user asks in Japanese (目標の進捗を確認 / KPIレビュー / ゴール達成状況は / 目標に届きそうか)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Goal Review diff --git a/skills/incident-postmortem/SKILL.md b/skills/incident-postmortem/SKILL.md index f2d21cc3..285db4e2 100644 --- a/skills/incident-postmortem/SKILL.md +++ b/skills/incident-postmortem/SKILL.md @@ -2,7 +2,7 @@ name: incident-postmortem description: "Close the learning loop after a rescue or incident — reconstruct the timeline from action_log, run root-cause analysis (platform / site / measurement / external), produce a structured postmortem document, distill reusable insights via /learn, and propose preventive guardrails. Use after a /rescue, a CPA spike, a conversion drop, or a runaway-spend event has been handled, or when the user asks for a postmortem, retrospective, root-cause writeup, or requests インシデント振り返り / ポストモーテム / 事後分析 / なぜ起きたのか / 再発防止策. Read-and-document only — makes no ad-platform writes." metadata: - version: 0.10.43 + version: 0.10.44 --- # Incident Postmortem diff --git a/skills/lead-form-create/SKILL.md b/skills/lead-form-create/SKILL.md index fdde82d1..0a90c4e6 100644 --- a/skills/lead-form-create/SKILL.md +++ b/skills/lead-form-create/SKILL.md @@ -2,7 +2,7 @@ name: lead-form-create description: "Create a Meta Instant Form (Lead Ad form) through a one-question-at-a-time interview. Use when the user asks to create a lead form, Instant Form, CV form, or similar. The agent collects required parameters via a guided dialogue, confirms, then calls meta_ads_lead_forms_create. Also use when the user asks in Japanese (リードフォームを作成 / インスタントフォームを作って / CVフォーム作成)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Lead Form Create diff --git a/skills/learn/SKILL.md b/skills/learn/SKILL.md index 37182214..125368e7 100644 --- a/skills/learn/SKILL.md +++ b/skills/learn/SKILL.md @@ -2,7 +2,7 @@ name: learn description: "Save a marketing diagnosis insight to the pro-diagnosis knowledge base so it is applied in future operations across all platforms. Use when the user runs /learn, explicitly teaches the agent a marketing insight, corrects the agent's analysis, or asks to remember/record an operational learning for next time. Also use when the user asks in Japanese (この学びを記録して / 次回から反映して / 運用の気づきを覚えておいて)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Learn diff --git a/skills/monthly-report/SKILL.md b/skills/monthly-report/SKILL.md index f2c9bacd..b24e9ba1 100644 --- a/skills/monthly-report/SKILL.md +++ b/skills/monthly-report/SKILL.md @@ -2,7 +2,7 @@ name: monthly-report description: "Stakeholder / client-facing monthly digest across all configured platforms: the previous full calendar month with month-over-month comparison, per-Goal attainment, an action-log recap grouped by command with outcome verdicts, budget utilization, and next-month recommendations. Use when the user asks for a monthly report, month-end summary, client report, monthly recap / digest, or requests 月次レポート / 月次まとめ / クライアント向けレポート. Written in plain language for a client audience." metadata: - version: 0.10.43 + version: 0.10.44 --- # Monthly Report diff --git a/skills/onboard/SKILL.md b/skills/onboard/SKILL.md index e9d8a3e2..14f94ec2 100644 --- a/skills/onboard/SKILL.md +++ b/skills/onboard/SKILL.md @@ -2,7 +2,7 @@ name: onboard description: "Initial account setup — create STRATEGY.md and STATE.json from scratch, import platform data, and establish baseline metrics. Use when the user is starting fresh with mureo, has no STRATEGY.md yet, or asks to set up a new account. Also use when the user asks in Japanese (初期セットアップ / STRATEGY.mdを作成して / mureoを使い始めたい / アカウントの立ち上げ)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Onboard diff --git a/skills/rescue/SKILL.md b/skills/rescue/SKILL.md index a610644b..67acf8a3 100644 --- a/skills/rescue/SKILL.md +++ b/skills/rescue/SKILL.md @@ -2,7 +2,7 @@ name: rescue description: "Emergency performance fix when an ad account is in trouble. Use when the user reports a sudden CPA spike, conversion drop, runaway spend, or asks for an urgent performance rescue. Sets Operation Mode to TURNAROUND_RESCUE and applies stabilization actions. Also use when the user asks in Japanese (CPAが急に悪化した / CVが激減した / 広告費が暴走している / 緊急で立て直して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Rescue diff --git a/skills/search-term-cleanup/SKILL.md b/skills/search-term-cleanup/SKILL.md index 3184c484..83c5e383 100644 --- a/skills/search-term-cleanup/SKILL.md +++ b/skills/search-term-cleanup/SKILL.md @@ -2,7 +2,7 @@ name: search-term-cleanup description: "Audit and clean up search terms (negative keywords, intent classification, query hygiene). Use when the user asks to clean up search queries, add negative keywords, review search term reports, or improve match quality. Cross-references Search Console, GA4, and ad platform data. Also use when the user asks in Japanese (検索語句のクリーンアップ / 除外キーワードを追加して / 無駄な検索クエリを止めたい)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Search Term Cleanup diff --git a/skills/sync-state/SKILL.md b/skills/sync-state/SKILL.md index 6b0a2240..bbb1cc3d 100644 --- a/skills/sync-state/SKILL.md +++ b/skills/sync-state/SKILL.md @@ -2,7 +2,7 @@ name: sync-state description: "Sync STATE.json with current campaign data from all platforms. Use when the user asks to refresh state, sync campaigns, update STATE.json from live data, or pull latest campaign snapshots. Also use when the user asks in Japanese (STATE.jsonを更新 / 最新データに同期して / キャンペーン情報を取り込み直して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Sync State diff --git a/skills/tracking-health/SKILL.md b/skills/tracking-health/SKILL.md index ca42df41..afcf3a71 100644 --- a/skills/tracking-health/SKILL.md +++ b/skills/tracking-health/SKILL.md @@ -2,7 +2,7 @@ name: tracking-health description: "Preventive audit of conversion tracking across all configured ad platforms — Meta pixels + CAPI, Google Ads conversion actions, and final-URL tracking-parameter consistency on every platform — with a GA4 cross-check. Use when the user asks to check tracking, audit conversion measurement, verify pixels / tags, check that ads carry the right utm / tracking parameters for the campaign they are in, diagnose why conversions stopped or look wrong, sanity-check CV counting, or requests a 計測ヘルスチェック / タグ・計測監査 / パラメータ整合性チェック / 計測が壊れていないか確認. Reads STRATEGY.md and STATE.json, produces a per-platform tracking scorecard (OK / Watch / Broken per check) and a fix list ranked by revenue risk." metadata: - version: 0.10.43 + version: 0.10.44 --- # Tracking Health diff --git a/skills/weekly-report/SKILL.md b/skills/weekly-report/SKILL.md index 12bd9e5d..53d3cbd1 100644 --- a/skills/weekly-report/SKILL.md +++ b/skills/weekly-report/SKILL.md @@ -2,7 +2,7 @@ name: weekly-report description: "Generate a weekly summary report across all platforms. Use when the user asks for a weekly report, summary, recap, end-of-week review, or weekly digest. Also use when the user asks in Japanese (週次レポート / 今週のまとめ / 週報を作成して)." metadata: - version: 0.10.43 + version: 0.10.44 --- # Weekly Report