.agents/skills/bem-conventions/SKILL.md
Use BEM-style class names for frontend selector hooks in Razor views, view components, CSS, JavaScript, and Playwright tests.
.block, .block__element, .block--modifier, .block__element--modifier.Keep ids when they are needed for:
label for="..." and control association.aria-labelledby, data-bs-target, modal ids, or datalist list targets.id or name values are relied on.Even when an id must remain, add a BEM class and use the class in new CSS, JavaScript, and tests.
For reusable components, use the component name as the BEM block:
<div class="date-range-selector">
<button class="date-range-selector__toggle">This month</button>
<input class="date-range-selector__timezone" />
</div>
Examples:
SearchStringInput -> .search-string-input__text, .search-string-input__termDateRangeSelector -> .date-range-selector__toggle, .date-range-selector__presetClearAllFilters -> .clear-all-filters__buttonLabelSelector -> .label-selector__toggle, .label-selector__itemdocument.querySelector('.date-range-selector__timezone').element.closest('form').querySelector('.search-string-input__term').document.getElementById(...) for component behavior when a BEM class hook exists.