Skip to content
cccskills
FreePublished on GitHub

analyze-performance

Review weekly results across marketing channels using business measures such as store revenue, qualified pipeline, or retained users. Produce a report on what worked, why, tracking coverage, and what to make or test next, with platform-reported results clearly distinguished from business truth.

OriginalShow the original description

Weekly performance read across every channel we run: what worked, why, and what to make next, judged on the business's real number (store revenue, qualified pipeline, retained users), not platform claims. Use when: write my Monday report; how are my ads doing — which ad won?; are my ads actually making money (Meta says 4x ROAS but revenue is flat); why did sales drop this week; did the test win; is my tracking working; monthly numbers for the replan; anything on fire today. Not for acting on the recommendations (pausing, scaling, launching) — use run-paid-campaigns; not for replanning the budget — use plan-campaign.

gooseworks-ai/goose-skills1,272 stars(GitHub 1,272 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Prepare a weekly marketing performance report
  • Find which ads contributed to business results
  • Investigate a sales drop or tracking issue
  • Review a completed test or monthly performance

Files included (12)

  • SKILL.md15.0 KB
  • references/creative-and-channels.md7.0 KB
  • references/diagnosis.md5.5 KB
  • references/local-mode.md2.1 KB
  • references/measurement-contract.md10.3 KB
  • references/monday-report.md8.9 KB
  • references/monthly-and-pulse.md4.4 KB
  • references/revenue-join.md4.6 KB
  • references/run-memory.md14.7 KB
  • references/tests-and-learnings.md5.5 KB
  • skill.meta.json5.9 KB
  • tests/test-by-hand.md6.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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).

Steps

