$npx -y skills add aidityasadhakim/ads-creative-skill --skill template-builderFill ad creative prompt templates with brand DNA context for a specific product. Supports single template (fast) or all 40 at once. Saves ready-to-generate prompts to output/{brand}-{product}-prompts.md.
| 1 | # /ads-creative:template-builder |
| 2 | |
| 3 | Fill prompt templates with brand-specific values, producing ready-to-use prompts for image generation. |
| 4 | |
| 5 | ## Input |
| 6 | |
| 7 | `$ARGUMENTS` — product name followed by an optional template ID or `all`. |
| 8 | |
| 9 | **Parsing rules** (apply in order): |
| 10 | 1. If the last token is a number between 1 and 40 → treat it as template ID, rest is product name |
| 11 | 2. If the last token is `all` (case-insensitive) → fill all 40, rest is product name |
| 12 | 3. If there is no numeric/`all` token at the end → treat entire string as product name, then ask user (see below) |
| 13 | |
| 14 | **Examples:** |
| 15 | ``` |
| 16 | /ads-creative:template-builder Protein Bar Chocolate 5 → fill template 5 only |
| 17 | /ads-creative:template-builder Protein Bar Chocolate all → fill all 40 |
| 18 | /ads-creative:template-builder Protein Bar Chocolate → ask user |
| 19 | ``` |
| 20 | |
| 21 | If product name is empty after parsing, ask: |
| 22 | > Produk apa yang ingin dibuatkan template iklannya? |
| 23 | > Contoh: `/ads-creative:template-builder Protein Bar Chocolate 5` |
| 24 | |
| 25 | If no template ID or `all` was provided, ask: |
| 26 | > Template mana yang ingin diisi? |
| 27 | > - Ketik nomor (1-40) untuk satu template, contoh: `5` |
| 28 | > - Ketik `all` untuk mengisi semua 40 template sekaligus |
| 29 | |
| 30 | --- |
| 31 | |
| 32 | ## Pre-checks |
| 33 | |
| 34 | **1. Check for Brand DNA** |
| 35 | |
| 36 | Search for brand DNA files in both supported formats — check these two patterns in order: |
| 37 | |
| 38 | 1. **Subdirectory format (new):** `brands/*/brand-dna.md` — e.g. `brands/hotto-mame/brand-dna.md` |
| 39 | 2. **Flat file format (legacy):** `brands/*.md` — e.g. `brands/hotto-mame.md` — any `.md` file directly inside `brands/`, excluding `assets.json` |
| 40 | |
| 41 | Collect all matches from both patterns into a single candidate list. |
| 42 | |
| 43 | - If no candidates found: |
| 44 | > ⚠️ Brand DNA belum ada. Jalankan dulu: |
| 45 | > `/ads-creative:brand-dna [url atau deskripsi brand]` |
| 46 | |
| 47 | Then STOP. |
| 48 | |
| 49 | - If exactly one candidate found, use it automatically. |
| 50 | - If multiple candidates found, ask the user which one to use. |
| 51 | |
| 52 | **2. Read Brand DNA** |
| 53 | |
| 54 | Read the chosen brand DNA file. Extract and internalize all sections: |
| 55 | - Visual System (fonts, colors) |
| 56 | - Photography Style |
| 57 | - Product Photography Direction |
| 58 | - Packaging details |
| 59 | - Ad Creative Style |
| 60 | - **IMAGE PROMPT MODIFIER** paragraph — this is critical |
| 61 | |
| 62 | **Determine Brand Directory for images:** |
| 63 | - If the file is `brands/{brand-name}/brand-dna.md` → Brand Directory is `brands/{brand-name}/` |
| 64 | - If the file is `brands/{brand-name}.md` (flat) → Brand Directory is `brands/{brand-name}/` (derive the name from the filename, strip `.md`) |
| 65 | |
| 66 | **3. Read Reference Images** |
| 67 | |
| 68 | Scan the Brand Directory for image files (`.jpg`, `.jpeg`, `.png`, case-insensitive). If found, **read every image file** so you have direct visual context of the actual product. |
| 69 | |
| 70 | Use what you see in the images to: |
| 71 | - Identify exact product colors, packaging shape, label details, finish (matte/glossy), and texture |
| 72 | - Note any text, logo, or graphic elements visible on the product |
| 73 | - Observe physical proportions and distinctive visual features of the packaging |
| 74 | |
| 75 | This eliminates hallucination — every prompt must describe what is **actually visible** in the photos, not assumed from text alone. The filled prompts must be specific enough that someone who has never seen the product could reconstruct it exactly from the prompt. |
| 76 | |
| 77 | If no images are found: |
| 78 | > ⚠️ Tidak ada foto referensi di `brands/{brand-name}/`. Tambahkan foto produk sebelum mengisi template agar prompt tidak mengarang detail yang salah. |
| 79 | |
| 80 | Then STOP. |
| 81 | |
| 82 | **5. Read Templates** |
| 83 | |
| 84 | Read the templates file at: |
| 85 | `${CLAUDE_PLUGIN_ROOT}/templates/image-templates.md` |
| 86 | |
| 87 | This file contains 40 numbered templates. Each template has placeholders in `[SQUARE BRACKETS]`. |
| 88 | |
| 89 | --- |
| 90 | |
| 91 | ## Filling Process |
| 92 | |
| 93 | For **each template to be filled** (either just the one requested, or all 40), fill all `[PLACEHOLDER]` values using: |
| 94 | |
| 95 | | Placeholder type | Source | |
| 96 | |-----------------|--------| |
| 97 | | Brand colors (primary, accent, etc.) | Reference images + Brand DNA — Visual System | |
| 98 | | Font / typography references | Brand DNA — Visual System | |
| 99 | | Photography style descriptors | Brand DNA — Photography Style | |
| 100 | | Surface, background, props | Brand DNA — Product Photography Direction | |
| 101 | | Packaging details (color, finish, shape) | Reference images (primary source) + Brand DNA — Packaging | |
| 102 | | Product name | User's product name input | |
| 103 | | Product description details | Reference images (what is visually observable) | |
| 104 | | Ad copy / headlines / hooks | Create on-brand copy using the 5 Brand Voice Adjectives | |
| 105 | | Mood / atmosphere adjectives | Brand DNA — Photography Style mood keywords | |
| 106 | | Post-it / sticky note colors | Match brand palette from reference images | |
| 107 | | CTA / caption text | Match brand's CTA style and tone | |
| 108 | |
| 109 | ### Rules |
| 110 | |
| 111 | - **HARD RULE — Language:** Every piece of c |