S1 · Color and skin tone¶
Part II teaches the styling knowledge the prototype reasons over; this chapter explains the color framework Wearly applies at Step 7.
The concept¶
Wearly's color logic rests on the warm / cool axis — the design-school convention that classifies skin undertones and garment colors along the same warm-to-cool dimension and then asks how well a color sits with the wearer. The convention is centuries old; Wearly's implementation is the rule layer that operationalizes the convention against an actual wardrobe.
Three named palettes ship today:
- warm olive — yellow / golden undertone with green influence.
- cool fair — pink / blue undertone with low contrast.
- deep warm — rich brown / golden undertone with high contrast.
Each palette declares three tiers — best, good, avoid — and the agent scores an outfit against the wearer's palette:
score = 60 # neutral base
for each item:
if item.color in palette.best: score += 8
elif item.color in palette.good: score += 4
elif item.color in palette.avoid: score −= 10
score = clamp(score, 0, 100)
Three lookups, one clamp — every term visible in the reasoning trail. The +8 / +4 / −10 asymmetry is a deliberate UX choice: a clash should cost more than a match adds, so the score is conservative.
Where this knowledge comes from¶
Color theory is not a science of "correct" palettes, but it does have a recognized vocabulary and a measured foundation:
- The warm / cool framework descends from Itten's Elements of Color — the formal vocabulary of color contrasts (hue, light/dark, cold/warm, complementary, simultaneous, saturation, extension) that design-school color teaching builds on. ⟶ References [4]
- The measured-color foundation under named palettes goes back to Munsell (1905), who formalized hue × value × chroma as a system a century before today's named palettes. ⟶ References [5]
- The modern perceptual standard is the CIELAB color space (ISO 11664-4:2008). Wearly does not compute ΔE distances at runtime; the citation acknowledges the framework Wearly's named palette sits above. ⟶ References [6]
What Wearly deliberately does not claim:
- That its palettes are empirically optimal for any wearer. They're design-informed conventions, not findings from a randomized study.
- That seasonal-color analysis ("Color Me Beautiful" and similar industry frameworks) is science. The framework is widely referenced but not peer-reviewed; Wearly cites it as industry practice, never as evidence.
Why named colors instead of CIELAB¶
Three reasons, in order of importance:
- The rule has to be auditable. A reasoning line that reads "forest green pairs well with deep-warm undertones" is a sentence a non-expert user can argue with. "ΔE 12.4 against L* 43.2" is not.
- The data is small. Three palettes × roughly 30 named colors
each fits in
color_rules.jsonand is editable by a non-engineer. - The honesty contract demands it. "Tends to work well" is a calibrated claim; a numeric distance suggests precision Wearly does not have.
The trade-off: Wearly cannot reason about colors it doesn't have a name for, and it cannot compute contrast between two named colors in the same outfit. Both are deliberate scope choices — see Chapter 04 for the "why rules, not ML" discussion.
How Wearly applies this¶
| Where | What happens |
|---|---|
| Rule pack | color-coordination-rules.md — R1 (palettes), R2 (scoring), R5 (unknown skin tone) |
| Runtime code | color_tool.score_outfit_colors() |
| Agent step | Step 7 of the seven-step workflow |
| Where it surfaces | The color-score panel + the per-item +8 / +4 / −10 note in the reasoning trail |
| Part I chapter | Chapter 04 · Styling knowledge base |
| MicroSim | Color harmony — try the formula on every combination |
Key terms¶
- Skin-tone palette — one of three named palettes (warm olive, cool fair, deep warm). See Glossary.
- Color tier — best (+8), good (+4), avoid (−10). See Glossary.
- Warm / cool axis — the design-school dimension the three palettes pivot on.
Self-check¶
- (Remember) What are the three palette tiers and their numeric contributions?
- (Understand) Why does Wearly use named colors instead of CIELAB distances at runtime?
- (Apply) For a cool-fair wearer, predict whether
navy + cream + cobaltlands above or below 80, and justify your answer in one sentence.
Self-check follows Bloom's progression — same pattern as Part I chapters and MicroSim pages.