Инструменты
Обзор инструментов
Гибридная модель enforcement: полный граф в CLI, быстрая обратная связь в редакторе.
DMA проверяет архитектуру гибридно: тяжёлый аудит графа — в CLI, лёгкие подсказки по файлу — в линтерах.
Правило, которое нельзя проверить машиной, со временем перестают соблюдать. Поэтому ядро — npx @derived-modular/cli check, а не «настроили ESLint и забыли».
Две поверхности
| Инструмент | Где запускать | Роль |
|---|---|---|
npx @derived-modular/cli check | CI, pre-push | Жёсткая блокировка: граф, циклы, предикаты входящих рёбер |
npx @derived-modular/cli doctor | Локально | Мягкие сигналы роста (код выхода 0) |
Навык агента dma | Cursor, Claude Code, … | Алгоритм размещения и запреты для LLM |
| ESLint / Oxlint / Biome | Редактор, lint script | Четыре file-scoped правила |
Всегда запускайте npx @derived-modular/cli check в CI. Линтеры — дополнение для скорости, не замена.
Матрица покрытия
| Правило | dma check | dma doctor | ESLint / Oxlint | Biome |
|---|---|---|---|---|
layer-direction | ✓ | — | ✓ | эвристика |
feature-to-feature | ✓ | — | ✓ | эвристика |
public-api | ✓ | — | ✓ | эвристика |
no-barrel | ✓ | — | ✓ | эвристика |
no-cycle | ✓ | — | — | — |
| предикаты входящих рёбер | ✓ | — | — | — |
| сигналы эволюции | — | ✓ | — | — |
Циклы и «feature с входящими рёбрами должен быть service» — свойства графа. Один файл линтеру не виден весь граф, поэтому эти правила только в CLI.
Почему недостаточно одних линтеров → Почему CLI, а не только линтеры.
Пакеты
| Пакет | Назначение |
|---|---|
@derived-modular/cli | check + doctor |
@derived-modular/eslint-plugin | ESLint, плоская конфигурация |
@derived-modular/oxlint-plugin | Те же правила для Oxlint |
@derived-modular/biome-plugin | GritQL-эвристики (слабее) |
@derived-modular/boundaries | Общая классификация путей для CLI и ESLint |
Навык dma (skills/dma) | Навык агента — не npm-пакет; npx skills add … --навык dma |
Рекомендуемый workflow
- Локально: ESLint (или Biome/Oxlint) при сохранении — ловит очевидные импорты
- Перед push:
npx @derived-modular/cli check . - Время от времени:
npx @derived-modular/cli doctor .— посмотреть, что пора вынести или промоутить - В CI:
npx @derived-modular/cli check . --format json(или SARIF для GitHub Code Scanning)
Что выбрать
| Ситуация | Рекомендация |
|---|---|
| Уже есть ESLint 9+ с плоской конфигурацией | @derived-modular/eslint-plugin |
| Biome как единый линтер/форматтер | @derived-modular/biome-plugin + всё равно dma check в CI |
| Oxlint для скорости | @derived-modular/oxlint-plugin (alpha) |
| Только CI, без редактора | Достаточно @derived-modular/cli |