Claude Certified Architect · Модуль 3 · Урок 3.3
Правила с привязкой к путям и glob-шаблоны
Суть
Правила в .claude/rules/ поддерживают YAML-фронтматтер с полем paths. Они загружаются условно — только когда Claude правит файлы, совпадающие с glob-шаблонами. Это решает проблему кросс-папочных конвенций, которую CLAUDE.md уровня папки решить не может.
Экономия токенов
Шаблоны вроде /*.test.tsx или terraform//* применяют правило универсально независимо от структуры папок. Загружается только релевантное правило для редактируемого файла — меньше токенов и нерелевантных инструкций.
---
paths:
- "**/*.test.tsx"
- "**/*.spec.ts"
- "tests/**/*"
---
## Стандарты тестирования
Использовать React Testing Library, не Enzyme.Anti-patterns
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
| CLAUDE.md папки для тест-конвенций, разбросанных по многим папкам | Файл папки покрывает только свою папку; тесты в соседних не получат правил | Правило с привязкой /*.test.tsx — действует везде, где совпал шаблон |
| Грузить все правила в корневом CLAUDE.md независимо от файла | Инфра-, платёжные и фронтенд-конвенции грузятся для каждого файла — лишние токены | paths:-правила: каждое грузится лишь когда уместно |
Exam traps
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
| Путать область CLAUDE.md папки и правила с привязкой к путям | У них разная область действия | Кросс-папочное — правила paths |
Считать, что CLAUDE.md в src/ каскадирует на packages/ | Каскада на соседние папки нет | Использовать glob-шаблон, покрывающий обе |
Практическое задание (T3)
- Создать
.claude/rules/testing.mdсpaths: ["/*.test.tsx", "/*.spec.ts"]и 3 конвенциями. - Создать
.claude/rules/terraform.mdсpaths: ["terraform//*", "/*.tf"]и 2 правилами. - Открыть обычный .ts-файл — убедиться, что ни тест-, ни terraform-правила не грузятся.
- Открыть тест-файл — тест-правила грузятся, terraform нет.
- Открыть
.tf-файл — terraform грузятся, тест-правила нет.
Проверка знаний
Продуктивность разработчика с Claude
Нужно навязать конвенции React Testing Library для всех тест-файлов. Они разбросаны по src/, packages/ и lib/. Какой подход применит правила ко всем тест-файлам независимо от расположения?
Верный ответ: C
C верно. Правила с glob-шаблоном применяются ко всем совпавшим файлам по всей базе — явное преимущество над CLAUDE.md уровня папки. A — CLAUDE.md не каскадирует на соседей/родителей. B работает, но плодит дрейф трёх копий. D работает, но тратит токены на бэкенд-файлы без тестов.
Продуктивность разработчика с Claude
Монорепо с 3 сервисами: Node.js API (src/api/), Python ML (src/ml/), React-фронтенд (src/frontend/). Конвенции конфликтуют (Python — snake_case, JS — camelCase). Единый корневой CLAUDE.md заставляет Claude применять Python-конвенции к TypeScript. Чистейшее решение?
Верный ответ: B
B верно. Правила paths — штатный механизм ровно для этого: каждый набор грузится лишь при правке своих путей, общее остаётся в корневом CLAUDE.md. A технически работает, но дублирует общее по 3 файлам. C — заголовки не являются синтаксисом области; Claude читает файл целиком. D лишает проект общих правил.
Продуктивность разработчика с Claude
Команда безопасности хочет, чтобы правила валидации ввода OWASP применялись при правке файлов, обрабатывающих пользовательский ввод, но не утилит, тестов и конфигов. Сейчас правила в корневом CLAUDE.md применяются везде и дают ложные тревоги на тестах. Какое изменение верно ограничит область?
Верный ответ: D
D верно. Правила paths активируются ровно при правке совпавших файлов и молчат иначе — механизм для условной загрузки. A требует поддержки CLAUDE.md в каждой новой папке-обработчике и дублирования общего. B не ограничивает область — правила грузятся всюду. C ломает обнаруживаемость: ручной вызов легко забыть.