ads-audit
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
Generate on-brand YouTube thumbnails for Ben van Sprundel using Higgsfield in one shot. Use when the user says create a thumbnail, make a YT thumbnail, thumbnail for video, generate ben thumbnail, variation of last thumbnail, or shares a video concept and asks for a thumbnail.
$ npx -y skills add naveedharri/benai-skills --skill youtube-thumbnail --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/youtube-thumbnailContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate on-brand YouTube thumbnails for Ben van Sprundel using Higgsfield in one shot. Use when the user says create a thumbnail, make a YT thumbnail, thumbnail for video, generate ben thumbnail, variation of last thumbnail, or shares a video concept and asks for a thumbnail.
name: youtube-thumbnail description: "Generate on-brand YouTube thumbnails for Ben van Sprundel using Higgsfield in one shot. Use when the user says create a thumbnail, make a YT thumbnail, thumbnail for video, generate ben thumbnail, variation of last thumbnail, or shares a video concept and asks for a thumbnail. Auto-infers mode from the inputs (variation, new-with-ben, ben-plus-other, no-face), defaults to 3 variants, asks at most one question. On topic-driven runs it first researches what is working in the niche (VidIQ preferred, else Apify or the youtube connector), distills the winning patterns, and lets the user pick or mix before generating. Uses reference images as the identity anchor and anchors on the 10 most recent shipped thumbnails in references/brand-examples/. No Soul training required. Reads the locked style spec at Context/youtube-thumbnail-style.md if present. Real logos are never rendered; the thumbnail fills the frame edge-to-edge and the user composites the logo in post." disable-model-invocation: true
One-shot thumbnail generation. Takes a concept (plus optional reference image and count), infers everything else, ships 3 variants and a manifest.
Two things, ideally both in the user's first message:
1. **Concept**: what the thumbnail should show. A sentence or phrase. ("Claude Code Skills, why it changes everything for solo founders") 2. **Reference image(s)** (optional but recommended, may be multiple): a past thumbnail, a photo of Ben, a second subject, a style anchor, a real logo PNG, or any combination. Determines the mode AND all of them must be passed into the generation. Never silently drop a user-supplied reference; if they gave you one, it must end up in `medias[]`. If they gave you a LIST, read EVERY image in the list, then pass every relevant one (don't pre-select just one). Every reference image MUST be visually read with the `Read` tool before the prompt is built (see rule 2).
**If the user mentions a reference image but does not provide a path or attachment, ASK for the path BEFORE doing anything else.** Examples that require asking: "use my previous thumbnail as a ref" (which file?), "include the Anthropic logo" (where is the PNG?), "match this style" (which image?). Ask in one short line: *"Got it, what's the file path for the reference image?"* Do not guess, do not proceed, do not generate without seeing the path.
Optional third: **variant count**. Defaults to 3. Max 4.
If the concept is missing or genuinely unclear, ask ONE combined question:
> "What should the thumbnail show, and how many variations do you want? (default 3)"
Do not split into multiple questions. Do not ask about mode, model, or palette; all of that is inferred or read from the style spec.
Every `new-with-ben` thumbnail uses a reference photo of Ben as the identity anchor, passed as `medias[0]`. The photo lives at `Projects/youtube/thumbnails/refs/ben_reference_{YYYY-QQ}.jpg`.
If the user did NOT attach a photo of Ben and there is no `ben_reference_*.jpg` in `refs/`, ask once for a photo. Without it, `new-with-ben` cannot produce a faithful Ben rendering.
If multiple `ben_reference_*.jpg` files exist, pick the most recent (highest `YYYY-QQ` suffix). Note which one was used in the manifest.
| User attached | Concept hints | Mode | Model | Reference flow | |---|---|---|---|---| | 16:9 image that looks like a past thumbnail | "vary this", "tweak this", "redo with X" | `variation` | `nano_banana_2` | past thumbnail as `medias[0]` | | A portrait of Ben | Ben centered in the concept | `new-with-ben` | `nano_banana_2` | user-supplied photo as `medias[0]` | | Two images (Ben + something) | "Ben plus X" | `ben-plus-other` | `nano_banana_2` (multi-ref) | Ben as `medias[0]`, second subject as `medias[1]` | | No image | Object or abstract concept, no Ben | `no-face` | `nano_banana_2` (or `gpt_image_2` if concept centers on rendered text) | optional style anchor as `medias[0]` | | No image | Concept mentions Ben | `new-with-ben` | `nano_banana_2` | most recent `ben_reference_*.jpg` from `refs/` as `medias[0]`. If none, ask. |
`nano_banana_2` is the default model for every mode. Switch to `gpt_image_2` only when text rendering is the hero element of a no-face thumbnail.
Read `Context/youtube-thumbnail-style.md` if it exists; pull palette, framing library, expression library, lighting, prohibited list, and anchor refs. If it is missing or has `[FILL]` blocks, do not refuse: fall back to the locked Ben AI visual language in `references/visual-language.md` (the source of truth for palette, layout, framing, wardrobe, lighting, banned colors, prohibited elements, and logo handling). Surface a one-line note at the end (not before generation): "Style spec missing or incomplete; used the locked Ben AI thumbnail visual language."
1. **One question max per run, and only if a required input is missing.** Default everything else. 2. **No raw IDs in chat.** Save `job_id`s to the manifest. Show the user file paths and a one-line summary. 3. **No internal jargon.** Don't narrate "inferring mode...", "loading style spec...", "calling generate_image...". Just do it. 4. **Detect language and respond in it.** Technical args (hex codes, model names) stay English. 5. **Don't preview the prompt** unless the user asks. The 4-block prompt is internal. 6. **Don't suggest mode switches** unless generation fails. Trust the inference.
The whole loop is one chat turn. No intermediate confirmations.
1. Parse user message: extract concept, attached images, count. 2. Infer mode. For new-with-ben without an attached photo, pull the most recent ben_reference_*.jpg from refs/. If missing, ask once. 3. NICHE RESEARCH (topic-driven runs only). When the input is a video idea/topic and mode is new-with-ben, ben-plus-other, or no-face, run the research pass i
Expert automation skills for Claude Code, organized by department.
Repo: naveedharri/benai-skills
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
Budget allocation and bidding strategy review across all ad platforms. Evaluates spend distribution, bidding strategy appropriateness, scaling readiness, and…
Competitor ad intelligence analysis across Google, Meta, LinkedIn, TikTok, and Microsoft. Analyzes competitor ad copy, creative strategy, keyword targeting,…
Cross-platform creative quality audit covering ad copy, video, image, and format diversity across all platforms. Detects creative fatigue, evaluates…
Google Ads deep analysis covering Search, Performance Max, Display, YouTube, and Demand Gen campaigns. Evaluates 74 checks across conversion tracking, wasted…
Landing page quality assessment for paid advertising campaigns. Evaluates message match, page speed, mobile experience, trust signals, form optimization, and…