From mureo
Manages STRATEGY.md and STATE.json files for strategy-driven ad operations. Provides structured sections for personas, USPs, brand voice, and campaign state.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mureo:_mureo-strategyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> PREREQUISITE: Read `../_mureo-shared/SKILL.md` for auth, global flags, and security rules.
PREREQUISITE: Read
../_mureo-shared/SKILL.mdfor auth, global flags, and security rules.
mureo uses two local context files to maintain business strategy and campaign state:
| File | Format | Purpose |
|---|---|---|
STRATEGY.md | Markdown | Business strategy, personas, USP, brand voice |
STATE.json | JSON | Campaign configuration snapshots |
These files live in the project working directory and are read by AI agents to make strategy-aligned advertising decisions.
STRATEGY.md is a Markdown file with ## Section headings. Each section maps to a context_type:
| Section Heading | context_type | Purpose |
|---|---|---|
## Persona | persona | Target customer persona |
## USP | usp | Unique selling proposition |
## Target Audience | target_audience | Audience demographics and behavior |
## Brand Voice | brand_voice | Tone, style, and language guidelines |
## Market Context | market_context | Competitive landscape and market trends |
## Operation Mode | operation_mode | Current operation mode (see below) |
## Custom: <title> | custom | Freeform custom strategy entry |
## Deep Research: <title> | deep_research | Results from website/competitor research |
## Sales Material: <title> | sales_material | Extracted info from sales documents |
## Goal: <title> | goal | Quantitative marketing goal with target, deadline, and priority |
# Strategy
## Persona
**Name:** Tanaka-san (Marketing Manager)
**Age:** 35-45
**Role:** In-house marketing at mid-size SaaS company
**Goals:** Improve lead quality, reduce CPA below 8,000 yen
**Pain Points:** Limited budget, too many low-quality leads from broad targeting
**Decision Process:** Data-driven, needs ROI justification for budget increases
## USP
- Only platform that automates both Google Ads and Meta Ads from Slack
- AI agent handles routine optimization, freeing up 10+ hours/week
- Built-in budget safety guards prevent overspend
## Target Audience
**Primary:** SaaS marketing managers at companies with 50-500 employees
**Secondary:** Digital agency account managers handling 5+ client accounts
**Geo:** Japan (primary), US/EU (secondary)
**Budget Range:** 500,000 - 5,000,000 JPY/month ad spend
## Brand Voice
- Professional but approachable
- Data-backed claims, no hype
- Use concrete numbers over vague superlatives
- Japanese: polite form (desu/masu), avoid overly casual language
## Market Context
- Competitor A focuses on Google Ads only (no Meta Ads integration)
- Competitor B has Meta Ads but no Slack integration
- Market trend: increasing demand for AI-powered ad optimization
- Budget pressure: clients seeking efficiency gains, not just scale
## Operation Mode
EFFICIENCY_STABILIZE
## Custom: Seasonal Strategy
- Q1 (Jan-Mar): Budget conservative, focus on efficiency
- Q2 (Apr-Jun): Ramp up for spring campaigns
- Q3 (Jul-Sep): Peak season, maximize budget utilization
- Q4 (Oct-Dec): Holiday campaigns, shift to Meta Ads for brand awareness
## Goal: Reduce CPA below 5000 JPY
- Target: CPA < 5,000 JPY
- Deadline: 2026-06-30
- Current: CPA 6,200 JPY
- Platform: Google Ads, Meta Ads
- Priority: HIGH
## Goal: Increase monthly leads to 100
- Target: Leads >= 100/month
- Deadline: 2026-05-31
- Current: 72 leads/month
- Platform: Google Ads
- Priority: MEDIUM
## Deep Research: example.com
**Service Overview:** Cloud-based project management tool for remote teams
**Key Features:** Real-time collaboration, Gantt charts, resource allocation
**Pricing:** Freemium model, Pro plan at $15/user/month
**Competitors:** Asana, Monday.com, Notion
## Heading (h2 level)Persona, USP, etc.)Prefix: Title format# Strategy (h1 level)Goal sections define quantitative marketing objectives. Each goal uses the ## Goal: <title> heading and contains bullet-point fields:
| Field | Required | Description |
|---|---|---|
Target | Yes | Measurable success criterion (e.g., CPA < 5,000 JPY) |
Deadline | Yes | Target date in YYYY-MM-DD format |
Current | No | Current baseline value for tracking progress |
Platform | No | Applicable ad platforms (e.g., Google Ads, Meta Ads) |
Priority | No | HIGH, MEDIUM, or LOW |
Multiple goals can coexist in a single STRATEGY.md. Agents should reference goals when making optimization decisions to ensure actions are aligned with measurable business objectives.
The Operation Mode section contains one of 7 predefined modes that control agent behavior:
| Mode | When to Use |
|---|---|
ONBOARDING_LEARNING | Genuinely new campaigns still in their learning period — set this from campaign maturity (age + accumulated conversions), NOT just because mureo was newly set up on an existing long-running account |
TURNAROUND_RESCUE | Campaigns with poor performance needing rescue |
SCALE_EXPANSION | Campaigns ready to scale up |
EFFICIENCY_STABILIZE | Mature campaigns optimizing for efficiency |
COMPETITOR_DEFENSE | Increased competitive pressure detected |
CREATIVE_TESTING | Focus on ad creative testing and iteration |
LTV_QUALITY_FOCUS | Prioritize lead/conversion quality over volume |
{
"version": "2",
"last_synced_at": "2026-04-01T10:00:00+09:00",
"platforms": {
"google_ads": {
"account_id": "1234567890",
"campaigns": [
{
"campaign_id": "111222333",
"campaign_name": "Brand Search - Tokyo",
"status": "ENABLED",
"bidding_strategy_type": "MAXIMIZE_CONVERSIONS",
"bidding_details": {"target_cpa": 5000},
"daily_budget": 8000.0,
"campaign_goal": "Lead generation for SaaS trial signups",
"notes": "Learning period ends ~April 5. Do not change bids."
}
]
}
},
"action_log": [
{
"timestamp": "2026-04-01T10:30:00+09:00",
"action": "Added 15 negative keywords",
"platform": "google_ads",
"campaign_id": "111222333",
"command": "/search-term-cleanup",
"summary": "Excluded informational queries misaligned with Persona",
"metrics_at_action": {"cpa": 5200, "conversions": 45, "clicks": 1200},
"observation_due": "2026-04-15"
}
]
}
| Field | Type | Required | Description |
|---|---|---|---|
campaign_id | string | Yes | Campaign identifier |
campaign_name | string | Yes | Human-readable name |
status | string | Yes | ENABLED, PAUSED, or REMOVED |
bidding_strategy_type | string | No | e.g., MAXIMIZE_CONVERSIONS, TARGET_CPA |
bidding_details | object | No | Strategy-specific details (target_cpa, target_roas, etc.) |
daily_budget | number | No | Daily budget in currency units |
device_targeting | array | No | Device bid modifiers |
campaign_goal | string | No | Business objective for this campaign |
notes | string | No | Important notes (learning period, restrictions, etc.) |
metrics | object | No | Latest performance snapshot — canonical vocabulary below |
campaigns[].metrics (per campaign) and platforms[<p>].totals (per-platform
rollup) use ONE shared field vocabulary so every skill, the reporting
dashboard, and any other STATE.json consumer agree on names and units. Write
these exact keys (lowercase); omit a key when the platform does not provide it.
| Key | Type | Unit / meaning |
|---|---|---|
spend | number | Cost in the account's currency units (NOT micros) |
impressions | integer | Impressions |
clicks | integer | Clicks |
conversions | number | Conversions (see result_indicator for what counts) |
cpa | number | Cost per conversion, currency units (spend / conversions) |
ctr | number | Click-through rate as a ratio (e.g. 0.024), not a percent string |
result_indicator | string | Meta only — what a "result/conversion" counts (e.g. link_click vs offsite_conversion.fb_pixel_lead) |
period | string | Window the numbers cover, e.g. LAST_30_DAYS |
fetched_at | string | ISO 8601 time the numbers were pulled (freshness) |
CV-definition rule (Meta): never aggregate conversions/CPA across campaigns
with different result_indicator values — link_click-optimized totals and
pixel_lead-optimized totals are different things. Group by result_indicator.
Google Ads has a single conversion definition, so result_indicator is omitted.
Platform-level: platforms[<p>].totals holds the same keys summed for that
platform (respecting the result_indicator grouping for Meta), and
platforms[<p>].metrics_period records the window the totals cover.
Per-period rollups: platforms[<p>].periods is an optional map keyed by a
canonical period token, each value a totals-shaped object using the SAME
vocabulary above — so the reporting dashboard can offer a period toggle. Use
these exact tokens (they are Google Ads date-range tokens):
| Token | Window | Written by |
|---|---|---|
YESTERDAY | The prior day | daily-check (runs daily) |
LAST_30_DAYS | Trailing 30 days | sync-state |
Write a platform's rollup with the mureo_state_platform_metrics_set tool on
hosts without filesystem access (Desktop / Cowork), or a direct file write in
Code mode: pass totals + metrics_period for the single most-recent window
and/or periods for the per-window map. periods is merged per window key, so
writing YESTERDAY never clobbers a prior LAST_30_DAYS bucket (and vice
versa); omitted fields preserve their existing value.
reports (top-level, optional) holds the latest agent-written summary per
report kind so the dashboard can show it without re-running the agent:
reports = {"daily": {...}, "weekly": {...}, "goal": {...}}. Each value is
{generated_at (ISO 8601), period, kpis (headline numbers using the vocabulary above), flags (list of notable items), narrative (short text)}. Written via
the mureo_state_report_set tool by daily-check / weekly-report /
goal-review.
| Field | Type | Required | Description |
|---|---|---|---|
timestamp | string | Yes | ISO 8601 timestamp of the action |
action | string | Yes | Description of the action taken |
platform | string | Yes | Platform the action was taken on |
campaign_id | string | No | Campaign affected |
command | string | No | Slash command that initiated the action |
summary | string | No | Human-readable summary |
metrics_at_action | object | No | Key metrics at the time of action, for outcome evaluation — use the same canonical vocabulary as metrics above (e.g. cpa, conversions, clicks) |
observation_due | string | No | ISO 8601 date when the outcome should be evaluated |
The metrics_at_action and observation_due fields enable evidence-based outcome evaluation. See skills/_mureo-learning/SKILL.md for the decision framework.
metrics_at_action and observation_due for later evaluationUsing the persona to write better ad copy:
Step 1: Read STRATEGY.md to understand the target persona
Step 2: Based on persona pain points, craft headlines that address them directly
Example persona pain point: "Limited budget, too many low-quality leads"
-> Headlines: "Reduce Wasted Ad Spend by 40%", "Get Better Leads, Not More Leads"
Step 3: Create the RSA ad (with Google Ads tools)
-> google_ads_ads_create {
headlines addressing persona pain points,
descriptions highlighting USP
}
Using USP to find high-intent keywords:
Step 1: Read STRATEGY.md USP section
Key differentiators: "Slack integration", "AI automation", "budget safety"
Step 2: Generate seed keywords from USP
-> google_ads_keywords_suggest {seed_keywords: ["slack ad management", "ai ad optimization", "ad budget automation"]}
Step 3: Review suggestions against target audience
Filter by relevance to the target audience segment
Step 4: Add selected keywords
-> google_ads_keywords_add {keywords: [...]}
Ensuring ad copy matches the brand voice:
Step 1: Read STRATEGY.md Brand Voice section
Rules: "Professional but approachable", "data-backed claims", "no hype"
Step 2: List current ads
-> google_ads_ads_list {customer_id, ad_group_id}
Step 3: Review each ad against brand voice rules
Flag: "Best Ad Platform Ever!" -> violates "no hype" rule
OK: "Reduce CPA by 30% with AI-Powered Optimization" -> data-backed, professional
Step 4: Update non-compliant ads (CONFIRM WITH USER)
-> google_ads_ads_update {headlines: [improved versions]}
Different modes guide different agent behaviors:
TURNAROUND_RESCUE mode:
Priority: Stop the bleeding
1. Check search terms for wasted spend
-> google_ads_search_terms_review {campaign_id, target_cpa}
2. Add negative keywords aggressively
3. Pause underperforming ad groups
4. Review budget allocation
SCALE_EXPANSION mode:
Priority: Grow while maintaining efficiency
1. Find new keyword opportunities
-> google_ads_keywords_suggest {seed_keywords}
2. Test new ad copy variations
3. Increase budgets on high-performing campaigns (confirm with user)
4. Expand targeting (new geographies, demographics)
ONBOARDING_LEARNING mode:
Priority: Let the algorithm learn, minimal changes
Applies to a campaign genuinely IN its learning period — not to a mature
campaign that mureo was simply set up on recently. If the campaign already
has accumulated conversions / history, it is NOT learning: switch the mode
(e.g. EFFICIENCY_STABILIZE) and analyze normally instead of withholding.
1. Confirm the campaign is actually learning (recent start, sparse conversions)
-> google_ads_campaigns_diagnose {customer_id, campaign_id}
2. If still learning: monitor performance, warn before budget/bid changes,
wait until the learning period completes before optimizing
3. If already mature: recommend updating Operation Mode and proceed
Using market context to respond to competitor moves:
Step 1: Read STRATEGY.md Market Context section
Known: Competitor A is Google-only, Competitor B has no Slack
Step 2: Check auction insights for competitor activity
-> google_ads_auction_insights_analyze {customer_id, campaign_id}
Step 3: If a new competitor appears or impression share drops:
- Check CPC trends for bidding pressure
-> google_ads_cpc_detect_trend {customer_id, campaign_id}
- Review device performance for competitor dominance patterns
-> google_ads_device_analyze {customer_id, campaign_id}
Step 4: Recommend strategic response based on market context
e.g., "Competitor A gained 5% impression share. Since they don't support
Meta Ads, recommend shifting 20% of budget to Meta to leverage
our cross-platform advantage."
notes field is valuable for tracking learning periods and restrictionslast_synced_at indicates data freshness; re-sync if staleBoth files can be committed to version control:
STRATEGY.md: Yes, contains business knowledgeSTATE.json: Optional, contains point-in-time snapshots (may change frequently)Do not commit ~/.mureo/credentials.json -- it contains secrets.
npx claudepluginhub logly/mureo --plugin mureoGenerates strategic paid advertising plans using industry templates for platform selection, campaign architecture, budgets, creatives, and roadmaps. Extracts brand context from websites or branding.md. Activates on 'ad plan' or 'campaign planning' queries.
Applies statistical thinking to marketing ad account decisions, distinguishing signal from noise and requiring evidence before strategy changes.
Orchestrates full campaign lifecycle from planning and budgeting through launch, UTM tracking, and post-mortem analysis. Activates automatically on campaign-related requests.