Route first. "Anything on fire today?" → run Before you start 1–3, then only the pulse in references/monthly-and-pulse.md — no input message, no contract. "Monthly numbers / replan" (or the first Monday of the month) → add the customer-level store export to this week's one input message, run the weekly read, then the monthly read. Everything else → the weekly read below.

  1. Hygiene, maturity, coverage — atom the analyze-performance-intake skill (../analyze-performance-intake/SKILL.md). On a first run, save the contract (confirmed, or as "draft — awaiting confirmation" if the marketer sent exports without confirming) to definitions.md and register it as a brand document through the save-to-brain skill (../save-to-brain/SKILL.md) (versioned: supersede); re-check the roster against the briefs and state.md and propose an amendment when a new channel appears. Strip test/wholesale/staff orders and renewals; net refunds; align timezones; equal-lag comparison; de-duplicate Goose ads against the export by ad id; save the input summary; write the coverage line over the roster.
  2. Business truth and the join — atom the analyze-performance-revenue-join skill (../analyze-performance-revenue-join/SKILL.md), references/revenue-join.md. The type's referee vs last week, the 4-week average and the same week last year (or "vs plan only" for a new brand); for DTC: MER (labelled DTC MER when retail exists), new-customer MER, nCAC, contribution after ads vs break-even; the overclaim ratio on like-for-like terms; marginal vs average; budget pacing vs the month. When platform and blended disagree: both stories at the same grain, a recommendation, the cheapest settling test.
  3. Plumbing and the why — atom the analyze-performance-diagnose skill (../analyze-performance-diagnose/SKILL.md), references/diagnosis.md. Plumbing first (breaks from the numbers, run-paid-campaigns' health line, and "measurement absent by design" with setup steps). Then, for every material move, the cause checklist with evidence, how sure, and ruled-out causes; light page/message match on the top winning and losing ads.
  4. Creative ranking and channel reads — atom the analyze-performance-rank-and-read skill (../analyze-performance-rank-and-read/SKILL.md), references/creative-and-channels.md. Build the per-channel and per-ad scorecards against last run's rows (references/run-memory.md § Numbers). Angle → hook → format ranked by spend and judged on the type's business event (DTC: purchase CPA within the platform, claimed, capped at likely unless store new-customer orders moved with it); when only an upstream proxy exists (installs, leads, clicks), "cheap <event>, quality unknown" — no winner, no learning, "test" not "scale"; ads without a maker's angle annotation are "unannotated", never guessed from names. Then each rostered channel: email/SMS, organic, Google (+ wasted-spend terms), apps, local, B2B pipeline.
  5. Tests and recommendations — atom the analyze-performance-call-and-learn skill (../analyze-performance-call-and-learn/SKILL.md), references/tests-and-learnings.md. Ended tests called against the brief's criteria; last week's calls scored through run-memory's outcome check (a money move run-paid-campaigns made: its verdict, plus this playbook's store-joined truth check over the same window); "what worked" only what held 2+ runs or won a test, "what to make next" from the history — tiring winners first, nothing that already failed (references/run-memory.md); this week's recommendations with how sure and "would change if" (the decision and the action are run-paid-campaigns'); fired replan triggers; the "what to make next" list; at most ~3 proposed learnings (n floors apply), each showing what it would retire.
  6. Write and show the report — through the write-report skill (../write-report/SKILL.md), in references/monday-report.md's shape (topic performance-read; brand copy reports/performance/<YYYY-MM-DD>.md, title Performance read — <Brand> — <YYYY-MM-DD>, tags [analyze-performance, performance-read], keep-history). Its §3 checks, plus: labels per section (truth / claimed / derived); no platform revenue as truth; every rostered channel present; every call says how sure. Its Decisions for you is the one decisions block: which story to run on (if two), which learnings to keep or strike, any contract amendment, any re-test.
  7. On the marketer's reply — re-save the report with a Decisions section; record the story pick in definitions.md; write the kept learnings through the save-learning skill (../save-learning/SKILL.md) (their words as the statement; one idea per learning; own superseded ones retired; say which landed). Nothing becomes a learning unless it appeared in a report the marketer saw. Measured readouts (ended tests called Win or Loss) are saved through save-learning's readout path, never from a scheduled run (references/run-memory.md § Experiment readouts).
  8. Save the run — the End steps of the run-memory skill (../run-memory/SKILL.md): the record with the scorecards, the angle history line, this run's calls as recommendations (id, owner, review-by, how we'll know) and the outcomes of the last ones. Re-save it with the marketer's decisions when they reply. The daily pulse writes a pulse record (thresholds checked, breaks or "nothing").
  9. Monthly read when routed above — references/monthly-and-pulse.md, with its own monthly read record (channel scorecard over the month vs the last monthly record).

Approval gates

Nothing here is irreversible: this playbook reads and recommends; it never moves money, changes campaigns or publishes. Its judgment points end at the marketer:

  • Which story to run the business on when platform and blended disagree.
  • Whether a messy test result is enough to act on, or the test runs again.
  • Learnings are written only from the marketer's own words after they have seen them.
  • Kill/scale recommendations become real only when run-paid-campaigns decides on them, behind its money gate.
  • Scheduling the report or pulse is offered once — a scheduled run uses credits, runs claims-only unless a connector exists, and should run before the paid run — and follows the spend-gate skill (../spend-gate/SKILL.md)'s automation rule (created paused, switched on by the marketer); the offer is recorded in definitions.md so it isn't repeated. Create it by marketing-guide §3 Schedules. With GooseWorks (gooseworks:automation_upsert): the method goes in reports/performance/method/, the prompt is references/run-memory.md § Setting up the schedule. Local mode: the host-scheduler branch there. Either way: read and report only; never apply, publish or spend.

