Angular + BEM CSS methodology guide for creating reusable components and shareable front-end code. Enforces component-scoped BEM blocks, max 2-level nesting, proper component decomposition, semantic element naming, correct modifier patterns, and flat selectors. Use when writing, reviewing, or refactoring Angular component styles. Triggers on tasks involving CSS, SCSS, SASS, component styling, BEM naming, or CSS architecture.
A methodology guide for combining Angular's component architecture with BEM (Block Element Modifier) CSS naming convention to create reusable components and enable code sharing in front-end development. Contains 6 rules with bad/good examples in CSS, SCSS, and SASS.
Reference these guidelines when:
Block and Block__Element, never Block__Element__SubElement--modifier for states and variants, always with the base class| Priority | Rule | Impact | File |
|----------|------|--------|------|
| 1 | Block = Component Selector | CRITICAL | bem-block-selector |
| 2 | Max 2 Levels of Nesting | CRITICAL | bem-max-nesting |
| 3 | Split Child Components | CRITICAL | bem-split-components |
| 4 | Element Naming Conventions | HIGH | bem-element-naming |
| 5 | Modifier Patterns | HIGH | bem-modifier-patterns |
| 6 | No Cascading Selectors | HIGH | bem-no-cascading |
bem-block-selector - BEM block name must match the Angular component selector (minus prefix)bem-max-nesting - Never nest beyond .block__element — no .block__element__subelementbem-split-components - Extract child components when BEM depth would exceed 2 levelsbem-element-naming - Use semantic, descriptive kebab-case names for BEM elementsbem-modifier-patterns - Use --modifier correctly for states and variants with Angular class bindingsbem-no-cascading - Avoid descendant, child, and tag-qualified selectors — keep BEM flat.block → Component root (matches selector)
.block__element → Child part of the component
.block--modifier → Variant of the entire block
.block__element--modifier → Variant of a single element
✅ .user-card
✅ .user-card__avatar
✅ .user-card--featured
✅ .user-card__name--highlighted
❌ .user-card__header__title (3 levels)
❌ .user-card .user-card__avatar (descendant selector)
❌ div.user-card (tag-qualified)
Read individual rule files for detailed explanations and code examples:
rules/bem-block-selector.md
rules/bem-max-nesting.md
rules/bem-split-components.md
rules/bem-element-naming.md
rules/bem-modifier-patterns.md
rules/bem-no-cascading.md
Each rule file contains:
For the complete guide with all rules expanded: AGENTS.md
npx skills add develite98/angular-css-bem-best-practices下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer