WorkAI

Правила

Как задавать агенту WorkAI постоянные инструкции через файлы правил — персональные, проектные и в форматах других экосистем.

Модель ничего не помнит между запросами — каждый диалог начинается с чистого листа. Правила решают эту проблему: это markdown-файлы с инструкциями, которые агент подмешивает в контекст автоматически, без того чтобы вы каждый раз объясняли одно и то же заново.

Пример: если вы один раз напишете правило «в этом проекте используем snake_case для колонок БД и функциональные компоненты в React», агент будет следовать этому на каждой сессии — пока файл лежит на месте.

Где хранятся правила

WorkAI различает два уровня:

  • Персональные правила~/.workai/rules/*.md. Про вас: язык, тон, привычки. Действуют во всех проектах на этой машине.
  • Проектные правила.workai/rules/*.md внутри репозитория. Про этот код: стиль, структура, договорённости команды. Если кладёте их в git, ими пользуется вся команда.

Файл README.md в этих каталогах правилом не считается — его можно использовать для пояснений к набору правил.

Кроме собственного формата, WorkAI распознаёт файлы правил из других экосистем — переносить их вручную не нужно:

ЭкосистемаЧто читаем
AGENTS.mdAGENTS.md в корне проекта; отдельно — вложенные **/AGENTS.md
ClaudeCLAUDE.md, CLAUDE.local.md, .claude/CLAUDE.md, ~/.claude/CLAUDE.md, каталоги .claude/rules и ~/.claude/rules
Cursorкаталог .cursor/rules — и .mdc, и обычные .md
GitHub Copilot.github/instructions, ~/.copilot/instructions, .github/copilot-instructions.md, ~/.copilot/copilot-instructions.md

Каждый источник включается и выключается отдельно — в Settings → AI rules, блок Compatibility. Там же видно, сколько файлов найдено по каждому источнику. Свой каталог правил тоже можно добавить: путь, дописанный в настройку chat.instructionsFilesLocations, появится в списке как отдельный источник.

Cursor обычно кладёт в .cursor/rules файлы .mdc и обычные .md там игнорирует. Мы читаем оба расширения: люди регулярно кладут туда .md руками, и молча их не видеть — ловушка.

Раздел «Правила для ИИ» в настройках: личные и проектные правила, блок «Совместимость»

Как правило активируется

У правила есть три режима работы:

  • Всегда — правило попадает в контекст каждого запроса. Это applyTo: '**' (а также **/* и *). Корневые AGENTS.md, CLAUDE.md и copilot-instructions.md ведут себя так же — пока соответствующий источник включён в Compatibility.
  • По glob — правило привязано к паттерну applyTo (например, src/**/*.tsx) и подключается, когда подходящий файл оказывается в контексте запроса.
  • По решению модели — паттерна нет, есть только description. Такое правило не подставляется автоматически: агент видит его путь и описание в списке доступных правил и сам решает, прочитать ли файл. Поэтому от качества описания напрямую зависит, вспомнит ли агент о правиле в нужный момент.

Режим каждого найденного правила подписан в списке в Settings → AI rules — применяется всегда, применяется к перечисленным файлам или подключается по решению модели.

Если в applyTo перечислено несколько паттернов через запятую, они работают как «или»: **, src/** — это по-прежнему «всегда».

Вложенные AGENTS.md

Если в поддиректориях проекта лежат свои AGENTS.md, WorkAI умеет находить их по всему воркспейсу — это отдельный источник, по умолчанию выключенный (настройка chat.useNestedAgentsMdFiles, переключатель в блоке Compatibility). Когда он включён, вложенные файлы не подставляются в каждый запрос целиком: агент видит путь и описание вроде «Instructions for folder packages/api» и читает файл, если задача к этой папке относится. Корневой AGENTS.md при включённом источнике подключается к каждому запросу целиком.

Формат файла

Правило — обычный markdown-файл. Например:

---
description: Применять при правке React-компонентов
applyTo: "src/components/**/*.tsx"
---

- Именованные экспорты, не default
- Стили — в соседнем CSS-модуле, не инлайном
- Компонент длиннее 200 строк — разбивать на подкомпоненты

Открывающий --- должен быть самой первой строкой файла, и обе строки --- начинаются с самого начала строки, без отступа — иначе заголовок не распознаётся и не прочитаются ни description, ни applyTo.

Для always-правила задайте applyTo: '**'. В каталогах .workai/rules и .claude/rules файл без frontmatter вообще тоже применяется всегда — обычный .md там не мёртвый. То же верно для личных ~/.workai/rules.

Пример выше — проектный: glob с src/components/** в личном правиле в других репозиториях не сработает. Для персонального правила нормальный дефолт — только description, без applyTo; glob допустим лишь по языку или типу файла (**/*.py), не по папкам текущего проекта.

Поля Cursor понимаются как есть, переписывать чужие правила не нужно:

  • globs — синоним applyTo (принимается и строкой, и списком);
  • alwaysApply: true — то же, что applyTo: '**', и оно сильнее globs.

Родным полем остаётся applyTo — в новых файлах лучше писать его.

Как создать правило

Две команды — два места на диске. Файл пишет агент, не сама команда: смотрит историю диалога, проверяет, нет ли уже правила на эту тему, выбирает режим и оформляет рабочую инструкцию, а не пересказ вашей фразы. Имя — короткое латинское (address-by-weekday.md), не транслит.

  • Проектное/create-rule в чате или Settings → AI rules → Project rules → Create (открывает чат с уже набранной командой). Файл появится в .workai/rules. Сюда же кладёт правило ссылка workai://share/rule.
  • Персональное/create-global-rule или Settings → AI rules → Personal rules → Create (открывает /create-global-rule). Файл появится в ~/.workai/rules. В веб-окне без настоящего домашнего каталога команда откажется, а не запишет файл в текущий проект.

