Реестр правил

Правила лежат в репозитории как Markdown с frontmatter и собираются в наборы. Набор наследует правила родителей, правило с тем же идентификатором переопределяет родительское, extends уточняет его. Резолвер отдаёт эффективный набор под конкретный тип задачи: на вкладке меняется не оформление, а сам состав правил.

Тип задачи

Цепочка наследованияorg
Правил в наборе7
Из них под «ui»5
Стоимость набора~552 ток.

Только для «ui»

5

У этих правил заполнен task_types: на других вкладках резолвер их не отдаёт.

Контраст текста не ниже 4.5:1

org/contrast-floor@1.0.0

Обычный текст и плейсхолдеры держат контраст не ниже 4.5:1 к своему фону, крупный и жирный — 3:1. Приглушённый серый на светлом фоне — самая частая причина нечитаемого интерфейса: если сомневаешься, двигай цвет в сторону основного текста. Статусные цвета проверяй в обеих темах: палитра, подобранная на тёмном фоне, на светлом обычно проваливается.

Из org@1.0.0Приоритет 85~97 ток.Задачи: ui, fix**/*.tsx, **/*.css

Клавиатура и фокус обязательны

org/keyboard-and-focus@1.0.0

Всё, что делается мышью, делается с клавиатуры: Tab проходит по порядку чтения, Escape закрывает слой, после закрытия фокус возвращается на триггер. Кольцо фокуса видно и не убирается через outline: none. Действие, доступное только по наведению, считается недоступным.

Из org@1.0.0Приоритет 80~75 ток.Задачи: ui**/*.tsx

Все состояния, а не только счастливый путь

org/states-before-happy-path@1.0.0

У интерактивного элемента есть hover, focus-visible, active, disabled; у экрана с данными — загрузка, пустота и ошибка. Пустое состояние объясняет, что делать дальше, а не пишет «ничего нет». Проверяй вёрстку на длинном и коротком тексте: перенос и обрезка входят в дизайн.

Из org@1.0.0Приоритет 75~79 ток.Задачи: ui**/*.tsx

Анимация объясняет состояние

org/motion-conveys-state@1.0.0

Анимируй только переход состояния: появление, уход, отклик на нажатие. Вход и выход идут на ease-out за 150–250 мс, ease-in не используй — он делает интерфейс вязким. Анимируй transform и opacity, а не width, height и отступы. Действие, которое пользователь повторяет десятки раз за день, не анимируй вовсе.

Из org@1.0.0Приоритет 65~89 ток.Задачи: ui**/*.tsx, **/*.css

У анимации есть вариант без движения

org/reduced-motion@1.0.0

Каждый блок с анимацией сопровождай @media (prefers-reduced-motion: reduce): переход схлопывается в мгновенный или в смену прозрачности. Движение — это украшение поверх работающего интерфейса, а не условие, без которого он не показывается.

Из org@1.0.0Приоритет 55~67 ток.Задачи: ui**/*.css, **/*.tsx

Действуют всегда

2

Правила без привязки к типу задачи входят в набор на любой вкладке.

Внешние действия только по просьбе

org/ask-before-publish@1.1.0

Не делай push, публикацию пакетов, деплой, отправку сообщений и любые другие внешние действия без явной просьбы пользователя. Коммиты и переключение веток — тоже только по просьбе: локальный коммит допустим, когда пользователь попросил сохранить работу.

Из org@1.0.0Приоритет 95~71 ток.

Долговременная память в Obsidian

org/memory-in-obsidian@1.0.0

Если пользователь ссылается на прошлую работу, решение или «что мы делали раньше», сначала найди это в хранилище Obsidian через MCP: фильтруй по проекту и дате во frontmatter и читай только нужные заметки. Заметки о сессиях не пиши сам: их экспортирует планировщик.

Из org@1.0.0Приоритет 40~74 ток.

Куда это компилируется

Один источник, четыре цели. CI падает, если файлы разошлись с реестром или если от удалённого правила остался файл.

npm run rules:resolve -- org --task ui