{
"event": "PreToolUse",
"tool_name": "Bash",
"tool_input": {
"command": "mysql -u root -pv8mFLmkF2fth_r -D ki_dev -e \"SELECT yaml_content FROM contracts WHERE name = 'CSS Contract' AND status = 'active';\" 2>\/dev\/null | tail -n +2",
"description": "Get CSS Contract"
}
}
{
"tool_response": {
"stdout": "contract:\\n name: \"CSS Contract\"\\n version: \"1.0\"\\n status: active\\n scope:\\n - \"\/src\/View\/**\/*.php\"\\n - \"\/public\/css\/**\/*.css\"\\n - \"inline styles\"\\n principles:\\n - WCAG # Web Content Accessibility Guidelines 2.1 AA\\n - DRY # Don't Repeat Yourself\\n - KISS # Keep It Simple, Stupid\\n\\nrules:\\n accessibility:\\n - id: A11Y-001\\n severity: critical\\n rule: \"Farbkontrast min. 4.5:1 für normalen Text\"\\n wcag: \"1.4.3 Contrast (Minimum)\"\\n forbidden:\\n - \"color: white; background: #f5f5f5\" # 1.3:1\\n - \"color: #999; background: #fff\" # 2.8:1\\n - \"color: #777; background: #eee\" # 2.5:1\\n valid:\\n - \"color: #333; background: #f5f5f5\" # 9.7:1\\n - \"color: #000; background: #fff\" # 21:1\\n - \"color: #555; background: #fff\" # 7.5:1\\n tools:\\n - \"https:\/\/webaim.org\/resources\/contrastchecker\/\"\\n\\n - id: A11Y-002\\n severity: critical\\n rule: \"Farbkontrast min. 3:1 für großen Text (>= 18pt)\"\\n wcag: \"1.4.3 Contrast (Minimum)\"\\n\\n - id: A11Y-003\\n severity: major\\n rule: \"Keine Farbe als einziges Unterscheidungsmerkmal\"\\n wcag: \"1.4.1 Use of Color\"\\n example:\\n wrong: |\\n .error { color: red; }\\n .success { color: green; }\\n correct: |\\n .error { color: #c00; border-left: 3px solid #c00; }\\n .success { color: #060; border-left: 3px solid #060; }\\n\\n - id: A11Y-004\\n severity: major\\n rule: \"Focus-Styles niemals entfernen\"\\n wcag: \"2.4.7 Focus Visible\"\\n forbidden:\\n - \"outline: none\"\\n - \"outline: 0\"\\n exception: \"Nur wenn alternativer Focus-Style definiert\"\\n example:\\n wrong: |\\n a:focus { outline: none; }\\n correct: |\\n a:focus { outline: 2px solid #007bff; outline-offset: 2px; }\\n\\n typography:\\n - id: TYP-001\\n severity: major\\n rule: \"Mindestschriftgröße 16px für Fließtext\"\\n reason: \"Lesbarkeit auf allen Geräten\"\\n forbidden:\\n - \"font-size: 12px\"\\n - \"font-size: 0.75rem\"\\n valid:\\n - \"font-size: 16px\"\\n - \"font-size: 1rem\"\\n\\n - id: TYP-002\\n severity: major\\n rule: \"Zeilenhöhe min. 1.5 für Fließtext\"\\n wcag: \"1.4.12 Text Spacing\"\\n example:\\n correct: \"line-height: 1.5\"\\n\\n - id: TYP-003\\n severity: minor\\n rule: \"Maximale Zeilenlänge 80 Zeichen\"\\n reason: \"Lesbarkeit\"\\n example:\\n correct: \"max-width: 70ch\"\\n\\n colors:\\n - id: COL-001\\n severity: critical\\n rule: \"Vordergrundfarbe immer mit Hintergrundfarbe definieren\"\\n reason: \"User-Stylesheets können Farben überschreiben\"\\n example:\\n wrong: |\\n .box { color: #333; }\\n correct: |\\n .box { color: #333; background-color: #fff; }\\n\\n - id: COL-002\\n severity: major\\n rule: \"CSS-Variablen für Farben verwenden\"\\n example:\\n correct: |\\n :root {\\n --color-text: #333;\\n --color-bg: #fff;\\n --color-primary: #007bff;\\n --color-success: #28a745;\\n --color-error: #dc3545;\\n --color-warning: #ffc107;\\n }\\n .element { color: var(--color-text); }\\n\\n - id: COL-003\\n severity: major\\n rule: \"Status-Farben konsistent verwenden\"\\n palette:\\n pending: \"#856404 on #fff3cd\" # Gelb\/Warnung\\n in_progress: \"#004085 on #cce5ff\" # Blau\/Info\\n completed: \"#155724 on #d4edda\" # Grün\/Erfolg\\n failed: \"#721c24 on #f8d7da\" # Rot\/Fehler\\n cancelled: \"#383d41 on #e2e3e5\" # Grau\/Neutral\\n\\n layout:\\n - id: LAY-001\\n severity: minor\\n rule: \"Box-sizing border-box global setzen\"\\n example:\\n correct: |\\n *, *::before, *::after {\\n box-sizing: border-box;\\n }\\n\\n - id: LAY-002\\n severity: minor\\n rule: \"Spacing-System mit konsistenten Werten\"\\n example:\\n correct: |\\n :root {\\n --space-xs: 0.25rem;\\n --space-sm: 0.5rem;\\n --space-md: 1rem;\\n --space-lg: 1.5rem;\\n --space-xl: 2rem;\\n }\\n\\n code_blocks:\\n - id: CODE-001\\n severity: critical\\n rule: \"Pre\/Code-Blöcke: dunkler Text auf hellem Hintergrund\"\\n example:\\n correct: |\\n pre, code {\\n background: #f5f5f5;\\n color: #333;\\n }\\n\\n - id: CODE-002\\n severity: major\\n rule: \"Monospace-Font für Code\"\\n example:\\n correct: |\\n pre, code {\\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\\n }\\n\\n responsive:\\n - id: RES-001\\n severity: major\\n rule: \"Mobile-First Breakpoints\"\\n breakpoints:\\n sm: \"576px\"\\n md: \"768px\"\\n lg: \"992px\"\\n xl: \"1200px\"\\n\\n - id: RES-002\\n severity: major\\n rule: \"Viewport Meta-Tag erforderlich\"\\n example:\\n correct: |\\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\\n\\n forbidden:\\n - id: FRB-001\\n severity: critical\\n rule: \"Kein !important außer für Utility-Klassen\"\\n exception: \"Nur für .hidden, .sr-only etc.\"\\n\\n - id: FRB-002\\n severity: major\\n rule: \"Keine inline-styles für wiederholte Muster\"\\n fix: \"CSS-Klassen definieren\"\\n\\n - id: FRB-003\\n severity: minor\\n rule: \"Keine vendor-prefixes ohne Fallback\"\\n\\nvalidation:\\n pass_threshold:\\n critical: 0\\n major: 2\\n minor: 5\\n\\n checklist:\\n - \"Alle Texte haben Kontrast >= 4.5:1\"\\n - \"Focus-States sind sichtbar\"\\n - \"Farben haben immer Vorder- UND Hintergrund\"\\n - \"Pre\/Code-Blöcke sind lesbar\"\\n - \"Responsive auf 320px getestet\"\\n\\nfixes:\\n task_show_pre:\\n file: \"\/src\/View\/tasks\/show.php\"\\n issue: \"Weiße Schrift auf hellgrauem Hintergrund\"\\n fix: |\\n pre {\\n background: #f5f5f5;\\n color: #333; \/* NICHT #fff oder inherit von parent *\/\\n }\\n",
"stderr": "",
"interrupted": false,
"isImage": false
}
}