agentsclimarketplace

Goal review

Skill logly/mureo/skills/goal-review

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レビュー / ゴール達成状況は / 目標に届きそうか).From its SKILL.md

Install
npx -y skills add logly/mureo --skill goal-review

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

7.6 KB, as published. Nobody here has run it

Goal Review

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).

Review progress toward all marketing goals across all platforms.

Prerequisites

  • STRATEGY.md with at least one Goal section (run the onboard skill first)
  • STATE.json (run /sync-state first)

Steps

Before you start: Run the Diagnostic preamble from ../_mureo-shared/SKILL.md — load learning insights (mureo_learning_insights_get) and consult advisors (mureo_consult_advisor) before drawing conclusions.

  1. Establish today: call mureo_state_get first, on every host (including Claude Code, where you would otherwise Read the file) and take server_now from its response — ISO 8601 with UTC offset, e.g. 2026-07-28T10:12:33+09:00. Its date is the only source of the current date for this run: every "days remaining until deadline" and required-pace calculation in step 4 is measured from it, so a stale date silently flips on-track / at-risk / off-track. Do not shell out (this skill must run in Bash-less headless hosts) and do not read the date off STATE.json — last_synced_at, reports.*.period and action_log timestamps are history, never evidence of what day it is now. Never write server_now into STATE.json: it is a response field, and a persisted copy becomes tomorrow's stale "today".

  2. Load context: Read STRATEGY.md (all Goal sections, Data Sources) and STATE.json (the same mureo_state_get response from step 0 on MCP hosts).

  3. Discover platforms: Identify all configured platforms and available data sources. Also include any hosted official-MCP connector present in the session (e.g. TikTok, key tiktok_ads) — drive it via its own tools and skip mureo-only value-adds; see ../_mureo-shared/SKILL.md → Hosted-connector platforms.

  4. For each Goal, gather current metrics from all relevant platforms and data sources:

    • Ad platforms: Use performance reporting tools for each platform
    • GA4 (if available): Website conversion data, user behavior metrics
    • Search Console (if available): Organic search metrics for SEO-related goals
    • CRM (if available): Lead quality, pipeline data for LTV-related goals

    For goals that span multiple data sources, synthesize a unified view. Example: "Total leads = Platform A 62 + Platform B 28 + Organic 15 = 105 total"

  5. Evaluate progress for each Goal:

    • Compare current value against target
    • Calculate % of target achieved
    • Calculate days remaining until deadline — the Goal's Deadline minus server_now's date
    • Assess trajectory: on-track / at-risk / off-track
  6. Present Goal dashboard:

    GoalTargetCurrentProgressDeadlineStatus

    Status indicators:

    • On track — current value meets or exceeds the pace needed to hit target by deadline
    • At risk — current value is within 20% of target but trajectory is concerning
    • Off track — current value is more than 20% away from target pace
  7. Consult evidence: Before recommending actions, check action_log for past actions with evaluated outcomes:

    • Reference validated findings when proposing similar actions ("Negative keyword cleanup has consistently improved CPA by 10-20% on this account")
    • Flag previously rejected actions ("Device bid adjustments had no significant impact in the last 2 attempts")
    • Do NOT attribute goal progress to specific actions without checking observation windows and sample sizes
  8. Recommend actions for off-track Goals:

    • Tie recommendations to the specific platform(s) where the Goal is off-track
    • If cross-platform rebalancing could help, suggest it
    • Suggest specific commands to run (/rescue, /budget-rebalance, /creative-refresh)
    • Prioritize recommendations by Goal priority (P0 > P1 > P2)
    • Prefer actions backed by past validated evidence over unproven strategies
  9. Update STATE.json:

    • Log the review to action_log with a summary of Goal statuses
    • Update Current values in STRATEGY.md Goal sections if approved
  10. Persist the report summary (best-effort): Call mureo_state_report_set with report="goal" and a concise summary object so the read-only dashboard can render this review without re-running you. Follow this convention:

    • generated_at: ISO 8601 timestamp of this run — use server_now
    • period: the assessment window or "as of" date — the "as of" date is server_now's date
    • totals: the account's headline figures, using the canonical metric vocabulary — spend, conversions, cpa, ctr, clicks, impressions. This is the block the dashboard renders as figures. Raw numbers only: 773957, not "¥773,957"; 0.0466, not "4.66%" — one of those keys carrying a string is refused, because it sits where the view reads a figure and renders as nothing. A key outside the vocabulary may ride along: it is stored, just not shown as a headline number. Omit totals entirely if this run gathered no account-level figures.
    • kpis: per-Goal numbers (target, current, % of target achieved) — the breakdown, not the headline row
    • flags: a list of structured flags — each a small object {code, severity, params} so the dashboard renders a coarse, localizable chip with the numbers on drill-down:
      • code: a canonical vocabulary key — one of goals_met, cpa_over_target, cpa_under_target, cv_below_target, cv_above_target, spend_spike, cpa_spike, invalid_traffic_suspected, zero_cv_adspots, budget_overspend, budget_drift, tracking_suspect, zero_conversions, supply_tools_unconfigured, anomaly_baseline_insufficient, pending_observations, search_console_no_property, ga4_not_configured.
      • severity: one of action/watch/info/positive (omit to take the code's default — info/positive keep informational and good-news flags visually distinct from alarms).
      • params: an object holding the DETAIL (target, current, % of target). Keep detail in params, NOT baked into the code — write {"code":"cpa_over_target","params":{"cpa":15200}}, never a slug like goal_cpa_off_track.
      • For a finding outside the vocabulary use {code:"custom", severity, label} where label is a string or a {"ja":…,"en":…} map. Unknown non-custom codes are rejected. (A legacy bare-string flag still works but renders without the drill-down — prefer the object form.)
      • Example: [{"code":"cpa_over_target","params":{"cpa":15200}}, {"code":"cv_below_target","params":{"cv":18}}]
    • narrative: the overall Goal-health verdict (on-track / at-risk / off-track) and what you propose next, at most 400 characters — the tool refuses a longer one rather than truncating it (a sentence cut in half is worse than a long one). Do not restate the figures and do not list the findings here: numbers belong in totals, findings in flags.

    This is best-effort: if mureo_state_report_set is unavailable (e.g. a pure file-mode host without the context MCP), skip it silently — the rest of this skill still works.

IMPORTANT: When updating Goal "Current" values in STRATEGY.md, ask for approval first.

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.