Not in the top 1,000 by GitHub stars

workmagicio/workmagic-agent-plugin

Ask your WorkMagic marketing data anything — attribution, lift tests and budget plans in Claude, ChatGPT, Codex, Cursor, Copilot and Gemini.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/attribution-anomaly-diagnosis/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/attribution-custom-dimension/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/attribution-data-query/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/attribution-edge-routing/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/attribution-intent-clarification/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/attribution-model-comparison/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/lift-test-readout/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/mbo-create-scenario/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

skills/mbo-read-scenario/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → ef1c5166a62f

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit ef1c5166a62ffcabc8092680c339e8e424b6a1f7

git clone --filter=blob:none --no-checkout https://github.com/workmagicio/workmagic-agent-plugin.git .hotskills/workmagicio-workmagic-agent-plugin && git -C .hotskills/workmagicio-workmagic-agent-plugin checkout --detach ef1c5166a62ffcabc8092680c339e8e424b6a1f7 # Copy each selected skill directory from .hotskills/workmagicio-workmagic-agent-plugin into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/workmagicio/workmagic-agent-plugin.git .hotskills/workmagicio-workmagic-agent-plugin && git -C .hotskills/workmagicio-workmagic-agent-plugin checkout --detach ef1c5166a62ffcabc8092680c339e8e424b6a1f7 # Copy each selected skill directory from .hotskills/workmagicio-workmagic-agent-plugin into .gemini/skills/<skill-name>/
9GitHub stars
Not availablestars in 7 days
9skills in this repository
11commits in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 5, 2026Nov 5, 20269

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

attribution-anomaly-diagnosis

When your agent uses it

Diagnose "why" questions about attribution anomalies — attribution=0 (no attributed orders), and sudden drops, spikes or retroactive changes in attributed numbers. Do NOT use for "show me numbers" — that's attribution-data-query.

What it loads into context

Frontmatter

226 tokens

Always available to the agent

SKILL.md

2,697 tokens

When the skill is activated

Reference documents

4,368 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 1. Purpose
  2. 2. When to trigger
  3. 3. Inputs
  4. 4. SOP
  5. 5. Tools used
  6. 6. Output format
  7. 7. CRITICAL rules (top 8 — full list in references/failure-modes.md)
  8. 8. Edge cases
  9. 9. Related skills

Files

  • ../../.claude-plugin/marketplace.jsonasset419 bytes
  • ../../.claude-plugin/plugin.jsonasset689 bytes
  • ../../assets/logo.pngasset77,840 bytes
  • SKILL.mdcore10,709 bytes
  • examples/example-A-meta-roas-drop.mddoc2,951 bytes
  • references/basic-checks.mddoc2,439 bytes
  • references/edge-cases.mddoc816 bytes
  • references/failure-modes.mddoc1,439 bytes
  • references/fallback-structure.mddoc915 bytes
  • references/model-branches.mddoc4,244 bytes
  • references/output-template.mddoc3,047 bytes
  • references/scenario-snippets.mddoc2,225 bytes
  • templates/01-scope-lookup.sqlasset2,148 bytes
  • templates/02-spend-vs-attribution.sqlasset977 bytes
  • templates/03-measurement-readiness.sqlasset477 bytes
  • templates/04-utm-health.sqlasset720 bytes
  • templates/05-click-distribution.sqlasset1,210 bytes
  • templates/06-dda-vs-anyclick.sqlasset982 bytes
  • templates/07-lift-test-results.sqlasset726 bytes
Read SKILL.md

## 1. Purpose

Diagnose **"why" questions** about attribution anomalies — specifically **attribution = 0** (a tactic shows no attributed orders) and **attribution swings** (sudden drops / spikes / retroactive changes to historical numbers). 5-step diagnostic tree → internal report + client-facing explanation.

> **Shared conventions (canonical elsewhere — don't re-derive):** attribution model default + aliases and sales-platform scope + measurement identity live in **`attribution-data-query`** (`references/attribution-model.md`, `references/sales-platform-scope.md`); follow those (load the `attribution-data-query` skill from this plugin if it isn't loaded). Note this skill reads MMM-calibrated measures (`calibrated_*`) for some checks — a *different* measure from the `attr_*` the other skills use; keep them clearly labeled so a $ figure here is never confused with an attributed-sales figure. (Open question flagged to DS — see the team doc.)

