Convert team-interactive-craft, team-motion-design, team-visual-a11y, team-ui-polish from Claude agent format to Codex v4 API (spawn_agent, wait_agent, close_agent, request_user_input). Each skill includes SKILL.md with Delegation Lock + v4 Coordination, coordinator with Scope Lock, worker roles with preserved domain content, and specs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8.2 KiB
Fix Strategies
Maps issue categories to Impeccable fix strategies. Used by diagnostician for fix planning and optimizer for implementation guidance.
Strategy Index
| Issue Category | Fix Strategy | Impeccable Concept | Scope |
|---|---|---|---|
| AI slop aesthetic | De-template | normalize + critique | Systemic |
| Color problems | Colorize | colorize | Systemic / Per-file |
| Typography issues | Typeset | typeset | Systemic |
| Spacing/layout | Arrange | arrange | Systemic / Per-file |
| Animation issues | Animate | animate | Per-file |
| Missing states | Harden | harden + polish | Per-component |
| Visual noise | Simplify | quieter + distill | Per-component |
| Too bland/weak | Strengthen | bolder + delight | Per-component |
| Inconsistency | Normalize | normalize | Systemic |
| Final pass | Polish | polish | Per-component |
| Hierarchy issues | Clarify | distill + bolder | Per-page |
| Responsive issues | Adapt | adapt | Per-component |
De-template (Anti-AI-Slop)
When: Anti-patterns dimension score 0-2 (AI slop or heavy AI influence)
Strategy:
- Replace generic fonts with distinctive alternatives (see design-standards.md Typography)
- Convert gradient text to solid accent colors with weight/size emphasis instead
- Break identical card grids: vary sizes, add featured card, introduce asymmetry
- Remove decorative glassmorphism (keep functional like overlays)
- Redesign hero metrics with intentional hierarchy, not template layout
- Flatten nested cards into single-level with spacing
- Add left-alignment for body text, centering only for specific hero elements
- Create button hierarchy: 1 primary, ghost secondary, text tertiary
- Introduce spacing rhythm (tight within groups, generous between sections)
- Replace bounce easing with exponential curves
Dependency: Requires Colorize and Typeset to be planned (often executed together).
Colorize
When: Color dimension score 0-2 or any P0/P1 color issues
Strategy:
-
Token foundation (if no tokens exist):
- Create CSS custom property file with full neutral scale (50-950)
- Define primary, semantic (success/warning/error/info), and surface tokens
- All neutrals tinted toward brand hue (OKLCH chroma 0.005-0.01)
-
Pure black/white removal:
#000->oklch(0.08-0.15 0.01 <hue>)(near-black, brand tinted)#fff->oklch(0.97-0.99 0.005 <hue>)(near-white, brand tinted)
-
Gray tinting:
- Convert all pure grays to brand-tinted variants
- Add chroma 0.005-0.01 at brand hue
-
Contrast fixes:
- Measure each text/background pair
- Adjust lightness until WCAG AA met (4.5:1 normal, 3:1 large)
-
OKLCH conversion:
- Convert key palette colors from hex/hsl to oklch
- Generate tint/shade scales in OKLCH for perceptual uniformity
-
60-30-10 enforcement:
- Audit accent color usage, reduce to ~10%
- Ensure neutral dominates at ~60%
Dependency: Should run before De-template (anti-slop fixes may need new colors).
Typeset
When: Typography dimension score 0-2 or muddy hierarchy
Strategy:
- Font replacement: Swap generic fonts for distinctive alternatives
- Body: Plus Jakarta Sans, Instrument Sans, DM Sans, Geist
- Display: Space Grotesk, Manrope, Fraunces
- Scale establishment: Choose modular ratio (1.25 or 1.333 recommended), generate size scale
- Fluid sizing: Add
clamp()for h1-h3 display sizes - Line length: Add
max-width: 65chto prose containers - Vertical rhythm: Set line-height system (1.5 body, 1.2 headings)
- Font loading: Add
font-display: swapto all @font-face
Dependency: Run before Clarify (hierarchy depends on type scale).
Arrange
When: Spacing dimension score 0-2 or arbitrary spacing values
Strategy:
- Scale creation: Define 4pt base scale as CSS custom properties
- Value replacement: Map arbitrary values to nearest scale value
- Rhythm introduction: Tight (4-8px) within groups, comfortable (16-24px) between items, generous (48-96px) between sections
- Card flattening: Remove nested cards, replace with spacing + subtle dividers
- Gap conversion: Replace margin between siblings with gap on flex/grid parent
- Touch targets: Ensure all interactive elements are 44x44px minimum
Dependency: Independent, but benefits from Colorize tokens being in place.
Animate
When: Motion dimension score 0-2 or layout property animations
Strategy:
- Property fix: Replace layout animations (width/height/margin/padding) with transform+opacity
- Easing fix: Replace ease/linear/bounce with exponential curves
- Reduced-motion: Add
@media (prefers-reduced-motion: reduce)global rule - Token system: Create duration + easing custom properties
- Stagger cap: Cap stagger at 10 items, 500ms total
- will-change: Remove from CSS, document JS activation pattern
Dependency: Independent.
Harden
When: Interaction states dimension score 0-2 or missing critical states
Strategy:
- Hover: Add
:hoverwith subtle visual change, wrap in@media(hover:hover) - Focus: Add
:focus-visiblewith 2px solid accent ring, offset 2px - Active: Add
:activewith scale(0.97) or darker background - Disabled: Add
[disabled]with opacity 0.5, cursor not-allowed - Loading: Add aria-busy pattern with spinner/skeleton
- Error/Success: Add form validation visual states
- Focus ring: Ensure 3:1 contrast against all adjacent colors
- Labels: Replace placeholder-as-label with visible
<label>elements - Touch targets: Pad interactive elements to 44px minimum
Dependency: Requires Colorize tokens for consistent state colors.
Simplify (quieter + distill)
When: Visual noise, too many decorations, competing elements
Strategy:
- Remove decorative elements that do not aid comprehension
- Mute icon colors (reduce saturation/opacity)
- Remove background decorations and unnecessary borders
- Reduce shadow intensity
- Simplify card borders (remove or lighten)
- Remove sparkline decorations without data value
Dependency: Independent.
Strengthen (bolder + delight)
When: Too bland, everything same weight, no emphasis
Strategy:
- Increase primary element size by 1.5-2x
- Add color saturation to primary CTA
- Increase weight contrast (bold primary, regular secondary)
- Add subtle micro-interactions (hover lift, active press)
- Introduce one distinctive element (asymmetric layout, unexpected color, custom illustration)
Dependency: Requires Typeset and Colorize to be in place.
Clarify (hierarchy)
When: Visual hierarchy dimension score 0-2 or fails squint test
Strategy:
- Identify primary element, increase to 3:1 ratio over body
- Use 2-3 hierarchy tools together (size + weight + color)
- Group related content with proximity (smaller gaps within, larger between)
- Reduce visual weight of competing secondary elements
- Ensure only 1 primary CTA per viewport
- Add progressive disclosure where appropriate
Dependency: Requires Typeset (size hierarchy) and Colorize (color hierarchy).
Adapt (responsive)
When: Responsive dimension score 0-2 or broken mobile experience
Strategy:
- Replace fixed widths with fluid (%, vw, fr, min/max/clamp)
- Add missing breakpoints (640, 768, 1024, 1280px)
- Fix overflow (horizontal scroll causes)
- Fix mobile text sizes (minimum 14px)
- Fix touch targets (minimum 44px)
- Add container queries for component-level responsive
- Restructure hidden content (adapt, don't hide)
- Add viewport meta tag if missing
Dependency: Run last -- tests all other fixes at different viewports.
Fix Order (Default)
When applying all strategies in a full polish cycle:
Phase 1: Foundation
1. Colorize (token system + color fixes)
2. Typeset (font + scale + fluid sizing)
3. Arrange (spacing scale + layout)
Phase 2: Aesthetic
4. De-template (anti-AI-slop cleanup)
5. Simplify or Strengthen (as needed)
Phase 3: Interaction
6. Animate (motion system)
7. Harden (interaction states)
Phase 4: Structure
8. Clarify (visual hierarchy)
Phase 5: Validation
9. Adapt (responsive -- tests everything)