Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Editorial / magazine / long-form / Medium / Substack / content-heavy UIs. Locked knobs: CRAFT=9, MOTION=4, DENSITY=3. Serif display + humanist body, wide reading column, drop caps, OpenType. Trigger on: editorial, magazine, long-form, blog, Medium-like, Substack-like.
.claude/skills/educlopez-ui-craft-editorial/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 137% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 147% | 0% |
<!-- HARNESS MIRROR — do not edit here. Canonical source: skills/ or commands/. After editing source, copy into cli/assets/<harness>/ and repo-root harness mirrors. -->
Pre-committed editorial style: magazine, long-form, content-first. Typography carries the hierarchy; layout serves the reading experience.
Do not re-ask these in Discovery. Confirm accent + serif/sans pairing only.
leading-relaxed (1.7) on body.max-w-[65ch]. Generous vertical rhythm.All rules in ../ui-craft/SKILL.md apply. This file overrides knob defaults and adds style-specific guidance below. The anti-slop and craft tests still apply in full.
Typography (the whole point)
text-wrap: balance, font-optical-sizing: auto, tracking near 0 or slightly negative on large sizes.text-wrap: pretty, line-height: 1.7, font-feature-settings: "liga", "kern".p:first-of-type::first-letter { float: left; font-size: 4.5em; line-height: 0.85; padding: 6px 10px 0 0; font-family: <display>; }.font-variant-caps: small-caps for section labels, bylines.font-feature-settings: "ss01", "cv11" when the chosen font supports them.Color
oklch(98% 0.01 85) — not pure #fff.oklch(18% 0.01 40) warm near-black.Spacing & layout
max-w-[65ch] for body; hero and featured image can break out to max-w-5xl.Motion
prefers-reduced-motion — cut all reveals.Content components
·.max-w-[55ch].Load these from ../ui-craft/references/:
typography.md — the primary reference for this stylelayout.md — reading column, rhythm, hierarchycolor.md — warm palette, accent disciplinecopy.md — editorial voice, headings, empty statesSkip dashboard.md, sound.md unless relevant.
#fff canvas. Warm it.leading-tight on body copy. Reading needs 1.6-1.8.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 35,635 | 30,998 | -13% | 1 | 1 | 0% | 6,183 | 7,521 | +22% | 0 | 0 | — |
case-05 | fail→fail | 26,761 | 28,754 | +7% | 1 | 1 | 0% | 6,185 | 7,523 | +22% | 0 | 0 | — |
case-06 | pass→fail | 29,784 | 31,592 | +6% | 1 | 1 | 0% | 6,174 | 7,512 | +22% | 0 | 0 | — |
case-01 | fail→pass | 30,409 | 39,497 | +30% | 1 | 1 | 0% | 6,211 | 7,549 | +22% | 0 | 0 | — |
case-02 | fail→fail | 28,178 | 27,811 | -1% | 1 | 1 | 0% | 6,211 | 7,549 | +22% | 0 | 0 | — |
case-03 | fail→fail | 30,384 | 28,040 | -8% | 1 | 1 | 0% | 6,207 | 7,544 | +22% | 0 | 0 | — |
case-07 | fail→fail | 31,133 | 33,168 | +7% | 1 | 1 | 0% | 6,193 | 7,531 | +22% | 0 | 0 | — |
case-08 | fail→fail | 16,361 | 20,166 | +23% | 1 | 1 | 0% | 3,463 | 5,562 | +61% | 0 | 0 | — |
case-09 | fail→pass | 10,950 | 16,132 | +47% | 1 | 1 | 0% | 2,396 | 4,796 | +100% | 0 | 0 | — |
case-10 | fail→pass | 12,274 | 19,918 | +62% | 1 | 1 | 0% | 2,380 | 5,634 | +137% | 0 | 0 | — |
case-11 | fail→pass | 13,136 | 12,438 | -5% | 1 | 1 | 0% | 2,442 | 3,670 | +50% | 0 | 0 | — |
case-12 | fail→pass | 12,248 | 26,552 | +117% | 1 | 1 | 0% | 2,515 | 6,221 | +147% | 0 | 0 | — |
case-13 | fail→fail | 13,773 | 17,493 | +27% | 1 | 1 | 0% | 2,750 | 4,914 | +79% | 0 | 0 | — |
case-14 | fail→pass | 13,507 | 28,073 | +108% | 1 | 1 | 0% | 2,880 | 7,512 | +161% | 0 | 0 | — |
case-15 | pass→pass | 13,390 | 12,292 | -8% | 1 | 1 | 0% | 2,561 | 3,867 | +51% | 0 | 0 | — |
case-16 | fail→pass | 17,574 | 18,889 | +7% | 1 | 1 | 0% | 3,219 | 5,101 | +58% | 0 | 0 | — |
case-17 | fail→fail | 27,229 | 29,401 | +8% | 1 | 1 | 0% | 6,078 | 7,512 | +24% | 0 | 0 | — |
case-18 | fail→pass | 9,725 | 22,895 | +135% | 1 | 1 | 0% | 1,985 | 4,943 | +149% | 0 | 0 | — |
case-19 | fail→pass | 11,021 | 30,258 | +175% | 1 | 1 | 0% | 2,000 | 7,519 | +276% | 0 | 0 | — |
case-20 | fail→fail | 18,174 | 18,530 | +2% | 1 | 1 | 0% | 3,684 | 4,783 | +30% | 0 | 0 | — |
case-21 | fail→fail | 14,790 | 32,554 | +120% | 1 | 1 | 0% | 2,655 | 7,517 | +183% | 0 | 0 | — |
case-22 | fail→pass | 19,760 | 16,986 | -14% | 1 | 1 | 0% | 3,326 | 4,732 | +42% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.