**Do NOT use this skill for "show me the numbers" queries** — those belong to `attribution-data-query`.

## 2. When to trigger

Trigger when user is asking **why** attribution looks wrong, not just **what** the numbers are.

**Do NOT trigger**:
View the complete source on GitHub

Skills included

  • attribution-anomaly-diagnosis
  • attribution-custom-dimension
  • attribution-data-query
  • attribution-edge-routing
  • attribution-intent-clarification
  • attribution-model-comparison
  • lift-test-readout
  • mbo-create-scenario
  • mbo-read-scenario

Repository facts

License
MIT
Created
Nov 5, 2026
Last pushed
Nov 6, 2026
Forks
0
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Show all 98 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "WorkMagic",     "url": "https://workmagic.io"
  • Network accessline 4
    "name": "WorkMagic",     "url": "https://workmagic.io"   },
  • Network accessline 5
    "url": "https://workmagic.io"

.claude-plugin/plugin.json

  • Network accessline 7
    "author": {     "name": "WorkMagic",     "url": "https://workmagic.io"
  • Network accessline 8
    "name": "WorkMagic",     "url": "https://workmagic.io"   },
  • Network accessline 9
    "url": "https://workmagic.io"
  • Network accessline 10
    },   "homepage": "https://workmagic.io",   "license": "MIT",
  • Network accessline 11
    "homepage": "https://workmagic.io",
  • Network accessline 12
    "license": "MIT",   "privacyPolicyUrl": "https://workmagic.io/privacy",   "keywords": [
  • Network accessline 13
    "privacyPolicyUrl": "https://workmagic.io/privacy",

skills/attribution-anomaly-diagnosis/references/model-branches.md

  • Network accessline 64
    | `test_end_date` within 0–30 days before `anomaly_start` | Overlaps anomaly window — very likely the trigger | | `LIFT_PCT` ≈ 0 or very low | Test concluded near-zero incrementality → iDDA cuts weight sharply | | `NC_IROAS` noticeably lowe
  • Network accessline 65
    | `LIFT_PCT` ≈ 0 or very low | Test concluded near-zero incrementality → iDDA cuts weight sharply | | `NC_IROAS` noticeably lower than previous test | Calibration was pulled down; NC attribution drops with it | | `auto_apply = 1` | Result a
  • Network accessline 66
    | `NC_IROAS` noticeably lower than previous test | Calibration was pulled down; NC attribution drops with it |

skills/attribution-custom-dimension/SKILL.md

  • Network accessline 28
    This skill detects NC state, guides configuration when needed in business language, and continues the original query after configuration. **The user should rarely (ideally never) have to leave the chat to set up NC themselves.**
  • Network accessline 40
    - Dimension is already a built-in field (`ads_platform`, `campaign_name`, `tactic_name`, etc.) → `attribution-data-query` - Dimension is already an NC-derived property the tenant has configured → `attribution-data-query` (just use the prope
  • Network accessline 42
    - User is asking about NC configuration in general ("how does NC work?") → answer from `database-query-ask` without entering this skill
  • Network accessline 48
    | `business_term` | Required | User's natural-language label (e.g., "audience", "region", "brand"). Preserve as candidate propertyName — rephrase later if the tenant already has a slightly different name. | | `nc_state` | Detected, not aske
  • Network accessline 49
    | `nc_state` | Detected, not asked | One of: **A) configured + property exists**, **B) configured + property missing**, **C) not configured at all**. Determined by `naming-convention-list` + `dashboard-metrics-list`. | | `tenantId` | Requir
  • Network accessline 50
    | `tenantId` | Required for tool calls | Pass to `dashboard-metrics-list` for tenant-specific NC propertyNames. Pass to `naming-convention-list` to read existing rules. |
  • Network accessline 51
    | `original_query` | Required | The full attribution-data-query intent the user came in with (metric, time range, filters). Preserve so we can pick it up after NC config completes. |
  • Network accessline 55
    **Step 1: Detect NC state** — two parallel calls:
  • Network accessline 57
    1. `dashboard-metrics-list` with `tenantId` → list of available propertyNames (built-in + NC-derived) 2. `naming-convention-list` with `tenantId` → existing NC rules (separators, position, property mappings)
  • Network accessline 58
    2. `naming-convention-list` with `tenantId` → existing NC rules (separators, position, property mappings)
  • Network accessline 62
    | **State** | **How to detect** | **Next step** | |-|-|-| | **A. Configured + property exists** | Requested term (fuzzy match, case-insensitive) appears in `dashboard-metrics-list` propertyNames | Use the propertyName **exactly as returned 
  • Network accessline 63
    |-|-|-| | **A. Configured + property exists** | Requested term (fuzzy match, case-insensitive) appears in `dashboard-metrics-list` propertyNames | Use the propertyName **exactly as returned (case-sensitive)** and route to `attribution-data-
  • Network accessline 64
    | **A. Configured + property exists** | Requested term (fuzzy match, case-insensitive) appears in `dashboard-metrics-list` propertyNames | Use the propertyName **exactly as returned (case-sensitive)** and route to `attribution-data-query`. 
  • Network accessline 65
    | **B. Configured + property missing** | `naming-convention-list` has existing rules, but the requested term doesn't appear in the propertyName set | Step 2 — add one rule to the existing NC |
  • Network accessline 66
    | **C. Not configured at all** | `naming-convention-list` returns empty | Step 3 — set up NC from scratch |
  • Network accessline 83
    **Step 3 [State C]: Set up NC from scratch**
  • Network accessline 102
    | **Tool** | **Required?** | **Purpose** | |-|-|-| | `database-query-ask` | Required (first) | NC schema patterns + Cube.dev syntax + `ctx` timestamp for any SQL (sample pull + sanity check) |
  • Network accessline 103
    |-|-|-| | `database-query-ask` | Required (first) | NC schema patterns + Cube.dev syntax + `ctx` timestamp for any SQL (sample pull + sanity check) | | `dashboard-metrics-list` | Required | List propertyNames for this tenant (built-in + NC)
  • Network accessline 104
    | `database-query-ask` | Required (first) | NC schema patterns + Cube.dev syntax + `ctx` timestamp for any SQL (sample pull + sanity check) |
  • Network accessline 105
    | `dashboard-metrics-list` | Required | List propertyNames for this tenant (built-in + NC). | | `naming-convention-list` | Required | Read existing NC rules to determine State A / B / C | | `naming-convention-separators-get` | Conditional (
  • Network accessline 106
    | `naming-convention-list` | Required | Read existing NC rules to determine State A / B / C |
  • Network accessline 107
    | `naming-convention-separators-get` | Conditional (State C) | Detect what separators the tenant's campaign names use, before proposing a rule | | `naming-convention-create` | Conditional (B + C) | Create NC rule after user confirmation. | 
  • Network accessline 108
    | `naming-convention-create` | Conditional (B + C) | Create NC rule after user confirmation. |
  • Network accessline 109
    | `naming-convention-update-or-delete` | Conditional (State B) | Update existing NC ruleset to add the new property |
  • Network accessline 116
    - **State A (silent path)**: no NC interaction visible to user — just answer the original query
  • Network accessline 125
    - **One confirmation question max**; never ask multi-question forms - **Promise the follow-through** ("I'll pull the audience-level ROAS you asked for") so user doesn't worry about losing context - **Use the user's term** as the property na
  • Network accessline 127
    - **Use the user's term** as the property name unless their NC already has a different name for it
  • Network accessline 132
    2. **Always sanity-check after applying** — if most rows are NULL, surface and adjust; never silently hand off bad data 3. **Never silently substitute a nearby property** — if user asked for "audience" and tenant only has "segment", don't q
  • Network accessline 133
    3. **Never silently substitute a nearby property** — if user asked for "audience" and tenant only has "segment", don't query "segment" without telling them 4. **Never send user to UI to configure NC themselves** — the skill exists precisely
  • Network accessline 134
    4. **Never send user to UI to configure NC themselves** — the skill exists precisely so they don't have to
  • Network accessline 146
    - **Downstream (always)**: `attribution-data-query` — handoff after configuration completes, or directly when State A - **Upstream**: `attribution-intent-clarification` (when the business term itself is ambiguous, e.g., "by region" could me
  • Network accessline 147
    - **Upstream**: `attribution-intent-clarification` (when the business term itself is ambiguous, e.g., "by region" could mean campaign tag vs sales region) - **Sibling**: `attribution-anomaly-diagnosis` (after slicing by NC property, user ma
  • Network accessline 148
    - **Sibling**: `attribution-anomaly-diagnosis` (after slicing by NC property, user may ask "why is this segment down?")

skills/attribution-custom-dimension/examples/example-A-audience-state-c.md

  • Network accessline 1
    ## Example A — "ROAS by audience" (State C, NC from scratch)
  • Network accessline 3
    The first-time experience: a tenant that's never set up NC asks for a query that needs an NC property.
  • Network accessline 11
    #### Step 1 — Detect NC state
  • Network accessline 13
    - Call `dashboard-metrics-list` with tenantId. Result: built-in propertyNames only — no "Audience", no "audience", no fuzzy match. - Call `naming-convention-list` with tenantId. Result: **empty** — no existing NC rules.
  • Network accessline 14
    - Call `naming-convention-list` with tenantId. Result: **empty** — no existing NC rules.
  • Network accessline 19
    Ask `database-query-ask` for NC schema. Get `ctx`.
  • Network accessline 59
    #### Step 5 — Apply NC rule

skills/attribution-custom-dimension/references/edge-cases.md

  • Network accessline 7
    | Campaign names look inconsistent — no clear pattern | Tell the user honestly: "Your campaign names don't follow a consistent pattern, so I can't extract this reliably. Best path: standardize the naming going forward, and we can revisit th
  • Network accessline 8
    | Most rows resolve to NULL after applying the rule (sanity check fails) | Don't hand off. Surface the failure: "The rule I tried only caught X% of your campaigns. Here are the ones it missed — want me to adjust?" Offer 1-2 alternative inte
  • Network accessline 9
    | User asks to set up NC without an underlying data question | Route to a general NC setup flow (could be a separate skill or product onboarding); this skill is data-query-driven. Don't run setup steps without a pending query to answer afte
  • Network accessline 11
    | User wants to remove or rename an existing NC property | Admin-level. Confirm explicitly with extra UX confirmation ("This will affect all dashboards using this property"), then use `naming-convention-update-or-delete`. |

skills/attribution-custom-dimension/references/failure-modes.md

  • Network accessline 3
    - **Silently substitute a nearby property** — if user asked for "audience" and tenant only has "segment", don't just query "segment" without telling them - **Send the user to the UI to configure NC themselves** — the skill exists precisely 
  • Network accessline 4
    - **Send the user to the UI to configure NC themselves** — the skill exists precisely so they don't have to. Only escalate to UI if config is genuinely impossible from chat (e.g., needs admin permissions the agent doesn't have).
  • Network accessline 13
    - **Skip `database-query-ask` before SQL** — required for `ctx` timestamp on both the sample pull and the sanity check - **Treat State A as needing configuration** — if the propertyName already exists, just use it; don't show the user a con
  • Network accessline 15
    - **Propose all NC properties at once on State C** — focus on the term the user just asked about; other properties can be added later

skills/attribution-custom-dimension/references/output-template.md

  • Network accessline 7
    1. **Brief intro** (1-2 sentences). State B: short, no concept introduction. State C: explain NC in business language.

skills/attribution-custom-dimension/references/state-routing.md

  • Network accessline 1
    ## NC state routing (detailed)
  • Network accessline 7
    This is the happy path. The tenant has already configured an NC rule, and the propertyName the user asked for (or a fuzzy match) is in `dashboard-metrics-list` response.
  • Network accessline 9
    - Use the propertyName **exactly as returned (case-sensitive)** - Hand off directly to `attribution-data-query` - **No NC interaction visible to user** — they just see the data answer to their original ask
  • Network accessline 10
    - Hand off directly to `attribution-data-query` - **No NC interaction visible to user** — they just see the data answer to their original ask - If the user's term doesn't exactly match (e.g., user says "Region", tenant has "region") — use t
  • Network accessline 11
    - **No NC interaction visible to user** — they just see the data answer to their original ask
  • Network accessline 16
    Tenant has existing NC rules but not for the term the user just asked about. They've been through this process before — keep the explanation short.

skills/attribution-custom-dimension/templates/01-sample-campaign-names.sql

  • Network accessline 1
    -- Step 2/3: Pull 5-10 real campaign names to read before proposing an NC rule

skills/attribution-custom-dimension/templates/02-nc-sanity-check.sql

  • Network accessline 1
    -- Step 4: Sanity-check that the new NC property resolves to non-empty values for most rows

skills/attribution-custom-dimension/templates/proposal-message.md

  • Network accessline 20
    **State B (NC exists, this property missing)**:
  • Network accessline 24
    **State C (NC not configured)**:

skills/attribution-data-query/SKILL.md

  • Network accessline 61
    | dataset | Required | One of: channel_attribution (by channel) / ads_attribution (by campaign/ad) / creative_attribution (by creative) / order_sales (raw orders, no attribution split). Infer from user phrasing; never ask user to pick a Dat
  • Network accessline 62
    | metric | Required | Extract from user input. Always call dashboard-metrics-list to validate the field name before using it. Never guess. | | dimension | Required | Validate against dashboard-metrics-list. For ads_attribution / creative_at
  • Network accessline 63
    | dimension | Required | Validate against dashboard-metrics-list. For ads_attribution / creative_attribution with NC dimensions (Product Group, Asset Type, Creator name, etc.), pass tenantId to fan out tenant-specific propertyNames. |
  • Network accessline 96
    - Confirm metric / dimension field names exist on the chosen DataSet - For aliases ("POAS", "return on ad spend") → find closest match. If none, ask once. - **For NC dimensions on `ads_attribution` / `creative_attribution`**: pass `tenantId
  • Network accessline 98
    - **For NC dimensions on `ads_attribution` / `creative_attribution`**: pass `tenantId` to fan out tenant-specific propertyNames (e.g., `Product Group`, `Asset Type`). Use propertyName **exactly as returned (case-sensitive)**.
  • Network accessline 143
    | dashboard-metrics-list | Required | Validate metric / dimension field names exist on the chosen DataSet. | | database-query-run | Required | Execute the Cube.dev SQL query. | | tenant-list | Optional | Look up tenantId when needed to fan 
  • Network accessline 145
    | tenant-list | Optional | Look up tenantId when needed to fan out NC dimensions on dashboard-metrics-list. |

