| name | gi-asset-generator |
| description | Generate visual assets for The Great Inversion asset pipeline. Use when Tim says "generate assets," "create images," "run a batch," "make visuals," or wants to produce hero images, section illustrations, product mockups, quote card backgrounds, email headers, social previews, or launch teasers from a structured brief. Takes a brief (or Brief_ID from the tracker) and a prompt template, customizes the prompt, generates image variants, saves to 04-Generated-Drafts with correct filenames, and logs them in the Asset Register. |
| metadata | {"author":"tim-dickey","version":"1.0","project":"greatinvert"} |
GreatInvert Asset Generator
When to Use This Skill
Use when the user:
- Says "generate assets," "create images," "make visuals," or "run a batch"
- Wants to produce images from a structured brief
- Asks for hero images, section illustrations, mockups, quote cards, email headers, social previews, or launch teasers
- Refers to Step 3 of the asset pipeline
Prerequisites
- A structured brief (from the tracker's Structured Briefs tab, or provided inline)
- The GreatInvert asset pipeline tracker spreadsheet
- The media skill must be available for image generation
Instructions
Step 1: Identify the brief
Determine which brief to generate from:
Option A — Brief_ID given: Read the tracker spreadsheet, find the row in the "Structured Briefs" tab matching the Brief_ID, and extract all fields.
Option B — Brief provided inline: Use the brief fields as given.
Option C — No brief specified: Ask the user which brief to use. If they only have one or two briefs, suggest them by ID.
Store these brief fields for prompt customization:
- Core_Problem, Core_Promise, Key_Insight
- Visual_Metaphor_1, Visual_Metaphor_2
- Audience, Tone_Notes
- The Product and Theme (for filename generation)
Step 2: Determine which asset types to generate
Ask the user what they need, or suggest based on the brief's context. Read references/prompt-templates.md for the full template index.
Common generation batches:
- Homepage refresh: homepage_hero (1-2 variants)
- Product page kit: playbook_mockup + section_illustration (2-3 total)
- Social launch kit: quote_card + og_social (2-4 total)
- Email campaign: email_header (1-2 variants)
- Full batch: one of each relevant type (5-7 total)
For each asset type, confirm:
- The prompt template key (from the template index)
- The aspect ratio
- The number of variants (default: 2)
- The model (default: gpt_image_1_5 for hero/product images, nano_banana_2 for social/email)
Step 3: Customize prompts
For each asset, merge the brief into the base prompt template. Read references/prompt-templates.md for the base prompts and customization rules.
Customization process:
- Start with the base prompt for the asset type
- Replace [TOPIC] placeholders with the brief's Key_Insight or Core_Promise
- Weave in the relevant Visual_Metaphor from the brief as a composition element
- Adjust tone language to match the brief's Tone_Notes
- Add audience context if it sharpens the visual (e.g., "for product leaders" not "for people")
- Append 3-4 relevant negative prompt lines inline at the end
- Keep it under 300 words — image models perform better with focused prompts
Example customization:
Base: "Create a website section illustration representing [TOPIC] for a premium editorial site..."
Customized: "Create a website section illustration representing how AI fluency compounds across product teams — visualized as a tuning fork resonating and amplifying across a workspace. For a premium editorial site about AI-fluent product teams. Use a conceptual metaphor of cascading resonance rather than literal software screenshots. Style should feel designed, strategic, and modern, with subtle texture and disciplined composition. Keep the image clean enough to sit inside a high-end website layout. No text, no neon effects, no generic tech background patterns. No robots or circuit boards. No purple gradients."
Step 4: Generate images
For each customized prompt, generate the image using the media CLI:
asi-generate-image '{"prompt": "<customized_prompt>", "filename": "<filename>", "aspect_ratio": "<ratio>", "model": "<model>"}'
Use api_credentials: ["llm-api:image"] on every bash call.
Generate each image in a separate bash call so they run in parallel.
Filename construction: Use the naming convention script:
python skills/gi-asset-generator/scripts/build_filename.py <product> <theme> <asset_type> <channel> draft [version]
This outputs the filename without extension. Append the variant number if generating multiples (e.g., _varA, _varB).
Model selection:
- gpt_image_1_5: Hero images, product mockups, key brand visuals (higher quality)
- nano_banana_2: Social cards, email headers, teasers (faster iteration)
Step 5: Organize generated files
After generation:
-
Move/copy all generated images to the local pipeline drafts folder:
/home/user/workspace/pipeline-docs/04-Generated-Drafts/Images/
-
For each generated image, prepare an asset register entry with these fields:
- Asset_ID: auto-generated by the script
- Prompt_ID: the template ID used (PRM-001 through PRM-007)
- Brief_ID: the brief it was generated from
- Product: from the brief
- Theme: from the brief
- Asset_Type: Hero Image, Section Illustration, Product Mockup, Quote Card, Email Header, OG Image, Teaser
- Channel: Website, LinkedIn, Email, Social, Product Page
- Stage: Draft
- Filename: the full filename with extension
- File_Path: /GreatInvert/04-Generated-Drafts/Images/
- Alt_Text: write a concise accessibility description
- Dimensions: based on aspect ratio (16:9 → 1792x1024, 4:3 → 1536x1024, 1:1 → 1024x1024)
- Format: PNG
- Reviewer: (leave blank — assigned during review)
- QA_Status: (leave blank — set during review)
- Reuse_Potential: High, Medium, or Low based on how adaptable the image is
- Notes: which variant this is, any generation notes
Step 6: Update the tracker
Save all asset entries to a JSON file and run the tracker update script:
python skills/gi-asset-generator/scripts/update_asset_register.py \
<tracker_path> \
/tmp/asset_entries.json
Step 7: Upload to Google Drive
If the Google Drive connector is available:
- Export the generated images to Drive
- Move them into
GreatInvert/04-Generated-Drafts/Images/
- Export the updated tracker spreadsheet
Step 8: Present results
Show the user:
- Thumbnail preview of each generated image (share each file)
- The Asset_IDs assigned
- Which brief and prompt template each came from
- Suggest next step: "These are in Draft. Run them through the QA Checklist (Step 4) to approve the best variants."
Batch Generation
When generating multiple asset types from one brief:
- Customize all prompts first
- Generate all images in parallel (separate bash calls)
- Log all assets to the tracker in a single script run
- Present all results together with a summary table
Variant Strategy
- Generate 2 variants minimum for hero images and product visuals (these are high-stakes placements)
- Generate 1-2 variants for social cards and email headers
- Use different visual metaphors from the brief for variant A vs variant B when possible
- Vary the composition or emphasis, not the fundamental style
Quality Guardrails
Before presenting generated images, quickly check:
- Does it avoid the negative prompt violations? (no purple gradients, no robots, no glowing blobs)
- Is the composition appropriate for the intended placement?
- Could it plausibly appear on an editorial/premium website?
- If it fails these checks, regenerate with a refined prompt before showing the user