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
npx -y skills add logly/mureo --skill goal-reviewAssembled 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.mdfor 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
onboardskill first) - STATE.json (run
/sync-statefirst)
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.
-
Establish today: call
mureo_state_getfirst, on every host (including Claude Code, where you would otherwiseReadthe file) and takeserver_nowfrom 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.*.periodandaction_logtimestamps are history, never evidence of what day it is now. Never writeserver_nowinto STATE.json: it is a response field, and a persisted copy becomes tomorrow's stale "today". -
Load context: Read STRATEGY.md (all Goal sections, Data Sources) and STATE.json (the same
mureo_state_getresponse from step 0 on MCP hosts). -
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. -
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"
-
Evaluate progress for each Goal:
- Compare current value against target
- Calculate % of target achieved
- Calculate days remaining until deadline — the Goal's
Deadlineminusserver_now's date - Assess trajectory: on-track / at-risk / off-track
-
Present Goal dashboard:
Goal Target Current Progress Deadline Status 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
-
Consult evidence: Before recommending actions, check
action_logfor 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
-
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
-
Update STATE.json:
- Log the review to
action_logwith a summary of Goal statuses - Update Current values in STRATEGY.md Goal sections if approved
- Log the review to
-
Persist the report summary (best-effort): Call
mureo_state_report_setwithreport="goal"and a concisesummaryobject so the read-only dashboard can render this review without re-running you. Follow this convention:generated_at: ISO 8601 timestamp of this run — useserver_nowperiod: the assessment window or "as of" date — the "as of" date isserver_now's datetotals: 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. Omittotalsentirely if this run gathered no account-level figures.kpis: per-Goal numbers (target, current, % of target achieved) — the breakdown, not the headline rowflags: 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 ofgoals_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 ofaction/watch/info/positive(omit to take the code's default —info/positivekeep informational and good-news flags visually distinct from alarms).params: an object holding the DETAIL (target, current, % of target). Keep detail inparams, NOT baked into the code — write{"code":"cpa_over_target","params":{"cpa":15200}}, never a slug likegoal_cpa_off_track.- For a finding outside the vocabulary use
{code:"custom", severity, label}wherelabelis a string or a{"ja":…,"en":…}map. Unknown non-customcodes 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 intotals, findings inflags.
This is best-effort: if
mureo_state_report_setis 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.