AI и агенты
Навык агента dma — установка для Cursor и других ассистентов, workflow с check --format json.
LLM-ассистенты умеют писать код быстро, но часто «улучшают» архитектуру по шаблонам FSD: придумывают widgets/, entities/, barrel index.ts, тянут feature → feature. DMA держится на графе и инструменты, а не на вкусе модели.
Навык агента — компактная инструкция для агента: алгоритм размещения, список запретов, ссылки на spec. Skill не заменяет dma check — он направляет агента до слияния, CLI остаётся блокировка в CI.
Что внутри skill dma
Исходник в репозитории: skills/dma.
| Блок | Содержание |
|---|---|
| Placement algorithm | Куда класть файл — те же шаги, что в Куда положить файл |
| Import cheat sheet | Направление зависимостей, */public/*, import type = ребро |
| Agent workflow | Inspect → place/move → verify через CLI |
| Отказ / переписывание | Barrels, feature→feature, преждевременный shared/, порты вместо promotion |
| Linter matrix | ESLint / Oxlint / Biome — file-scoped, не полный граф |
| When to open more | spec, reference.md, examples, fixtures |
Нормативный SoT для агента — spec/. Skill — сжатый чеклист, не замена спецификации.
Установка
Через skills.sh (Cursor, Claude Code и другие хосты с поддержкой skills):
npx skills add mikhailmogilnikov/derived-modular-architecture --навык dmaСписок skills в репозитории:
npx skills add mikhailmogilnikov/derived-modular-architecture --listВручную
Скопируйте или symlink папку skills/dma в каталог skills вашего редактора (например ~/.cursor/skills/dma или .cursor/skills/dma в корне проекта). Файл SKILL.md должен быть доступен агенту как skill.
Рекомендуемый workflow для агента
- Прочитать дерево — реальные
src/{app\|pages\|routes,features,services?,shared}и импорты, не предполагать FSD-слои. - Разместить / перенести по алгоритму; импорты — прямые пути в
*/public/*. - Проверить CLI (если пакет установлен в проекте):
npx @derived-modular/cli check . --format json
npx @derived-modular/cli doctor . --format json| Код выхода | Значение |
|---|---|
0 | Ок (для doctor — могут быть warnings, CI не ломают) |
1 | check нашёл нарушения — исправить до слияния |
2 | Окружение: нет src/, tsconfig, неверные аргументы |
- Не «чинить» barrels, глубокие импорты, пустой
services/или порты, чтобы обойти законную promotion. - В CI всё равно гонять
check— агент мог не запустить CLI или пропустить edge case.
«Агент сказал, что архитектура ок» — не аргумент. Единственный жёсткая блокировка — npx @derived-modular/cli check в CI (и локально перед push).
JSON для автomation
Флаг --format json даёт стабильный отчёт (version: 1) — удобно для CI, скриптов и агентов:
npx @derived-modular/cli check . --format json
npx @derived-modular/cli doctor . --format jsonПоля ruleId, severity, file, message совпадают с справочником нарушений и сигналами doctor.
SARIF — для GitHub Code Scanning; см. CI.
Skill + линтер + CLI
Агент (skill) → куда положить файл, чего не изобретать
Редактор (lint) → четыре file-scoped правила при сохранении
CI (dma check) → полный граф, циклы, предикаты входящих рёберНавык и ESLint/Biome не видят no-cycle и feature-has-inbound — только CLI. Подробнее — Обзор инструментов и Почему CLI, а не только линтеры.
AGENTS.md в проекте
В своём репозитории можно дублировать ключевые правила в AGENTS.md (команды check, запрет barrels). Навык dma — готовый вариант с алгоритмом и refuse-list; подключайте skill, если не хотите поддерживать свой файл вручную.
Минимум для DMA-проекта в любом случае:
{
"scripts": {
"dma-check": "npx @derived-modular/cli check ."
}
}И строка в CI — см. CI.
Чего навык не делает
| Не skill | Почему |
|---|---|
| Блокировка в CI | Только dma check с код выхода |
| Выбор доменного cut | Conway — на команде; см. Чего DMA не решает |
| Autofix импортов | Ручной refactor + повторный check |
| Замена spec | Навык ссылается на spec; при расхождении побеждает инструменты + spec |