Hexed is a Claude skill that extracts structured color systems from images and builds a complete design system.
SaferSkills independently audited hexed (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Hexed is an image-to-color-system compiler that extracts structured color palettes from visual references.
Hexed accepts 1-5 images (PNG, JPG, WebP) and returns a complete color system suitable for UI design, product themes, and design tokens. The output is deterministic, structured, and ready for downstream automation.
This skill does not generate copy, layouts, or branding concepts. It only produces color systems derived from visual input.
Use Hexed when the user:
Example triggers:
Given uploaded images, Hexed produces a structured color system including:
The output structure is stable and designed for direct use in design systems and frontend tooling.
When the user uploads images, they're available at /mnt/user-data/uploads/. Check what's available:
ls -lh /mnt/user-data/uploads/Use the hexed_compiler.py script to process images:
import sys
sys.path.append('/mnt/skills/user/hexed')
from hexed_compiler import compile_from_images
# Process 1-5 images
image_paths = [
'/mnt/user-data/uploads/image1.png',
'/mnt/user-data/uploads/image2.jpg'
]
result = compile_from_images(image_paths, mode='ui_first')
if result['ok']:
color_system = result['color_system']
debug_info = result['debug']
# Use the color system...
else:
print(f"Error: {result['message']}")Modes:
ui_first (default): Optimized for UI/product designbrand_first: Optimized for brand/marketing materialsAfter compiling, export the color system:
from hexed_exports import (
export_css_variables,
export_tailwind_config,
export_figma_tokens
)
# CSS Variables
css = export_css_variables(color_system)
# Tailwind Config
tailwind = export_tailwind_config(color_system)
# Figma Tokens
figma_result = export_figma_tokens(color_system)
figma_json = figma_result['tokens']Save exports to /mnt/user-data/outputs/ so the user can access them:
import json
# Save JSON color system
with open('/mnt/user-data/outputs/color-system.json', 'w') as f:
json.dump(color_system, f, indent=2)
# Save CSS variables
with open('/mnt/user-data/outputs/colors.css', 'w') as f:
f.write(css)
# Save Tailwind config
with open('/mnt/user-data/outputs/tailwind.config.js', 'w') as f:
f.write(tailwind)
# Save Figma tokens
with open('/mnt/user-data/outputs/figma-tokens.json', 'w') as f:
json.dump(figma_json, f, indent=2)Then use present_files to share them with the user.
The compiled color system follows this structure:
{
"version": "1.0",
"meta": {
"id": "cs_generated",
"mode": "ui_first",
"generated_at": "2026-01-21T...",
"engine": { "name": "hexed", "engine_version": "0.2.0" }
},
"colors": {
"core": {
"primary": { "hex": "#3B6EF5", "space": "srgb" },
"secondary": { "hex": "#1CC7A1", "space": "srgb" },
"accent": { "hex": "#FF4D6D", "space": "srgb" }
},
"neutrals": {
"ramp": [
{ "step": 50, "hex": "#F7F8FA" },
{ "step": 100, "hex": "#EDF0F4" },
...
{ "step": 900, "hex": "#151825" }
],
"intent": "cool_neutral"
},
"semantic": {
"success": { "hex": "#1DB954", "space": "srgb" },
"warning": { "hex": "#F5A623", "space": "srgb" },
"error": { "hex": "#E02424", "space": "srgb" },
"info": { "hex": "#3B6EF5", "space": "srgb" }
}
},
"ui": {
"themes": {
"light": { /* theme tokens */ },
"dark": { /* theme tokens */ }
}
}
}Outputs :root variables plus theme-specific selectors:
:root {
--color-primary: #3B6EF5;
--color-secondary: #1CC7A1;
--neutral-500: #7E8AA3;
}
[data-theme="light"] {
--background: #F7F8FA;
--text: #151825;
}Outputs a JavaScript module for tailwind.config.js:
export default {
theme: {
extend: {
colors: {
primary: "#3B6EF5",
neutral: {
"500": "#7E8AA3",
"600": "#5C667D"
}
}
}
}
};Outputs JSON compatible with Tokens Studio for Figma plugin.
User: "Can you extract colors from these images and give me CSS variables?"
Claude response pattern:
compile_from_images() with the image pathsexport_css_variables()/mnt/user-data/outputs/colors.csspresent_files to share the CSS fileAlgorithm:
Dependencies:
"Image processing failed": The image file may be corrupted or in an unsupported format. Ask user to re-upload.
"No colors extracted": Image may be fully transparent or monochrome. Check the debug output.
"Colors don't match expectations": Try the other mode (brand_first vs ui_first) or suggest adjusting the source images.
Created by Heathen (x.com/heathenft)
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.