Написание правил
Создавайте, задавайте область действия и поддерживайте поведенческие правила Apothem.
Правила — это файлы Markdown с расширением .md в src/apothem/rules/.
Frontmatter правила
---
name: "..."
description: "..."
pathFilter: "" # empty string for always-on; a glob for path-filtered
alwaysApply: true # true for always-on; false for path-filtered
---Области действия правил
Область действия правила задаётся двумя полями frontmatter, alwaysApply и pathFilter:
alwaysApply | pathFilter | Когда применяется |
|---|---|---|
true | "" (пусто) | Всегда: каждая сессия, каждый файл |
false | glob-шаблон вида "**/*.py" | Фильтр по пути: только когда активный файл соответствует шаблону |
Пять поставляемых правил действуют всегда: agnostic-posture, authority-inquiry,
session-closure, context-management и индекс правил. Постоянно действующее
правило расходует контекст в каждой сессии, поэтому новое правило SHOULD быть
отфильтровано по пути с помощью glob-шаблонов, которые называют регулируемые им
файлы; фильтр из одного ** ничего не ограничивает, и Claude Code загружает
такое правило при запуске так же, как постоянно действующее. Поставляемый корпус
ограничивает набор постоянно действующих правил этим списком и предельным
размером в байтах; правило, переведённое в постоянно действующие, меняет и то и
другое в том же изменении. Указывайте каждое добавляемое вами правило в индексе
правил (apothem-rule-index), чтобы сессия в окружении, которое не ограничивает
правила по пути, всё равно его находила. Сопутствующее правило
(<parent>-<aspect>) берёт pathFilter своего родителя или более узкий, чтобы
никогда не загружаться без родителя. Не давайте собственному правилу имя
apothem-rule-index: установка создаёт резервную копию файла правила с этим
именем и перезаписывает его.
Пример правила
---
name: "python-conventions"
description: "Python style conventions for this project"
pathFilter: "**/*.py"
alwaysApply: false
---
# Python conventions
- Use type annotations on all public functions.
- Maximum line length: 88 characters.
- Prefer explicit over implicit.Применение правил к окружениям
После написания правила обновите каждый установленный адаптер окружения. Выполните apothem harnesses list, чтобы увидеть установленный набор, затем вызовите update по одному разу для каждого окружения:
apothem update --harness claude-code
apothem update --harness cursor --project /path/to/projectОкружению уровня проекта при обновлении нужен --project, как во второй
строке; окружению уровня пользователя он не нужен.
Валидация правил
Запустите валидатор frontmatter для написанного вами файла правила. В чекауте
Apothem PYTHONPATH=src делает пакет импортируемым; после установки через скрипт
используйте вместо него PYTHONPATH="$HOME/.apothem/src".
PYTHONPATH=src python -m apothem.conformity.gate --check frontmatter-grep src/apothem/rules/<rule>.mdПроверка per-write, такая как frontmatter-grep, принимает проверяемый файл или
--stdin, чтобы прочитать содержимое из стандартного ввода; без того и другого
она ожидает ввод на стандартном вводе. Автономная проверка вместо этого
принимает корневой каталог, как в --check naming-grep ..