AgentSkillsCN

css

运用最新特性和最佳实践,打造现代、易维护且具备高可访问性的 CSS。涵盖 Grid 布局、Flexbox 布局、自定义属性、容器查询以及级联层等特性。触发时机:在编写 CSS 样式、使用 Grid/Flexbox 实现布局,或应用现代 CSS 特性时。

SKILL.md
--- frontmatter
name: css
description: Modern, maintainable, and accessible CSS using latest features and best practices. Grid, Flexbox, custom properties, container queries, cascade layers. Trigger: When writing CSS styles, implementing layouts with Grid/Flexbox, or using modern CSS features.
skills:
  - conventions
  - a11y
allowed-tools:
  - documentation-reader
  - web-search
  - file-reader

CSS Modern Skill

Overview

This skill provides guidance for writing modern CSS with focus on maintainability, performance, and accessibility using current CSS features and best practices.

Objective

Enable developers to write clean, efficient CSS that leverages modern features like CSS Grid, Flexbox, custom properties, and container queries while maintaining accessibility and browser compatibility.


When to Use

Use this skill when:

  • Writing CSS styles for layouts and components
  • Implementing responsive designs with Grid/Flexbox
  • Using modern CSS features (custom properties, container queries)
  • Optimizing CSS performance and maintainability
  • Creating animations and transitions

Don't use this skill for:

  • Tailwind utility classes (use tailwindcss skill)
  • MUI sx prop styling (use mui skill)

Critical Patterns

✅ REQUIRED: Use Custom Properties for Theming

css
/* ✅ CORRECT: Custom properties */
:root {
  --color-primary: #0066cc;
  --spacing: 1rem;
}

.button {
  background: var(--color-primary);
  padding: var(--spacing);
}

/* ❌ WRONG: Hardcoded values */
.button {
  background: #0066cc;
  padding: 1rem;
}

✅ REQUIRED: Use Grid/Flexbox, Not Floats

css
/* ✅ CORRECT: Flexbox for layout */
.container {
  display: flex;
  gap: 1rem;
  justify-content: space-between;
}

/* ❌ WRONG: Floats (legacy) */
.container {
  float: left;
  clear: both;
}

✅ REQUIRED: Respect prefers-reduced-motion

css
/* ✅ CORRECT: Disable animations for accessibility */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Conventions

Refer to conventions for:

  • Code organization
  • Naming patterns

Refer to a11y for:

  • Color contrast
  • Focus indicators
  • Accessible animations

CSS Specific

  • Use CSS custom properties for theming
  • Prefer Flexbox and Grid over floats
  • Use logical properties (margin-inline, padding-block)
  • Implement responsive design with container queries when appropriate
  • Avoid !important except for utilities
  • Use BEM or similar naming convention

Decision Tree

One-dimensional layout? → Use Flexbox with flex-direction, justify-content, align-items.

Two-dimensional layout? → Use CSS Grid with grid-template-columns, grid-template-rows.

Responsive sizing? → Use clamp(), min(), max() for fluid typography and spacing.

Theme values? → Define in :root with custom properties, reference with var(--name).

Center element? → Flexbox: display: flex; justify-content: center; align-items: center; or Grid: place-items: center.

Hide element? → Use display: none to remove from DOM, visibility: hidden to keep space, opacity: 0 for transitions.

Responsive breakpoints? → Use container queries for component-level, media queries for viewport-level.


Example

css
:root {
  --color-primary: #0066cc;
  --spacing-unit: 0.5rem;
}

.card {
  display: flex;
  flex-direction: column;
  gap: calc(var(--spacing-unit) * 2);
  padding: var(--spacing-unit);
  border-radius: 0.5rem;
  background-color: var(--color-primary);
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
  }
}

Edge Cases

  • Handle print stylesheets
  • Support dark mode with prefers-color-scheme
  • Test with different font sizes
  • Verify with color blindness simulators

References