---
name: visual-prompt-engine
description: "Generate diverse, non-repetitive image prompts powered by real visual references from Dribbble and design platforms. USE WHEN: user wants an image prompt, needs creative visual inspiration, asks for design-informed prompts, wants to avoid repetitive AI image generation, or says 'generate a prompt for an image', 'give me a creative image idea', 'make me a unique visual prompt'. DON'T USE WHEN: user wants to generate the image itself (use an image generation tool), wants to edit an existing image, or needs text-only content. EDGE CASES: 'make me an image' → use image generation tool, then optionally this skill for the prompt. 'improve this image prompt' → this skill. 'I keep getting similar AI images' → this skill (solves repetition)."
---
# Visual Prompt Engine
Generate high-quality, diverse image prompts by feeding real visual references into a structured prompt pipeline.
## Problem
AI agents reuse the same visual patterns and clichés when writing image prompts. This skill breaks that cycle by grounding prompts in real, trending design work.
## Architecture
```
Dribbble Scraper → Style Cards → Prompt Generator → Quality Reviewer → Final Prompt
```
## Quick Start
### 1. Collect Visual References
**Recommended: Browser-based collection** (Dribbble blocks automated requests)
Browse `https://dribbble.com/shots/popular` with a browser tool (Camofox, Playwright, etc.), collect shot URLs, titles, and image URLs, then save as JSON:
```bash
python3 scripts/scrape_dribbble.py --method import --import-file manual_shots.json --output data/references.json
```
**Alternative: RSS/HTML** (may be blocked by WAF)
```bash
python3 scripts/scrape_dribbble.py --output data/references.json --count 20
```
The import JSON format: `[{"title": "...", "url": "https://dribbble.com/shots/...", "image_url": "..."}]`
### 2. Build Style Cards
Convert raw references into style cards:
```bash
python3 scripts/style_card.py build --input data/references.json --output data/style_cards.json
```
### 3. Generate Prompts
When the user requests an image prompt:
1. Read `data/style_cards.json` for available visual references
2. Select 1-3 cards relevant to the user's goal
3. Read `references/prompt-patterns.md` for diverse prompt structures
4. Read `references/visual-vocabulary.md` for precise design terminology
5. Compose a prompt combining: user goal + style card elements + varied pattern
6. Check against recent prompts in `data/prompt_history.json` to prevent repetition
7. Append the new prompt to history
### 4. Review and Deliver
Before delivering, verify the prompt:
- Uses specific visual language (not generic adjectives)
- References concrete design elements from the style card
- Follows a pattern different from the last 5 prompts
- Includes composition, lighting, color palette, and mood
## Style Card Schema
See `references/style-card-schema.md` for the full schema. A style card contains:
| Field | Description |
|-------|-------------|
| `palette` | Hex colors extracted from the design |
| `composition` | Layout structure (grid, asymmetric, centered, etc.) |
| `typography` | Font style and weight characteristics |
| `mood` | Emotional tone (bold, minimal, playful, etc.) |
| `textures` | Surface qualities (glass, grain, matte, etc.) |
| `lighting` | Light direction and quality |
| `source_url` | Original Dribbble shot URL |
| `tags` | Design categories |
## Prompt Patterns
See `references/prompt-patterns.md` for 12+ distinct prompt structures that prevent repetition. Rotate through patterns to keep outputs fresh.
## Visual Vocabulary
See `references/visual-vocabulary.md` for precise design terminology covering color, composition, lighting, texture, and typography. Use these terms instead of generic words like "beautiful" or "nice".
## Automation (Optional)
Set up a daily cron to refresh visual references:
```bash
# Run daily to keep references current
python3 scripts/scrape_dribbble.py --output data/references.json --count 20
python3 scripts/style_card.py build --input data/references.json --output data/style_cards.json
```
## Data Directory
The skill stores working data in `data/`:
```
data/
├── references.json # Raw Dribbble scrape results
├── style_cards.json # Processed style cards
└── prompt_history.json # Generated prompts (for deduplication)
```
Create the `data/` directory on first run if it does not exist.
## Dependencies
Python 3.9+ with standard library only. Optional: `requests`, `beautifulsoup4` for live scraping (falls back to Dribbble RSS if not installed).
Install optional dependencies:
```bash
pip install requests beautifulsoup4
```