Everything learned making 162 validated Wildhorn ads, in two skills.
= everything to make perfect ads
For any brand. Understand the product and the customer, clone ads that already win, check every image, review by Loom, learn from every comment. You bring the brand kit (voice, facts, offer, product photo).
See static-ads= the same, with Wildhorn already loaded
Exactly the same skill, plus the Wildhorn brand kit, Adrien's taste, every winner and every failure. You only bring the templates.
See wildhorn-static-ads| Metric | Run 1 — 79 ads, before the system | Sam batch — 83 ads, with the system |
|---|---|---|
| Validated on the first try | 0 % | 71 % |
| Validated after one fix | — | 87 % |
| Validated in the end | 100 % | 100 % |
| Generations that became a validated ad | 30 % | 62 % |
| Average review rounds per ad | 2.5 | 1.4 |
Same product, same reviewer. The only difference is the method now written into these skills. All 162 ads: /all-ads.
Same steps for every brand. Then repeat from step 3 with the next 10 ads.
[MISSING], ask.BRAND-KIT.md brand.json1-understand/2-make/2-make/review-and-pages.md3-improve/3-improve/stats.mdEverything else is detail. The full rulebook (with the case each rule came from): 3-improve/rules.md.
brand.json. Never invent a number.At the root of each skill: SKILL.md (the front page), BRAND-KIT.md + brand.json (the brand). Then:
1-understand, 2-make, 3-improve and scripts are identical in both skills. Only the brand differs.
Every review makes the next batch better. Nothing learned is ever lost.
| Family | Rules | What it covers | |
|---|---|---|---|
| A | Template & angle | 35 | Decode before writing: why it stops the scroll, what belongs to their product, the scene, the angle, the KEEP/SWAP list. |
| B | Copy | 22 | Same amount of text as the template, name the problem in full, simplest words, real facts only. |
| C | Visual | 22 | Show the problem or the result, product as an exact replica, an ingredient you'd want to eat, text placed like the template. |
| D | Engine & pipeline | 21 | Which engine for which template, never water an ad down, the blocking check, full-size QC, 10 per round. |
| E | What worked | 13 | The patterns behind validated ads — repeat them. |
| F | Prompt craft | 13 | How prompts are written so the engine gets it right; from the QC logs. |
| R | System rules | 14 | Process rules: any template accepted, one ad per template, research once. |
Everything to make perfect static ads. You bring the brand kit.
One skill for the whole job, for any brand: understand the product and the customer, find ads that already win, clone them with the real product, check every image at full size, review 10 at a time by Loom, and turn every comment into a permanent rule. The only input it needs is the brand kit (voice, facts, offer, proof, avatar, product photo).
Just say it, in English or French. For example:
“Make ads for brand X”“Clone these templates”“New batch”“Analyze this ad / competitor”“Find the angles”“Here is my Loom”“Fais-moi des ads”“Trouve les angles”
| File | Lines | What it is |
|---|---|---|
| SKILL.md | 92 | The front page: the 6 steps, the 12 golden rules, where to look for what. |
| BRAND-KIT.md | 211 | The fill-in brand kit, in plain English: voice, facts, label, offer, proof, avatar, angles, banned words, logo, fonts, product photo. Each field says which step uses it. |
| brand.json | 103 | The same facts in the shape the scripts read. Blank template: every value is [MISSING]. |
| 1-understand/WORKFLOWS.md | 387 | The analysis playbook: six principles, four workflows (new brand end to end, one ad in 10 minutes, decode a template, study a competitor), checklists, common failures. |
| 1-understand/ad-dna.md | 292 | Reads an ad as 20 genes in 4 branches, so you can count what is really new, know exactly what won, and plan crosses. |
| 1-understand/avatar-angle-system.md | 320 | Find the customer and the angle, check them, lock them: master avatar, sub-avatars, Avatar Check, Angle Sniper, angle cards. |
| 1-understand/competitor-case-studies.md | 260 | What every competitor study already taught us, and the lesson each gives any brand. |
| 1-understand/copy-analysis.md | 247 | How to judge headlines, hooks, stats and offer lines: copy formulas, compliance traps, which AI to use for copy. |
| 1-understand/frameworks-evolve-crafter.md | 276 | Evolve and Crafter Club distilled: desire, sophistication, awareness, angle vs concept, testing and iteration levers. |
| 1-understand/new-brand-worksheet.md | 269 | Fill-in worksheet for a new brand: product sheet → mechanisms → angles → avatar → templates → one brief per template. Two founder sign-offs. |
| 1-understand/product-mechanism-angle.md | 277 | The key move: product → hidden cause → the angles it opens. When to refuse an angle the product can't reach. |
| 1-understand/research-playbook.md | 269 | Where to find winners (TrendTrack, Meta Ad Library, Apify, radar, scaling shops), how to spot a scaling ad, what each step costs. |
| 1-understand/template-reading.md | 343 | The five-layer method to decode a template before cloning it, with every failed case that created a rule. |
| 2-make/PIPELINE.md | 396 | The production protocol in 16 steps, what the reviewer's phrases mean, worked examples, the non-negotiable rules, commands. |
| 2-make/composite.md | 147 | How the real product and the exact text are pasted on any image by script: every option, with validated examples. |
| 2-make/engines.md | 176 | Which image engine for which template (gpt-image-2, Seedream, Nano Banana Pro), the fixed prompt blocks, refusals, time and cost. |
| 2-make/first-batch.md | 62 | A new brand's first batch: working folder, spec constants, templates, the first 10 ads, what to expect, pre-flight checklist. |
| 2-make/qc-checklist.md | 114 | The full-size check every image passes before the founder sees it: product, text, angle, people, style, one-second test. |
| 2-make/review-and-pages.md | 93 | Ad numbering, the review / final / validated pages, verdict files, sell versions, exports. |
| 2-make/spec-format.md | 273 | The spec, one entry per ad: every field, how the prompt is built, 7 real specs, how a hand-off brief becomes a spec. |
| 3-improve/feedback-loop.md | 421 | From a Loom to a permanent rule: transcript, verdict table, wins → why, misses → root cause → rule → automatic check. Every round as a case study. |
| 3-improve/rules.md | 694 | The full rulebook: A–E (same IDs as Wildhorn), F prompt craft, R system rules, each with the case it came from. |
| 3-improve/rules.md.bak-20261008-1946 | 641 | |
| 3-improve/rules.md.bak-loomo2-20261009-0628 | 672 | |
| 3-improve/stats.md | 173 | The numbers: first try, after one fix, final, hit rate, rounds per ad — definitions, benchmarks, how to compute them. |
| scripts/README.md | 75 | What each script does, what changed vs the Wildhorn originals, where brand.json lives, every setting. |
| scripts/adformat.py | 88 | Sets every ad to its format: 1080 wide, square 1080×1080, 4:5 1080×1350, Story 1080×1920 (rule D15). |
| scripts/brief2spec.py | 73 | Turns hand-off briefs into a draft spec file. |
| scripts/build_all.py | 30 | Builds an images-only 'all ads' page from several finished sets. |
| scripts/build_lessons.py | 49 | Builds the rules page from the rulebook. |
| scripts/build_sam.py | 49 | Builds the review page: only ads still to review, every try, the decode. |
| scripts/build_samfinal.py | 44 | Builds the final page (every try + the version to launch) and exports them. |
| scripts/build_validated.py | 27 | Builds the validated grid: images only, a shareable demo link. |
| scripts/composite.py | 99 | Pastes the real product cutout and exact text on an image. Never misspells. |
| scripts/ingest_loom.sh | 10 | Downloads a review Loom and transcribes it (OpenAI API). |
| scripts/jarswap.py | 53 | Swaps only the product inside a box of an existing image. |
| scripts/kie6.py | 102 | kie.ai helper (upload, create task, wait, download) for Seedream and Nano Banana. |
| scripts/kie_gen.py | 45 | Backup generator via kie.ai when OpenAI refuses. |
| scripts/lint.py | 125 | The blocking checker: runs on every spec before any generation. One error = nothing is sent. |
| scripts/lint.py.bak-loomo2-20261009-0624 | 110 | |
| scripts/pages_common.py | 60 | Shared helpers for the pages (style, spec loader, thumbnails). |
| scripts/remix.py | 52 | Clones a template with the product through OpenAI gpt-image-2. |
| scripts/sac_config.py | 66 | Central paths and the brand-file loader (env → working folder → skill root). |
| scripts/srun.py | 92 | Runs one ad: check → engine chain → composite. Logs every call for the stats. |
| scripts/stats.py | 51 | Batch stats from the call log and the verdicts. |
| scripts/fonts/ (4 files) | — | Fonts used to write exact text on the ads: Anton-Regular, Fredoka, Montserrat, Oswald (1217 KB, not shown). |
The same skill, with Wildhorn already loaded.
Exactly the static-ads skill, plus the Wildhorn layer: product facts, the locked ad offer, the angles and headlines that won, banned words, Adrien's taste, all 162 validated ads and every failure. A new Wildhorn batch starts where the last one ended — you only bring the templates.
Just say it, in English or French. For example:
“Make Wildhorn ads”“New batch”“Clone these templates for Wildhorn”“Here is my Loom”“Beer belly ad”“Fais-moi des ads Wildhorn”
| File | Lines | What it is |
|---|---|---|
| SKILL.md | 100 | The front page: Wildhorn in 30 seconds, the 6 steps, the 12 golden rules with Wildhorn examples, where to look. |
| BRAND-KIT.md | 28 | Wildhorn's brand kit is already filled: this page says where each part lives. |
| brand.json | 170 | The Wildhorn brand file the scripts read: jar photo + cutout, offer, prices, avatar, banned words, checks. |
| brand.json.bak-loomo2-20261009-0624 | 164 | |
| 3-improve/rules.md.bak-20261008-1946 | 641 | |
| 3-improve/rules.md.bak-loomo2-20261009-0628 | 672 | |
| wildhorn/PLAYBOOK.md | 304 | Everything to run a Wildhorn batch: brand snapshot, non-negotiables, the batch end to end, engine decision tree, what Adrien expects, known traps. |
| wildhorn/adrien-feedback.md | 440 | Every review in order and the rule each one created; how Adrien reviews; the 261-row coverage matrix. |
| wildhorn/angles.md | 268 | Every Wildhorn angle and mechanism, every validated headline, and the lines that failed. |
| wildhorn/brand.md | 146 | Brand bible: product facts, label, offer, proof, avatar, banned words, assets, fonts and colours. |
| wildhorn/failures-catalogue.md | 201 | Every rejected try, grouped by failure type, with root cause and fix — plus a 12-point pre-flight checklist. |
| wildhorn/lessons-wildhorn.md | 395 | The full rulebook (A–E) with the Wildhorn evidence and how each rule is enforced. |
| wildhorn/paths-and-commands.md | 208 | Where everything lives on the VPS: workshop, scripts, pages, exports, copy-paste commands. |
| wildhorn/winners-catalogue.md | 1408 | All 162 validated ads (83 Sam + 79 run 1): template, angle, final copy. Search it before cloning. |
| scripts/lint.py.bak-loomo2-20261009-0624 | 110 |
| File | Lines | What it is |
|---|---|---|
| 1-understand/WORKFLOWS.md | 387 | The analysis playbook: six principles, four workflows (new brand end to end, one ad in 10 minutes, decode a template, study a competitor), checklists, common failures. |
| 1-understand/ad-dna.md | 292 | Reads an ad as 20 genes in 4 branches, so you can count what is really new, know exactly what won, and plan crosses. |
| 1-understand/avatar-angle-system.md | 320 | Find the customer and the angle, check them, lock them: master avatar, sub-avatars, Avatar Check, Angle Sniper, angle cards. |
| 1-understand/competitor-case-studies.md | 260 | What every competitor study already taught us, and the lesson each gives any brand. |
| 1-understand/copy-analysis.md | 247 | How to judge headlines, hooks, stats and offer lines: copy formulas, compliance traps, which AI to use for copy. |
| 1-understand/frameworks-evolve-crafter.md | 276 | Evolve and Crafter Club distilled: desire, sophistication, awareness, angle vs concept, testing and iteration levers. |
| 1-understand/new-brand-worksheet.md | 269 | Fill-in worksheet for a new brand: product sheet → mechanisms → angles → avatar → templates → one brief per template. Two founder sign-offs. |
| 1-understand/product-mechanism-angle.md | 277 | The key move: product → hidden cause → the angles it opens. When to refuse an angle the product can't reach. |
| 1-understand/research-playbook.md | 269 | Where to find winners (TrendTrack, Meta Ad Library, Apify, radar, scaling shops), how to spot a scaling ad, what each step costs. |
| 1-understand/template-reading.md | 343 | The five-layer method to decode a template before cloning it, with every failed case that created a rule. |
| 2-make/PIPELINE.md | 396 | The production protocol in 16 steps, what the reviewer's phrases mean, worked examples, the non-negotiable rules, commands. |
| 2-make/composite.md | 147 | How the real product and the exact text are pasted on any image by script: every option, with validated examples. |
| 2-make/engines.md | 176 | Which image engine for which template (gpt-image-2, Seedream, Nano Banana Pro), the fixed prompt blocks, refusals, time and cost. |
| 2-make/first-batch.md | 62 | A new brand's first batch: working folder, spec constants, templates, the first 10 ads, what to expect, pre-flight checklist. |
| 2-make/qc-checklist.md | 114 | The full-size check every image passes before the founder sees it: product, text, angle, people, style, one-second test. |
| 2-make/review-and-pages.md | 93 | Ad numbering, the review / final / validated pages, verdict files, sell versions, exports. |
| 2-make/spec-format.md | 273 | The spec, one entry per ad: every field, how the prompt is built, 7 real specs, how a hand-off brief becomes a spec. |
| 3-improve/feedback-loop.md | 421 | From a Loom to a permanent rule: transcript, verdict table, wins → why, misses → root cause → rule → automatic check. Every round as a case study. |
| 3-improve/rules.md | 694 | The full rulebook: A–E (same IDs as Wildhorn), F prompt craft, R system rules, each with the case it came from. |
| 3-improve/stats.md | 173 | The numbers: first try, after one fix, final, hit rate, rounds per ad — definitions, benchmarks, how to compute them. |
| scripts/README.md | 75 | What each script does, what changed vs the Wildhorn originals, where brand.json lives, every setting. |
| scripts/adformat.py | 88 | Sets every ad to its format: 1080 wide, square 1080×1080, 4:5 1080×1350, Story 1080×1920 (rule D15). |
| scripts/brief2spec.py | 73 | Turns hand-off briefs into a draft spec file. |
| scripts/build_all.py | 30 | Builds an images-only 'all ads' page from several finished sets. |
| scripts/build_lessons.py | 49 | Builds the rules page from the rulebook. |
| scripts/build_sam.py | 49 | Builds the review page: only ads still to review, every try, the decode. |
| scripts/build_samfinal.py | 44 | Builds the final page (every try + the version to launch) and exports them. |
| scripts/build_validated.py | 27 | Builds the validated grid: images only, a shareable demo link. |
| scripts/composite.py | 99 | Pastes the real product cutout and exact text on an image. Never misspells. |
| scripts/ingest_loom.sh | 10 | Downloads a review Loom and transcribes it (OpenAI API). |
| scripts/jarswap.py | 53 | Swaps only the product inside a box of an existing image. |
| scripts/kie6.py | 102 | kie.ai helper (upload, create task, wait, download) for Seedream and Nano Banana. |
| scripts/kie_gen.py | 45 | Backup generator via kie.ai when OpenAI refuses. |
| scripts/lint.py | 125 | The blocking checker: runs on every spec before any generation. One error = nothing is sent. |
| scripts/pages_common.py | 60 | Shared helpers for the pages (style, spec loader, thumbnails). |
| scripts/remix.py | 52 | Clones a template with the product through OpenAI gpt-image-2. |
| scripts/sac_config.py | 66 | Central paths and the brand-file loader (env → working folder → skill root). |
| scripts/srun.py | 92 | Runs one ad: check → engine chain → composite. Logs every call for the stats. |
| scripts/stats.py | 51 | Batch stats from the call log and the verdicts. |
| scripts/fonts/ (4 files) | — | Fonts used to write exact text on the ads: Anton-Regular, Fredoka, Montserrat, Oswald (1217 KB, not shown). |
Already installed. Nothing to set up — just ask. For example: “Make me a batch of 10 statics for brand X from these templates” “New Wildhorn batch from these templates” “Here is my Loom”
107 files across 2 skills · page rebuilt by build_skills_site.py