mimic-analyze-template
You are decomposing a proven static Meta ad into a reusable AdTemplate. The output is structured JSON that downstream /mimic generate calls will fill in with brand-specific values.
Inputs
image— local file path (relative to vault root) OR hosted URLdisplay_name— human-readable template nameslug— pre-computed kebab-case slug (caller already deduped)source_brand— optional brand name (best-guess if not supplied)
Step 1 — Read the image
If image is a local path: Read it directly. Claude Code reads images visually as multimodal input.
If image is a URL: include it in your prompt as a markdown image reference, OR download it first via Bash curl into /tmp/mimic-input-{slug}.png and Read from there.
Step 2 — Produce the AdTemplate JSON
Internally generate JSON matching this schema (controlled vocabularies are STRICT — pick exactly one value per enum):
{
"source_brand": "string (best guess from logo/wordmark, '' if none)",
"layout": {
"aspect_ratio": "1:1 | 9:16 | 4:5 | 16:9 | 3:4 | other",
"composition": "string (e.g. 'split-vertical-image-top-text-bottom')",
"primary_focal_point": "string",
"visual_hierarchy": ["ordered list of what eye lands on"],
"color_palette": ["hex codes, 2-6 entries"],
"typography_style": "string"
},
"copy": {
"headline": { "text": "...", "treatment": "...", "placement": "..." },
"subheadline": { "text": "...", "treatment": "...", "placement": "..." },
"body": "string (or '')",
"badges": [{ "text": "...", "treatment": "...", "placement": "..." }],
"cta": { "text": "...", "treatment": "...", "placement": "..." },
"disclaimers": ["..."]
},
"persuasion": {
"hook_type": "problem-agitation | before-after | transformation | curiosity | status | scarcity | social-proof | contrast | fear-removal | identity-signal | founder-story | listicle | comparison | callout",
"awareness_stage": "unaware | problem-aware | solution-aware | product-aware | most-aware",
"emotional_trigger": "string",
"offer_framing": "string (e.g. 'discount-first', 'transformation', 'free-trial', 'bundle')",
"proof_elements": ["list"]
},
"compliance": {
"risk_level": "low | medium | high",
"risk_factors": ["..."],
"notes": "string"
},
"template_logic": {
"editable_fields": [
{ "name": "lowercase_snake_case", "type": "text | image | color | number", "description": "...", "max_length": 60 }
],
"locked_structural_elements": ["..."],
"best_use_cases": ["..."],
"required_inputs": ["..."],
"brand_adaptation_rules": "multi-line string"
},
"image_prompt_template": "templated prompt with {placeholder} variables aligned to brand DNA fields (brand_imagery_style, brand_palette, brand_mood, hero_image_subject, etc.) so it stays brand-portable"
}
Rules:
- Flag anything that looks like a health, financial, weight-loss, or income claim as
risk_level: mediumorhigh. editable_fieldsshould reflect what a designer would tweak per-iteration (headline,hero_image,badge_text,cta_text,brand_color_primary).locked_structural_elementsis what makes the template recognizable — don't list editable fields here.- Use empty arrays / empty strings rather than null. js-yaml refuses to serialize
undefined.
Step 3 — Write the template
Build the full AdTemplate object with metadata:
type: ad-template
slug: {slug}
display_name: {display_name}
source_image_path: data/mimic/templates/{slug}.{ext} # only if image was a local file copied to supernova-ui/data/mimic/templates/
source_image_url: {url} # only if image was a URL
source_brand: {source_brand or extracted}
created: {now ISO 8601}
last_updated: {now ISO 8601}
analyzed_with: claude-opus-4-7
analyzed_at: {now ISO 8601}
layout: {...}
copy: {...}
persuasion: {...}
compliance: {...}
template_logic: {...}
image_prompt_template: "..."
Write to Wiki/Mimic/Templates/{slug}.md. The body markdown is just a one-paragraph human summary — frontmatter is the contract.
Step 4 — Copy the source image (only if local file input)
mkdir -p /Users/doorsy/Desktop/supernova/supernova-ui/data/mimic/templates
cp "{absolute_image_path}" /Users/doorsy/Desktop/supernova/supernova-ui/data/mimic/templates/{slug}.{ext}
This is what the dashboard's image endpoint will serve.
Step 5 — Log
Invoke Skills/log-operation.md with operation mimic-analyze-template, slug {slug}, source {path or URL}, hook_type, awareness_stage, risk_level.
Report to Adam
✓ Saved template at Wiki/Mimic/Templates/{slug}.md
hook: {hook_type} · awareness: {awareness_stage} · risk: {risk_level}
editable fields: {n}
Try: /mimic generate template={slug} brief={brief_slug} ...