image-analysis
Image Analysis — Color Extraction
Extract dominant colors from any image file (PNG, JPG, WebP, BMP, GIF) and return a structured palette. Useful for implementing UIs that match a screenshot, Figma export, or design mockup.
When to Use
- The user provides a screenshot or design image and wants to implement it
- The user asks to extract or identify colors from an image
- The user wants a color palette from a photo or mockup
- The user wants to match their code's colors to a reference image
How It Works
- Reads the image file using
get-pixelsto obtain raw pixel data - Passes pixel data to
extract-colorsto compute dominant colors - Returns a sorted palette (by area/prominence) with hex, RGB, HSL values, and area coverage
Usage
Run the extraction script, passing the image path as the first argument:
bash <skill-path>/scripts/extract-colors.sh /path/to/image.png
Arguments:
$1— Path to the image file (required). Supports PNG, JPG, WebP, BMP, GIF.
Examples:
# Extract colors from a screenshot
bash <skill-path>/scripts/extract-colors.sh ./screenshot.png
# Extract colors from a Figma export
bash <skill-path>/scripts/extract-colors.sh ~/Downloads/figma-design.jpg
Output
The script outputs a JSON array of colors sorted by prominence:
[
{
"hex": "#1a1a2e",
"red": 26,
"green": 26,
"blue": 46,
"hue": 0.6667,
"saturation": 0.2778,
"lightness": 0.1412,
"area": 0.3241
},
{
"hex": "#e94560",
"red": 233,
"green": 69,
"blue": 96,
"hue": 0.9724,
"saturation": 0.7928,
"lightness": 0.5922,
"area": 0.1856
}
]
| Field | Type | Description |
|---|---|---|
| hex | String | Color as hex string (e.g. #1a1a2e) |
| red | Integer | Red channel (0-255) |
| green | Integer | Green channel (0-255) |
| blue | Integer | Blue channel (0-255) |
| hue | Number | Hue (0-1) |
| saturation | Number | Saturation (0-1) |
| lightness | Number | Lightness (0-1) |
| area | Number | Relative area/prominence (0-1) |
Present Results to User
After extracting colors, present them as a structured palette:
Color Palette (sorted by prominence):
1. #1a1a2e — 32.4% (dark navy) — Primary background
2. #e94560 — 18.6% (coral red) — Accent color
3. #f5f5f5 — 15.2% (light gray) — Secondary background
...
Then suggest how to use these colors in the user's codebase:
- CSS custom properties / variables
- Tailwind config theme colors
- Design token definitions
- Direct usage in component styles
Troubleshooting
"Cannot find module" errors
The script auto-installs dependencies (extract-colors, get-pixels) on first run. If this fails, install them manually:
cd <skill-path>/scripts && npm install
Unsupported image format
The underlying get-pixels library supports PNG, JPG, GIF, and BMP. For other formats, convert the image first.
Large images are slow
The extract-colors library automatically downsamples to 64,000 pixels by default. For very large images this is already fast, but you can adjust the pixels option in the script if needed.
More from pascalorg/skills
image-to-text
Extract text from images using OCR. Use when the user shares a screenshot and you need to read the text content, copy UI labels, or extract copy from a design mockup.
328web-design
Web design reference for building production-grade interfaces. Covers layout, typography, color, spacing, shadows, animation, accessibility, responsive design, components, performance, and UX psychology. Use when building UI, reviewing design quality, choosing design tokens, or making any visual design decision.
56image-compare
Compare two images pixel-by-pixel and get a visual diff. Use when the user wants to compare their implementation against a design, spot differences between two screenshots, or verify visual regression.
43contrast-check
Check color contrast ratios against WCAG AA and AAA accessibility standards. Use when the user wants to verify if their color combinations are accessible, check contrast between text and background colors, or audit a palette for accessibility.
34agent-collaboration
Multi-model agent orchestration using specialized agents for planning, coding, research, math/science, visual analysis, and adversarial review. Use when tasks are complex enough to benefit from different models' strengths, when you want adversarial review to catch blind spots, or when coordinating multi-step workflows across agent roles. Triggers on complex projects, multi-step tasks, architecture decisions, or when explicitly requested.
11