analyze-performance
Installation
SKILL.md
analyze-performance
What you get
- The Monday report — saved to
reports/performance/<YYYY-MM-DD>.mdand shown in chat, the same shape every week (references/monday-report.md); run-paid-campaigns decides and acts on its recommendations. - Learnings written to the brand brain after the marketer has seen and kept them; ended tests' measured results saved as readouts.
- A run record for next week (
references/run-memory.md): the per-channel and per-ad scorecards with the trend since last run, each call with its owner, review date and test, and what happened to last week's calls — saved to the brand, so "what worked" and "what to make next" rest on weeks of history, not one week. - Monthly unit-economics read for plan-campaign's replan; daily pulse on request, exception-only (
references/monthly-and-pulse.md).
Before you start
- Setup first: do the
marketing-guideskill (../marketing-guide/SKILL.md) §1–2 (connect, brand, brain read) before anything else; the job line is "read your results". This playbook offers local mode (marketing-guide §5): with no GooseWorks it reads through the marketer's connectors, else exports and screenshots, and keeps the contract, reports and run records in the local folder. A missing connection is never a blocker: say in one line what this read can and can't see, and go on. - Read the brain and the plan (free; local mode:
references/local-mode.mdinstead). Brain chapters: 18 "How we count results", 20 "Our plan" (targets, decisions, experiments), 22 "Everything we have made and run", 23 "What is working" (readouts, worn-out angles, lessons). Fallback path:brand_readsectionssummary, kit, products, learnings, onboarding, accounts, andknowledge_search["learning"]for past results. Thengooseworks:campaign_read— live briefs (Economics, targets, Test plan, Measurement plan, Replan triggers, the change-log slug in Status); workspace (gooseworks:file_list/file_read):reports/performance/definitions.md, the latest dated report and its Decisions,ads/campaigns/<slug>/state.md(frontmattermeta_push_ids, health line, open recommendations) and the### YYYY-MM-DD — <title>blocks ofdecisions.md(what was actually done — written by run-paid-campaigns and the server), make-static-ads' batch filesads/batches/<YYYY-MM-DD>-<slug>.md(creative id → angle, hook, test; picks),lifecycle/program.md(which flows exist), the newestresearch/competitors/watch/<YYYY-MM-DD>.md(line 2), and research-market's "What people are saying" section — in the newestresearch/market/<D>-read.md(mentions, sentiment, trends, risks; check the section's own window line before treating it as this week's, and read share of voice only if it is there). - Load the last runs — the Start steps of the
run-memoryskill (../run-memory/SKILL.md) for this job (weekly performance read,monthly readordaily pulse;references/run-memory.md): the last record, plus up to four weekly records back for the scorecards and angle history; every earlier call checked against a source; run-paid-campaigns' newest run record for each campaign (its money moves and verdicts). No record → say it's the first read; this run's numbers become the baseline. - Company type and referee —
references/measurement-contract.md§1. The type decides the referee, the ranking metric, the cadence (B2B under ~20 SQLs a month: weekly = leading indicators, pipeline monthly; services: monthly) and the inputs. - One message, once; nothing asked mid-run. Its contents and the export cheat sheet are
references/measurement-contract.md§4 (minimum useful read first, history once, big exports in a hosted chat). Add what only this run knows: on the first run, the contract draft with defaults pre-filled (ask only the number and target, margin %, timezone — never technical settings), the roster to confirm, and which store, CRM, billing or analytics tool holds the referee unless the brain or a listed connector shows it (marketing-guide §3, "The marketer's own tools"; with none, that leg runs claims-only meanwhile); exports named in the last record's "Not checked" line, by name; the paid run's needs (references/run-memory.md§ What the one input message also asks for). Missing items are "not checked this week"; a missing referee → claims-only mode (references/measurement-contract.md§5).
GooseWorks reads (connected only): gooseworks:meta_read performance view (Goose ads only, trailing windows ranked by spend — to identify Goose ads and cross-check, not as the week's totals); gooseworks:social_account_list + gooseworks:social_analytics_get (the brand's TikTok/Instagram accounts — other platforms come from the marketer); gooseworks:ads_creative_read (statics' lower-case tags, e.g. angle:a-07, picked; the batch file is the fallback when tags are missing) and gooseworks:video_read (videos' angle and hook names; a video without them is unannotated; an older ads/videos/<project_id>.md note is read only if it exists).