Правила можно писать и руками — те же два каталога. Управлять найденными удобнее в Settings → AI rules: список, переключатели, переход в редактор. Команда /instructions открывает пикер — выбрать файл и открыть его.

Старые личные правила, которые когда-то жили строками в настройках (aiSolver.userRules), ещё могут отображаться как «Always applied · Saved in settings, not as a file». Новые так уже не создаются.

Как выключить правило, не удаляя его

В Settings → AI rules у каждого правила есть переключатель. Выключенное правило остаётся в списке (приглушённым, чтобы не спутать с удалённым), но не уходит агенту — ни содержимым, ни упоминанием в списке доступных. Включить обратно можно там же.

Это работает и для AGENTS.md с CLAUDE.md: они подключаются к каждому запросу, и возможность их выключить нужна тем более.

Целый источник выключается одним переключателем в блоке Compatibility — например, если в проекте лежат правила Copilot, которые вам не нужны.

Сколько правил можно подключить

Правила занимают место в контексте, поэтому есть потолок: до 64 файлов за запрос, около 128 тысяч символов на одно правило и около 512 тысяч символов на все правила вместе.

Правило, которое не влезло в свой потолок, не выбрасывается молча — оно обрезается, и в тексте остаётся пометка, что показаны только первые символы файла. А вот правила сверх 64 файлов или сверх общего потолка в запрос уже не попадают вовсе.

Практический вывод: applyTo: '**' стоит контекста в каждом запросе. Ставьте его для правил про стиль общения и процесс, а правила про конкретные файлы привязывайте глобом.

Как правила доходят до модели

Подключённые правила уходят отдельной секцией запроса, помеченной как автоматически найденные — чтобы агент не решил, будто вы прикрепили эти файлы вручную. Личные правила в этой секции идут первыми, проектные — за ними.

Правила, которые не подставились целиком (glob не совпал или режим «по решению модели»), перечисляются описью: путь, описание и applyTo, без содержимого. Отсюда агент и берёт возможность дочитать нужный файл инструментом. Always-правила в эту опись не дублируются — они уже в секции с полным текстом.

Правило по ссылке

Правило можно передать ссылкой вида workai://share/rule?name=<имя>&text=<текст> или через сайт: https://workai.su/link/rule?name=<имя>&text=<текст>. По такой ссылке WorkAI не записывает ничего сразу: сначала показывается диалог с именем будущего файла и его полным текстом целиком, и только после подтверждения файл сохраняется в .workai/rules/<имя>.md и открывается в редакторе. Существующий файл с тем же именем не перезаписывается.

Имя — латиница в нижнем регистре и цифры, слова через дефис, до 64 символов; длина всей workai://share/… ссылки ограничена 8000 символов. Ссылка сработает, только когда в клиенте открыта папка или воркспейс, — иначе правилу некуда лечь. Подробности — Ссылки workai://.

Хорошие практики

  • Держите правило сфокусированным на одной теме — если оно разрастается, разбейте на несколько файлов.
  • Пишите description в форме «применять, когда …» и кладите внутрь слова, по которым правило будут искать: для правил в режиме «по решению модели» описание — единственная поверхность обнаружения.
  • Пишите конкретно: не «следуй хорошим практикам», а «используй zod для валидации всех API-эндпоинтов».
  • Ссылайтесь на документацию проекта, а не копируйте её в правило — копия устареет.
  • Не дублируйте содержимое стайл-гайдов — для этого есть линтер, и общие конвенции языка агент знает и так.
  • Держите файл компактным, чтобы он читался целиком.
  • Добавляйте правило, когда замечаете, что агент раз за разом ошибается в одном и том же месте, а не заранее «про запас».
  • Коммитьте проектные правила в git — тогда ими пользуется вся команда, а не только вы.

Почему правило не применяется

Частые причины, по порядку проверки:

  1. Режим. В .workai/rules и .claude/rules файл без frontmatter применяется всегда. В .cursor/rules дефолта нет: без applyTo / globs / alwaysApply / description правилу не к чему привязаться. Посмотрите подпись режима в списке правил.
  2. Glob не совпал. Правило с applyTo подключается, когда подходящий файл попал в контекст запроса. Если вы обсуждаете задачу «вообще», а файлов в контексте нет, правило про **/*.py не сработает.
  3. Правило или источник выключены. Проверьте переключатели в Settings → AI rules, включая блок Compatibility. Корневой AGENTS.md тоже можно выключить — настройка chat.useAgentsMdFile.
  4. Сломанный frontmatter. Отступ перед --- — и заголовок не читается: пропадают и description, и applyTo. Если YAML внутри заголовка кривой, редактор покажет диагностику; если --- просто с отступом, заголовок молча не увидят, как будто его нет.
  5. Вложенные AGENTS.md по умолчанию выключены — это отдельный источник.

Правила и навыки — в чём разница

Оба механизма расширяют возможности агента, но по-разному:

  • Rules — это требования, которые вы задаёте сами; персональные применяются везде, проектные — только в текущем проекте.
  • Skills — это переиспользуемая процедура для конкретной задачи; в отличие от правила, подгружается только когда релевантна.

То есть правило — это постоянный контекст («так у нас принято»), а skill — это инструкция «как делать X», которую агент достаёт с полки только когда действительно занимается X. Подробнее — на странице Навыки.