skills/attribution-data-query/references/failure-modes.md

  • Network accessline 6
    - **Use raw warehouse SQL instead of Cube.dev syntax** — `database-query-run` only accepts Cube.dev SQL - **Use `attribution_model` as a SQL column** — the actual dimension is `attr_model_name` - **Hard-code `propertyNames` for NC dimension
  • Network accessline 7
    - **Use `attribution_model` as a SQL column** — the actual dimension is `attr_model_name` - **Hard-code `propertyNames` for NC dimensions** — they are tenant-specific and case-sensitive; always pass `tenantId` to `dashboard-metrics-list` fi
  • Network accessline 8
    - **Hard-code `propertyNames` for NC dimensions** — they are tenant-specific and case-sensitive; always pass `tenantId` to `dashboard-metrics-list` first

skills/attribution-intent-clarification/SKILL.md

  • Network accessline 104
    - **Downstream**: `attribution-data-query` (after resolution, most common) - **Route to instead**: `attribution-anomaly-diagnosis` (for "why" questions), `attribution-model-comparison` (for "X vs Y model" questions), `attribution-edge-routi
  • Network accessline 106
    - **Sibling**: `attribution-custom-dimension` (when ambiguity is "by <business term>" that needs NC config)

skills/attribution-intent-clarification/references/ambiguity-types.md

  • Network accessline 8
    | **Scope** | "How are my ads doing?" | Which channels? Which time window? Compared to what? | | **Comparison** | "Compare last month to this month" | Which metric? Which dimension? Channel-level or campaign-level? | | **Subject** | "Look a
  • Network accessline 10
    | **Subject** | "Look at my best campaign" | Best by what (ROAS / sales / NC orders)? In what window? |

skills/lift-test-readout/references/output-templates.md

  • Network accessline 93
    - ❌ Blaming the channel (“Meta underperformed”) — describe what the data shows - ❌ Owning cross-channel allocation decisions in prose — hand off to MBO - ❌ Inventing fields not returned by the readout tool (e.g. fabricating new-customer cou
  • Network accessline 95
    - ❌ Inventing fields not returned by the readout tool (e.g. fabricating new-customer counts when only NC orders are present, or attribution-model breakdowns that are out of scope here)
  • Network accessline 131
    - ❌ Saying “cut Meta” — always “reallocate toward higher-mROAS” / “shift budget” - ❌ Evaluative adjectives (strong, solid, weak, meaningful, substantial, remarkable, considerable, robust, compelling, impressive). Use neutral descriptors tie
  • Network accessline 133
    - ❌ Calling NC iROAS < \$1 a problem unprompted — it’s normal. First-purchase revenue typically doesn’t cover full CAC.

skills/lift-test-readout/references/sop-detail.md

  • Network accessline 23
    - **Frame stakes in dollars where possible.** Dollar amounts beat bare percentages where it fits. “\$11k incremental sales on \$11k ad spend” lands harder than “13.5% lift.” - **Acknowledge what wasn’t measured.** Meta-only test? Don’t spec
  • Network accessline 24
    - **Acknowledge what wasn’t measured.** Meta-only test? Don’t speculate about Google or TikTok. Amazon halo not in scope? Say so when the user asks decision questions. - **NC ROAS / NC iROAS < \$1.00 is normal.** First-purchase revenue typi
  • Network accessline 25
    - **NC ROAS / NC iROAS < \$1.00 is normal.** First-purchase revenue typically doesn’t cover full CAC. Don’t flag it as a problem unless the user explicitly framed it that way.

skills/lift-test-readout/references/terminology.md

  • Network accessline 50
    |-|-| | Per-order count | ≥ 1,000 → 1,234; < 1,000 → integer 146 | | ROAS / iROAS / NC iROAS values | \$X.XX always 2 decimals — \$2.10, \$0.58 |
  • Network accessline 51
    | Per-order count | ≥ 1,000 → 1,234; < 1,000 → integer 146 | | ROAS / iROAS / NC iROAS values | \$X.XX always 2 decimals — \$2.10, \$0.58 | | Percentages | X.X% one decimal — 13.5%, 0.2% |
  • Network accessline 52
    | ROAS / iROAS / NC iROAS values | \$X.XX always 2 decimals — \$2.10, \$0.58 |

skills/mbo-create-scenario/examples/example-october-budget.md

  • Network accessline 83
    *"Scenario created — \[Open in MBO →\](https://app.workmagic.io/...). Recommended allocation: Meta \$310K (+12% vs baseline), Google \$190K (−15%). Expected sales lift: \~+\$240K vs reference allocation. Google_Brand_Search and Meta_Retarge

skills/mbo-read-scenario/SKILL.md

  • Network accessline 173
    **Reference docs**: [Media Budget Optimizer knowledge base](https://mc10lxkn1j7.sg.larksuite.com/wiki/R59swl3L2iW4BNkGq2Kle3jdgeb) — Reading Your Results + FAQ.

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 86 facts

and 36 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/attribution-anomaly-diagnosis/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/attribution-anomaly-diagnosis/SKILL.md.cursor/skills/<skill-name>/
Gemini CLINativeManifest gemini-extension.json.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/attribution-anomaly-diagnosis/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/attribution-anomaly-diagnosis/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.