Derived Modular Arch
Инструменты

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 workflowInspect → place/move → verify через CLI
Отказ / переписываниеBarrels, feature→feature, преждевременный shared/, порты вместо promotion
Linter matrixESLint / Oxlint / Biome — file-scoped, не полный граф
When to open morespec, 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 для агента

  1. Прочитать дерево — реальные src/{app\|pages\|routes,features,services?,shared} и импорты, не предполагать FSD-слои.
  2. Разместить / перенести по алгоритму; импорты — прямые пути в */public/*.
  3. Проверить CLI (если пакет установлен в проекте):
npx @derived-modular/cli check . --format json
npx @derived-modular/cli doctor . --format json
Код выходаЗначение
0Ок (для doctor — могут быть warnings, CI не ломают)
1check нашёл нарушения — исправить до слияния
2Окружение: нет src/, tsconfig, неверные аргументы
  1. Не «чинить» barrels, глубокие импорты, пустой services/ или порты, чтобы обойти законную promotion.
  2. В 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 с код выхода
Выбор доменного cutConway — на команде; см. Чего DMA не решает
Autofix импортовРучной refactor + повторный check
Замена specНавык ссылается на spec; при расхождении побеждает инструменты + spec

Что дальше

On this page