Output and write-back

  • Workspace (brand coworker scope, gooseworks:file_write, re-read before writing; local mode: references/local-mode.md): reports/performance/<YYYY-MM-DD>.md (weekly — named for the Monday of the run week, kept when re-saved with Decisions), reports/performance/monthly/<YYYY-MM>.md, reports/performance/inputs/<YYYY-MM-DD>.md, reports/performance/definitions.md. The contract (versioned: supersede) and the monthly read (a period artifact, keep-history) are also registered as brand documents through the save-to-brain skill (../save-to-brain/SKILL.md).
  • Run records runs/analyze-performance/<job-slug>/<YYYY-MM-DD>.md through run-memory (imported; read by its own next run and plan-campaign's replan). Experiment readouts (kind 23 experiment_readout.*) and, on the marketer's yes, worn-out angles (worn_out_angle.*) through save-learning.
  • Learnings → the brand brain through the save-learning atom (read by every planner and maker; angle learnings start [learning YYYY-MM-DD A-NN] so research-competitors can update its bank).
  • Who takes what: run-paid-campaigns — calls, plumbing flags, Google wasted-spend terms, the input summary · plan-campaign — weekly and monthly reads, fired replan triggers · make-static-ads / make-content — what to make next (a video item is offered as the next job with the goose-video skill) · run-organic-social — organic overperformers · email-lifecycle — the flow-and-send read · improve-search-visibility — the re-check nudge.

Done when

On a brand with live spend and its store or CRM numbers provided, each rostered channel's winner, the why and the next-make are stated and grounded; platform revenue is never quoted as truth; learnings were written only from the marketer's words after they saw them. Without the referee it says plainly that it ran claims-only — the Done-when check needs the referee.

Out of scope

  • Applying any change (pausing, scaling, budgets, negatives) — run-paid-campaigns.
  • Making the next creative — make-static-ads, make-content. Video ads: the goose-video skill.
  • The monthly replan itself — plan-campaign (fed by this playbook).
  • Fixing the pages it checks — not covered yet; the check here is read-only.
  • Brand-search volume, share of voice, citations — research-market ("What people are saying"), improve-search-visibility (carried in when they exist).
  • Standing alerts and watchers — not covered yet; the exception-only pulse covers the gap.
  • The deep email flow audit — email-lifecycle; the organic content mix — run-organic-social.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

<slug>

FreeSummary

The supplied material contains only placeholder text for the skill’s purpose, inputs, steps, and completion criteria. It does not provide enough information to describe a task or result reliably.

  • No use case can be identified from the supplied material
  • Purpose is unspecified
  • Inputs and expected results are unspecified
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-angle-miner

FreeSummary

Research supported advertising angles using buyer context, current product facts, customer language, and observed ads. Turn the evidence into static ad, video, or copy ideas, matching video concepts to available recipes. Scores rank ideas for testing; they do not predict results.

  • Finding evidence-backed angles for a product campaign
  • Developing static ad or video concepts from customer research
  • Writing headline and primary-text options for ads
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Analyze campaign data from Google, Meta, and LinkedIn to find strong and wasteful spend. The skill checks funnel performance and test results, then recommends which campaigns to pause, scale, or test and how to shift budget across channels.

  • Finding campaigns and ads that waste budget
  • Comparing performance across Google, Meta, and LinkedIn
  • Planning specific budget shifts and follow-up tests
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Compare ad spend and signups with downstream outcomes to calculate the cost of each qualified lead. The skill checks tracking coverage, accounts for how long leads need to mature, and groups creatives into actionable categories with confidence notes.

  • Compare true qualified-lead costs across creatives
  • Find low-CPA ads that bring poor-quality leads
  • Check whether signups can be linked to downstream outcomes
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Prepare the intake for a Meta ad campaign by reviewing available brand information first, stating reasonable assumptions, and asking only questions whose answers could affect budget, claims, or legal exposure. It records stable brand facts, a campaign brief, and what was asked versus assumed.

  • Prepare a Meta ad campaign when brand facts are missing
  • Clarify budget and timing before campaign planning
  • Record approved claims and audience restrictions
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-policy-check

FreeSummary

Review ad copy, image text, visuals, and people against platform and brand category rules. It suggests honest fixes and needed disclosures, then flags issues requiring human or legal review, with a separate result for each ad and platform.

  • Checking ad copy and visuals before launch
  • Reviewing creator ads for required disclosures
  • Fixing a platform disapproval and recording the issue
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

See all skills by gooseworks-ai

Report a problem with this skill