ai-coding-agents
Comprehensive guide for using Codex CLI (OpenAI) and Claude Code CLI (Anthropic) - AI-powered…
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.
$ npx -y skills add xiaolai/vmark --skill css-design-tdd --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/css-design-tddContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
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.
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
Find CSS variables used but never defined:
# 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
Find `var(--name)` without fallbacks in container blocks:
# 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)
Find hex/rgba colors that should be tokens:
# 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'Verify container blocks use consistent values:
# 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
Find interactive elements without focus styles:
# 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
doneCheck if specific tokens are used consistently:
# 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'
# 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
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:
# 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
# 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
#!/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."#!/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 |The Plain-Text Workspace Where Humans and AI Collaborate Free. Local-first. Format-aware. VMark is the plain-text workspace where humans and AI collaborate.
Repo: xiaolai/vmark
Comprehensive guide for using Codex CLI (OpenAI) and Claude Code CLI (Anthropic) - AI-powered…
Build or update MCP server/client integrations for VMark. Use when configuring MCP servers,…
Discover, register, and verify MCP servers. Use when a user asks to…
Audit an implementation against a plan (dev-docs/plans/*). Use when a user asks to check for…
Verify a completed implementation against a plan by running gates and checking acceptance…
Create comprehensive implementation plans and write them to plan files. Use when the user…