Skip to main content

css-design-tdd

Test-driven CSS design system modifications. Run checks before/after CSS changes to verify token usage, variable definitions, fallbacks, and consistency. Use when modifying CSS tokens, fixing design inconsistencies, or auditing CSS architecture.

معلومات المصدر

المستودع
xiaolai/vmark
آخر نشاط في المصدر
٢٢ أبريل ٢٠٢٦ في ٠٥:٢٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٨٠٣
التفرعات
١٢٦

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
css-design-tdd
description
Test-driven CSS design system modifications. Run checks before/after CSS changes to verify token usage, variable definitions, fallbacks, and consistency. Use when modifying CSS tokens, fixing design inconsistencies, or auditing CSS architecture.
# CSS Design System TDD ## Overview Apply TDD principles to CSS design system work: 1. **RED**: Run checks that reveal current issues 2. **GREEN**: Fix CSS to pass checks 3. **REFACTOR**: Verify no regressions, clean up ## Available Checks ### 1. Undefined Variable Check Find CSS variables used but never defined: ```bash # Extract all var(--name) usages grep -rhoE 'var\(--[a-zA-Z0-9-]+' src/**/*.css | sort -u | sed 's/var(//' > /tmp/css-vars-used.txt # Extract all --name: definitions grep -rhoE '^[[:space:]]*--[a-zA-Z0-9-]+:' src/**/*.css | sed 's/://' | sed 's/^[[:space:]]*//' | sort -u > /tmp/css-vars-defined.txt # Find undefined (used but not defined) comm -23 /tmp/css-vars-used.txt /tmp/css-vars-defined.txt ``` ### 2. Missing Fallback Check Find `var(--name)` without fallbacks in container blocks: ```bash # Blockquote variables without fallback grep -n 'var(--[^,)]*)[^,]' src/components/Editor/editor.css | grep -E 'blockquote|alert|details' # All containers - should have fallbacks for --list-indent, etc. grep -rn 'var(--list-indent)' src/**/*.css # Should be var(--list-indent, 1em) ``` ### 3. Hardcoded Color Check Find hex/rgba colors that should be tokens: ```bash # Hex colors outside :root definitions grep -rn '#[0-9a-fA-F]\{3,6\}' src/**/*.css | grep -v ':root' | grep -v 'var(--' # Hardcoded rgba (should be tokens in dark mode) grep -rn 'rgba(255, 255, 255' src/**/*.css | grep -v ':root' ``` ### 4. Container Consistency Check Verify container blocks use consistent values: ```bash # Check margins across containers echo "=== MARGINS ===" grep -rn 'margin:.*em' src/components/Editor/editor.css src/plugins/alertBlock/*.css src/plugins/detailsBlock/*.css # Check padding echo "=== PADDING ===" grep -rn 'padding:' src/components/Editor/editor.css src/plugins/alertBlock/*.css src/plugins/detailsBlock/*.css | head -20 # Check list multipliers echo "=== LIST MULTIPLIERS ===" grep -rn 'list-indent.*\*' src/**/*.css ``` ### 5. Focus Indicator Check Find interactive elements without focus styles: ```bash # Find elements with hover but no focus-visible for file in src/**/*.css; do if grep -q ':hover' "$file" && ! grep -q ':focus-visible\|:focus' "$file"; then echo "Missing focus: $file" fi done ``` ### 6. Token Usage Audit Check if specific tokens are used consistently: ```bash # Radius token usage echo "=== RADIUS ===" grep -rn 'border-radius:' src/**/*.css | grep -v 'var(--radius' # Shadow token usage echo "=== SHADOWS ===" grep -rn 'box-shadow:' src/**/*.css | grep -v 'var(--shadow\|var(--popup-shadow' ``` ## TDD Workflow ### Phase 1: RED (Establish Baseline) ```bash # Run all checks, save baseline echo "=== CSS TDD BASELINE ===" > /tmp/css-baseline.txt echo "Date: $(date)" >> /tmp/css-baseline.txt # Run each check category echo -e "\n### Undefined Variables ###" >> /tmp/css-baseline.txt # ... run check 1 ... echo -e "\n### Missing Fallbacks ###" >> /tmp/css-baseline.txt # ... run check 2 ... # Count issues echo -e "\n### Summary ###" >> /tmp/css-baseline.txt wc -l /tmp/css-baseline.txt ``` ### Phase 2: GREEN (Fix Issues) For each issue category: 1. **Read the target file** to understand context 2. **Make the minimal fix** (add fallback, use token, etc.) 3. **Re-run the specific check** to verify fix Example fix workflow: ```bash # Before: verify issue exists grep -n 'var(--list-indent)' src/components/Editor/editor.css # Make fix in editor.css (add fallback) # var(--list-indent) → var(--list-indent, 1em) # After: verify issue resolved grep -n 'var(--list-indent)' src/components/Editor/editor.css # Should show fallbacks ``` ### Phase 3: REFACTOR (Verify No Regressions) ```bash # Run full check suite again # Compare to baseline - issues should decrease, not increase # Visual verification pnpm dev # Check in browser: light mode, dark mode, all container types ``` ## Check Scripts ### Quick Check (run before/after changes) ```bash #!/bin/bash # scripts/css-quick-check.sh echo "=== CSS Quick Check ===" echo -e "\n1. Missing Fallbacks:" grep -rn 'var(--list-indent)[^,]' src/**/*.css 2>/dev/null | grep -v '1em)' || echo " ✓ All fallbacks present" echo -e "\n2. Hardcoded Dark Hover:" grep -rn 'rgba(255, 255, 255, 0.08)' src/**/*.css 2>/dev/null | wc -l | xargs -I{} echo " {} occurrences (should be 0)" echo -e "\n3. Container Margin Consistency:" echo " Blockquote:" && grep -o 'margin:.*em' src/components/Editor/editor.css | grep -A1 blockquote | head -1 echo " Alert:" && grep -o 'margin:.*em' src/plugins/alertBlock/alert-block.css | head -1 echo " Details:" && grep -o 'margin:.*em' src/plugins/detailsBlock/details-block.css | head -1 echo -e "\n4. Focus States:" for f in src/plugins/detailsBlock/*.css src/plugins/alertBlock/*.css; do if ! grep -q 'focus-visible' "$f" 2>/dev/null; then echo " Missing focus-visible: $f" fi done echo -e "\nDone." ``` ### Full Audit (run before major changes) ```bash #!/bin/bash # scripts/css-full-audit.sh echo "=== CSS Full Audit ===" echo "Date: $(date)" echo -e "\n## 1. Undefined Variables" grep -rhoE 'var\(--[a-zA-Z0-9-]+' src/**/*.css 2>/dev/null | sort -u | sed 's/var(//' > /tmp/used.txt grep -rhoE '^\s*--[a-zA-Z0-9-]+:' src/**/*.css 2>/dev/null | sed 's/://' | tr -d ' ' | sort -u > /tmp/defined.txt comm -23 /tmp/used.txt /tmp/defined.txt echo -e "\n## 2. Hardcoded Hex Colors (outside :root)" grep -rn '#[0-9a-fA-F]\{3,6\}' src/**/*.css 2>/dev/null | grep -v ':root' | grep -v '\.svg' | wc -l echo -e "\n## 3. Hardcoded Z-Index" grep -rn 'z-index: [0-9]' src/**/*.css 2>/dev/null | grep -v 'var(--' | wc -l echo -e "\n## 4. Border Radius Not Using Tokens" grep -rn 'border-radius:' src/**/*.css 2>/dev/null | grep -v 'var(--radius' | grep -v '0' | wc -l echo -e "\n## 5. Missing Focus Indicators" for f in $(find src -name "*.css" 2>/dev/null); do if grep -q ':hover' "$f" && ! grep -q ':focus' "$f"; then echo " $f" fi done echo -e "\nAudit complete." ``` ## Container Block Checklist When modifying container blocks (blockquote, alert, details): - [ ] Margin uses `1em 0` (consistent) - [ ] Padding uses token or `0.75em 1em` pattern - [ ] All `var()` calls have fallbacks - [ ] `:focus-visible` defined for interactive elements - [ ] Nested content rules exist (p, ul, ol, code, table) - [ ] Border radius uses `--radius-md` - [ ] Colors use tokens (no hardcoded hex in app CSS) ## Integration with pnpm check:all The CSS check scripts above are inline examples — run them directly in your terminal or save locally. They are not committed project scripts. ## Reference Files - Token definitions: `src/styles/index.css` - Design system rules: `.claude/rules/31-design-tokens.md` - Component patterns: `.claude/rules/32-component-patterns.md` - Container audit: `dev-docs/audit/` (in repo)
عرض على GitHub