← JuicyLucy AdsCONTENT HISTORY

Update to JuicyLucy Ads

Snapshot Sep 30, 2026 · 23:16 UTC · version 0.22.1

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Analyze an ad account's static-ad performance through the platform's marketing API under a strict read-only contract, to select fresh winning static concepts for iteration. Use when retrieving insights, ads, creatives, and previews to rank winners, deduplicating localized executions into unique concepts, maintaining an unused-winner ledger, or verifying a winner's creative before it becomes a generation reference — without creating, editing, publishing, pausing, budgeting, or otherwise mutating anything in the account.",
  "included_files": [],
  "name": "static-winner-analysis",
  "skill_md_contents": "---\nname: static-winner-analysis\ndescription: Analyze an ad account's static-ad performance through the platform's marketing API under a strict read-only contract, to select fresh winning static concepts for iteration. Use when retrieving insights, ads, creatives, and previews to rank winners, deduplicating localized executions into unique concepts, maintaining an unused-winner ledger, or verifying a winner's creative before it becomes a generation reference — without creating, editing, publishing, pausing, budgeting, or otherwise mutating anything in the account.\n---\n\n# Static Winner Analysis — read-only\n\nRetrieve what is working, prove it, and hand the pipeline a deduplicated,\nevidence-backed winner list. This skill holds the permission boundary and the\ncredential rules for every ad-account read the statics pipeline performs.\n\n## The permission contract\n\n- The account, its identifier, and the API access token are **inputs supplied\n  in the active conversation or session** — never stored in a skill, config,\n  manifest, or artifact.\n- Once supplied, read-only retrieval for winner analysis is\n  **standing-authorized**: run the GET requests the analysis needs without\n  re-asking per query. If the session holds no usable credentials, ask once;\n  a platform connector or signed-in browser is the fallback, not the norm.\n- **Read-only means read-only.** Retrieve account metadata, campaigns, ad\n  sets, ads, creatives and previews, insights, actions, spend, and conversion\n  fields. Never call anything that creates, updates, publishes, pauses,\n  resumes, deletes, duplicates, uploads, or adjusts any object, budget,\n  audience, billing, or delivery state. A write requires a separate explicit\n  user request and its own confirmation — never inferred from a\n  creative-production request.\n- State the read-only boundary in the run's manifest so the contract is\n  visible in the record.\n\n## Credential hygiene\n\n- Never write the token into a file, URL, log, filename, summary, command\n  echo, or recorded artifact of any kind. Pass it at runtime only, and redact\n  it from anything persisted.\n- Treat a token found in client-side or public configuration (for example a\n  browser-exposed environment variable) as compromised: flag it and advise\n  rotation.\n- Retain no login state, cookies, or session material after the run.\n\n## Retrieve and rank\n\n1. Query insights for the requested lookback window, restricted to static\n   image ads — media type is part of the query, not a post-filter hope.\n2. Parse results from the actual action/conversion fields; do not trust a\n   pre-aggregated column whose definition you have not checked.\n3. Rank on meaningful conversion volume **and** cost efficiency together.\n   Exclude under-delivered ads; never promote an ad because one conversion\n   produced a flattering cost figure.\n4. Open each shortlisted ad's creative preview and visually confirm it\n   corresponds to its performance row before treating it as a winner.\n\n## Deduplicate into concepts\n\nCluster by underlying creative concept before filling any slot: language,\ntranslated copy, localized names, and target market are execution attributes.\nOne concept, one slot — the strongest execution becomes the visual reference;\nthe other executions are cross-market validation, not additional winners.\n\n## The unused-winner ledger\n\nMaintain a dated ledger of ranked winners not yet iterated: concept, best\nexecution, evidence, and why it was passed over. It feeds the next cycle's\nrepeat-versus-explore decision, per the workspace evidence conventions\n(`juicylucy` skill, `evidence.json` § retention).\n\n## Record the evidence\n\nPer selected winner: account (by name, not token), reporting window, ad\nname/ID, results, spend, cost per result, return metrics when available,\npreview confirmation, concept-cluster name, deduplicated siblings, and the\nreference image path or capture. This record is what makes \"we iterated a\nwinner\" auditable later.\n\n## One winner, five variations\n\nA confirmed winner seeds a review cycle, not a clone: five materially\ndistinct variations — different composition, setting, typography, or copy\nangle around the same hypothesis — so the next report can say *why* it won,\nnot merely that it did. The mutation modes and master QA live in\n`static-ad-production`.\n\n## Guardrails\n\n- Product truth outranks performance: a winning claim the brand's\n  `product-truth.md` does not support is a rejected claim, however well it\n  converted. Resolve the brand skill before turning any winner into copy.\n- Never expose account data beyond what the run needs, and never paste raw\n  API responses containing identifiers into shipped artifacts.\n- A stale local asset is not a winner; when live access exists, the live\n  numbers decide.\n"
}

SHA-256 of public snapshot: d14aea8fce14565930867ef5f7b081151d5bcdf6dc0df8358fd2f2b3b2121b36