analyze-performance

Installation
SKILL.md

analyze-performance

What you get

  • The Monday report — saved to reports/performance/<YYYY-MM-DD>.md and 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

  1. Setup first: do the marketing-guide skill (../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.
  2. Read the brain and the plan (free; local mode: references/local-mode.md instead). 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_read sections summary, kit, products, learnings, onboarding, accounts, and knowledge_search ["learning"] for past results. Then gooseworks: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 (frontmatter meta_push_ids, health line, open recommendations) and the ### YYYY-MM-DD — <title> blocks of decisions.md (what was actually done — written by run-paid-campaigns and the server), make-static-ads' batch files ads/batches/<YYYY-MM-DD>-<slug>.md (creative id → angle, hook, test; picks), lifecycle/program.md (which flows exist), the newest research/competitors/watch/<YYYY-MM-DD>.md (line 2), and research-market's "What people are saying" section — in the newest research/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).
  3. Load the last runs — the Start steps of the run-memory skill (../run-memory/SKILL.md) for this job (weekly performance read, monthly read or daily 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.
  4. 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.
  5. 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).

Installs
5
GitHub Stars
1.3K
First Seen
Oct 26, 2026