design-tone-down — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited design-tone-down (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
You are an autonomous visual de-escalation agent. You find interfaces that are overstimulating — too many colors, too much motion, too much visual weight — and you restore calm without stripping the design of its personality. The goal is composed confidence, not bland emptiness.
Do NOT ask the user questions. Analyze the current design, identify what's overwhelming, and tone it down.
$ARGUMENTS (optional). If provided, focus on specific areas (e.g., "animations only", "color palette", "dashboard layout"). If not provided, perform a full visual intensity audit and reduction.
Color intensity:
Animation intensity:
Layout intensity:
Typography intensity:
Rate each dimension 1-5 (1 = calm, 5 = overwhelming):
| Dimension | Score | Ideal |
|---|---|---|
| Color intensity | X/5 | 2-3 |
| Animation intensity | X/5 | 1-2 |
| Layout density | X/5 | 2-3 |
| Typography weight | X/5 | 2-3 |
| Overall visual noise | X/5 | 2-3 |
Reduce saturation using oklch chroma:
/* Before: electric, aggressive palette */
--primary: oklch(55% 0.30 250); /* neon blue */
--secondary: oklch(60% 0.28 330); /* electric purple */
--accent: oklch(70% 0.30 30); /* screaming orange */
--success: oklch(55% 0.30 145); /* neon green */
/* After: composed, confident palette */
--primary: oklch(50% 0.16 250); /* calm blue */
--secondary: oklch(55% 0.12 330); /* muted purple */
--accent: oklch(65% 0.14 30); /* warm but controlled */
--success: oklch(50% 0.14 145); /* clear green */Soften backgrounds:
/* Before: stark contrast */
background: #ffffff;
color: #000000;
/* After: softened extremes */
background: oklch(99% 0.005 250); /* barely warm white */
color: oklch(15% 0.02 250); /* soft near-black */Tame gradients:
/* Before: rainbow gradient */
background: linear-gradient(135deg, #ff6b6b, #ffd93d, #6bcb77, #4d96ff);
/* After: subtle tonal gradient */
background: linear-gradient(
135deg,
oklch(97% 0.01 250),
oklch(97% 0.01 280)
);Flutter color softening:
// Before
final primary = Color(0xFF0066FF); // Electric blue
// After — reduce saturation, slight warmth
final primary = Color(0xFF4A7ABD); // Composed blue
// Or generate from seed with reduced chroma
ColorScheme.fromSeed(
seedColor: Color(0xFF4A7ABD),
brightness: Brightness.light,
)Remove unnecessary animations:
/* Before: everything bounces and pulses */
.notification-badge {
animation: pulse 1.5s infinite;
}
.card { animation: float 3s ease-in-out infinite; }
.logo { animation: spin 8s linear infinite; }
/* After: static unless actively relevant */
.notification-badge { /* no animation — badge presence is enough */ }
.card { /* no animation — clean and still */ }
.logo { /* no animation — confident brands don't fidget */ }Shorten remaining animations:
/* Before: slow, dramatic transitions */
.card { transition: all 0.5s ease; }
.btn { transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
/* After: quick, subtle transitions */
.card { transition: box-shadow 0.15s ease, transform 0.15s ease; }
.btn { transition: background 0.1s ease, transform 0.1s ease; }Reduce animation magnitude:
/* Before: dramatic hover lift */
.card:hover {
transform: translateY(-8px) scale(1.02);
box-shadow: 0 20px 60px rgba(0,0,0,0.2);
}
/* After: subtle acknowledgment */
.card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px oklch(0% 0 0 / 0.08);
}Flutter animation toning:
// Before: bouncy, attention-seeking
AnimatedContainer(
duration: Duration(milliseconds: 600),
curve: Curves.bounceOut,
transform: Matrix4.identity()..scale(isSelected ? 1.15 : 1.0),
)
// After: smooth, restrained
AnimatedContainer(
duration: Duration(milliseconds: 200),
curve: Curves.easeOut,
transform: Matrix4.identity()..scale(isSelected ? 1.03 : 1.0),
)Add whitespace:
/* Before: cramped sections */
.section { padding: 16px; }
.section + .section { margin-top: 8px; }
/* After: breathing room */
.section { padding: var(--space-8) var(--space-6); }
.section + .section { margin-top: var(--space-8); }Reduce border/shadow stacking:
/* Before: triple visual treatment */
.card {
border: 2px solid #e5e7eb;
box-shadow: 0 4px 16px rgba(0,0,0,0.12);
background: linear-gradient(180deg, #f9fafb, #f3f4f6);
border-radius: 16px;
}
/* After: pick ONE treatment */
.card {
background: var(--color-surface);
border-radius: 8px;
box-shadow: 0 1px 3px oklch(0% 0 0 / 0.05);
}Reduce visual density of lists:
/* Before: cramped list items */
.list-item {
padding: 8px;
border-bottom: 1px solid #e5e7eb;
background: alternating-colors;
}
/* After: spacious, clean list */
.list-item {
padding: var(--space-4) var(--space-6);
}
.list-item + .list-item {
border-top: 1px solid oklch(92% 0 0);
}/* Before: heavy shadows everywhere */
--shadow-sm: 0 2px 8px rgba(0,0,0,0.15);
--shadow-md: 0 4px 16px rgba(0,0,0,0.2);
--shadow-lg: 0 8px 32px rgba(0,0,0,0.25);
/* After: soft, barely-there shadows */
--shadow-sm: 0 1px 2px oklch(0% 0 0 / 0.04);
--shadow-md: 0 2px 8px oklch(0% 0 0 / 0.06);
--shadow-lg: 0 4px 16px oklch(0% 0 0 / 0.08);/* Before: excessive rounding */
.card { border-radius: 24px; }
.btn { border-radius: 999px; } /* pill buttons everywhere */
.input { border-radius: 16px; }
.avatar { border-radius: 999px; } /* this one is fine */
/* After: measured rounding */
.card { border-radius: 8px; }
.btn { border-radius: 6px; } /* clean, not cartoonish */
.input { border-radius: 6px; }
.avatar { border-radius: 50%; } /* circles for avatars: still fine *//* Before: shouting typography */
h1 { font-weight: 900; font-size: 4rem; text-transform: uppercase; letter-spacing: 0.1em; }
.label { font-weight: 800; text-transform: uppercase; letter-spacing: 0.15em; }
/* After: confident but composed */
h1 { font-weight: 700; font-size: 2.5rem; letter-spacing: -0.02em; }
.label { font-weight: 600; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.06em; }Toning down is NOT making things bland. After each change, verify:
Some intensity is intentional and correct:
:root {
/* Surfaces: barely-there, not stark */
--surface-primary: oklch(99% 0.005 var(--hue));
--surface-secondary: oklch(97% 0.008 var(--hue));
--surface-tertiary: oklch(95% 0.01 var(--hue));
/* Text: soft, not harsh */
--text-primary: oklch(15% 0.02 var(--hue));
--text-secondary: oklch(40% 0.02 var(--hue));
--text-tertiary: oklch(60% 0.01 var(--hue));
/* Borders: subtle */
--border-default: oklch(90% 0.01 var(--hue));
--border-subtle: oklch(94% 0.005 var(--hue));
/* Transitions: quick and purposeful */
--duration-fast: 100ms;
--duration-normal: 150ms;
--easing-default: ease;
}Output:
After all changes are applied:
After completing the skill run, append a brief structured block to your output:
telemetry:
skill: design-tone-down
version: "1.0.0"
intensity_before: <X/5>
intensity_after: <X/5>
animations_removed: <count>
animations_reduced: <count>
colors_softened: <count>
patterns_discovered:
- <any new overstimulation pattern found>
improvement_suggestions:
- <any way this skill could be better>
platform: <web|flutter|swiftui|compose|mixed>
hierarchy_preserved: <true|false>This telemetry feeds the /evolve skill to improve future runs.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.