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/. Какой подход применит правила ко всем тест-файлам независимо от расположения?

  • A CLAUDE.md в src/ со всеми тест-конвенциями — они каскадируют на подпапки и соседние пакеты
  • B Отдельный CLAUDE.md в каждой папке с тестами: src/, packages/, lib/
  • C .claude/rules/testing.md с paths: ["/*.test.tsx", "/*.spec.ts"] — правило грузится для всех совпавших файлов
  • D Добавить тест-конвенции в корневой CLAUDE.md, чтобы они были всегда доступны

Продуктивность разработчика с Claude

Монорепо с 3 сервисами: Node.js API (src/api/), Python ML (src/ml/), React-фронтенд (src/frontend/). Конвенции конфликтуют (Python — snake_case, JS — camelCase). Единый корневой CLAUDE.md заставляет Claude применять Python-конвенции к TypeScript. Чистейшее решение?

  • A CLAUDE.md в каждой папке сервиса, переопределяющий все конвенции, заменяя корневой для этих путей
  • B Сервис-специфичные правила в .claude/rules/ с массивами paths: (напр. paths: ["src/api/"]) — каждый набор активен лишь для своих путей
  • C Добавить в корневой CLAUDE.md заголовки-маркеры вроде «Для файлов в src/api/: эти правила»
  • D Убрать корневой CLAUDE.md и опираться только на CLAUDE.md по папкам сервисов

Продуктивность разработчика с Claude

Команда безопасности хочет, чтобы правила валидации ввода OWASP применялись при правке файлов, обрабатывающих пользовательский ввод, но не утилит, тестов и конфигов. Сейчас правила в корневом CLAUDE.md применяются везде и дают ложные тревоги на тестах. Какое изменение верно ограничит область?

  • A Перенести правила в CLAUDE.md каждой папки, обрабатывающей ввод
  • B Комментарий в корневом CLAUDE.md: «эти правила только для файлов с пользовательским вводом — применяй по усмотрению»
  • C Вынести правила из CLAUDE.md в кастомную slash-команду, вызываемую вручную при работе с UI-кодом
  • D .claude/rules/security-validation.md с paths: ["src/handlers/", "src/controllers/", "src/api/"] — правила грузятся лишь при правке путей обработки ввода