---
name: css-performance
description: Optimize CSS performance - critical CSS, code splitting, purging, bundle analysis
sasmp_version: "1.3.0"
version: "2.0.0"
updated: "2025-12-30"
bonded_agent: 06-css-performance
bond_type: PRIMARY_BOND
---
# CSS Performance Skill
Optimize CSS performance with critical CSS extraction, code splitting, purging, and bundle analysis.
## Overview
This skill provides atomic, focused guidance on CSS performance optimization with measurable metrics and production-ready configurations.
## Skill Metadata
| Property | Value |
|----------|-------|
| **Category** | Optimization |
| **Complexity** | Advanced to Expert |
| **Dependencies** | css-fundamentals, css-architecture |
| **Bonded Agent** | 06-css-performance |
## Usage
```
Skill("css-performance")
```
## Parameter Schema
```yaml
parameters:
optimization_type:
type: string
required: true
enum: [critical-css, purging, minification, code-splitting, selectors]
description: Type of optimization to implement
tool:
type: string
required: false
enum: [purgecss, cssnano, critical, webpack, postcss]
description: Specific tool configuration
metrics:
type: boolean
required: false
default: true
description: Include measurement recommendations
validation:
- rule: optimization_type_required
message: "optimization_type parameter is required"
- rule: valid_optimization
message: "optimization_type must be one of: critical-css, purging..."
```
## Topics Covered
### Critical CSS
- Above-the-fold extraction
- Inline critical, defer rest
- Tools: Critical, Penthouse
### Purging (Tree-shaking)
- PurgeCSS configuration
- Safelist patterns
- Dynamic class handling
### Minification
- cssnano optimization
- clean-css alternatives
- Safe vs unsafe optimizations
### Code Splitting
- Route-based splitting
- Component-level CSS
- Dynamic imports
## Retry Logic
```yaml
retry_config:
max_attempts: 3
backoff_type: exponential
initial_delay_ms: 1000
max_delay_ms: 10000
```
## Logging & Observability
```yaml
logging:
entry_point: skill_invoked
exit_point: skill_completed
metrics:
- invocation_count
- optimization_type_distribution
- tool_usage
```
## Quick Reference
### Performance Targets
| Metric | Target | Tool |
|--------|--------|------|
| CSS Size (gzip) | < 50KB | DevTools |
| Unused CSS | < 20% | Coverage |
| Critical CSS | < 14KB | Penthouse |
| FCP | < 1.8s | Lighthouse |
### PurgeCSS Configuration
```javascript
// postcss.config.js
module.exports = {
plugins: [
require('@fullhuman/postcss-purgecss')({
content: [
'./src/**/*.{js,jsx,ts,tsx}',
'./public/index.html',
],
defaultExtractor: content =>
content.match(/[\w-/:]+(?
```
## Selector Performance
```css
/* FAST */
.button { } /* Single class */
#header { } /* ID */
/* MODERATE */
.nav .link { } /* Descendant */
.nav > .link { } /* Child */
/* SLOW (avoid) */
.container * { } /* Universal descendant */
[class*="btn-"][class$="-lg"] { } /* Complex attribute */
```
## Measurement Commands
```bash
# Lighthouse CI
npx lighthouse-ci https://example.com --collect
# CSS Coverage in Chrome DevTools
# 1. Open DevTools → More Tools → Coverage
# 2. Reload page
# 3. Check CSS usage percentage
# Bundle analysis
npx webpack-bundle-analyzer stats.json
```
## Optimization Checklist
```
Pre-deployment:
├─ [ ] CSS minified
├─ [ ] Unused CSS purged (< 20% unused)
├─ [ ] Critical CSS inlined
├─ [ ] Non-critical CSS async loaded
├─ [ ] Source maps excluded from production
├─ [ ] gzip/Brotli compression enabled
└─ [ ] Cache headers configured
```
## Test Template
```javascript
describe('CSS Performance Skill', () => {
test('validates optimization_type parameter', () => {
expect(() => skill({ optimization_type: 'invalid' }))
.toThrow('optimization_type must be one of: critical-css...');
});
test('returns PurgeCSS config for purging type', () => {
const result = skill({ optimization_type: 'purging', tool: 'purgecss' });
expect(result).toContain('safelist');
expect(result).toContain('content');
});
test('includes metrics when flag is true', () => {
const result = skill({ optimization_type: 'critical-css', metrics: true });
expect(result).toContain('14KB');
expect(result).toContain('Lighthouse');
});
});
```
## Error Handling
| Error Code | Cause | Recovery |
|------------|-------|----------|
| INVALID_OPTIMIZATION | Unknown optimization type | Show valid options |
| TOOL_NOT_INSTALLED | Tool package missing | Show install command |
| OVER_PURGING | Styles missing in production | Expand safelist |
## Related Skills
- css-fundamentals (selector efficiency)
- css-architecture (file organization)
- css-tailwind (purge configuration)