Знай, что сломается,
до того как оно сломается

Измени файл. Мгновенно узнай, какие ещё файлы могут быть затронуты. Без конфигурации. Работает локально. Без облака, без аккаунтов.

10 языков · 38 команд · 294 теста · MIT лицензия

$ npx impulse-analyzer review . 3 файл(а) изменено 12 в зоне поражения src/core/graph.ts ██████████████████░░░░ 72 КРИТИЧЕСКИЙ · 8 зависимых src/cli/dashboard.ts ████████░░░░░░░░░░░░░░ 35 СРЕДНИЙ · 1 зависимых Тесты (4) test/core/graph.test.ts (прямая) test/core/health.test.ts (глубина 2) ────────────────────────────────────────────────── ⚠ РЕВЬЮ 1 критический файл · большая зона поражения ──────────────────────────────────────────────────

Быстрый старт

От нуля до результата за 30 секунд.

Попробуйте прямо сейчас (без установки)

$ npx impulse-analyzer I M P U L S E 42 файла · TypeScript · 87/100 (B) · 112ms Структурных проблем не обнаружено Попробуйте: impulse review . пре-пуш ревью с вердиктом impulse health . полный отчёт по архитектуре impulse visualize . интерактивный граф в браузере

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

Установка глобально

$ npm install -g impulse-analyzer $ impulse scan .

Поддерживаемые языки

TypeScript
Python
Go
Rust
C#
Java
Kotlin
PHP
C
C++

Работает на Tree-sitter WASM. Без нативной компиляции, без языковых серверов, без плагинов.

Рабочий процесс

Три команды, которые меняют подход к деплою.

1. Перед пушем

impulse review . — шесть анализов за один проход: зона поражения, оценка рисков, циклы, границы, тесты, секреты. Один вердикт: SHIP IT, REVIEW или HOLD.

2. Какие тесты запустить

impulse test . — прослеживает ваши изменения по графу зависимостей и находит все затронутые тесты. Генерирует команду запуска.

3. Отслеживание долга

impulse debt . — агрегированная оценка из 5 измерений с историей трендов. Используйте --budget 30 в CI, чтобы долг не рос незаметно.

Авто-ревью при пуше

Установите git hook, который блокирует push при вердикте HOLD:

$ impulse hook install Pre-push hook установлен Каждый git push запускает impulse review --staged. Вердикт HOLD блокирует push. Пропустить: git push --no-verify

Живое ревью во время разработки

Каждое сохранение файла обновляет вердикт мгновенно:

$ impulse watch . --review [14:23:15] src/core/graph.ts 8 файлов затронуто ────────────────────────────────────────────────────── ⚠ РЕВЬЮ 2 изменено → 11 затронуто · 42ms КРИТИЧЕСКИЙ src/core/graph.ts 8 зависимых СРЕДНИЙ src/core/parser.ts 3 зависимых ⚡ 4 теста для запуска ──────────────────────────────────────────────────────

Справочник команд

Каждая команда поддерживает --json для скриптов. impulse <команда> --help для полных опций.

Исследование
scan .Построить граф зависимостей, показать статистику
impact file.ts .«Я меняю это — что сломается?»
diff .Влияние незакоммиченных изменений
why A.ts B.ts .Показать цепочку зависимостей между файлами
tree file.ts .Дерево зависимостей, как cargo tree
focus file.ts .Глубокий анализ одного файла
explore .Интерактивный REPL в терминале
explain file.ts .Объяснение файла простым языком
Ревью и качество
review .Пре-пуш вердикт — риск, зона поражения, тесты, циклы
test .Какие тесты запустить по вашим изменениям
risk .Комплексный риск — сложность × частота × влияние × связанность
check .Проверка архитектурных границ
hook installУстановить pre-push git hook
watch . --reviewЖивой вердикт при каждом сохранении
Архитектура
health .Оценка архитектуры (0-100) со штрафами
doctor .Полная диагностика в одном отчёте
debt .Оценка техдолга с историей трендов
complexity .Цикломатическая + когнитивная сложность по функциям
coupling .Скрытая связанность — совместные изменения без импортов
hotspots .Часто меняющиеся файлы с большой зоной поражения
suggest .Конкретные рекомендации по рефакторингу
history .Хронология здоровья по коммитам
compare ref .Сравнение здоровья между ветками
Зависимости
deps .Анализ внешних зависимостей — риски цепочки поставок
exports .Найти мёртвые экспорты, которые никто не импортирует
env .Неопределённые/неиспользуемые переменные окружения
safe-delete f .Можно ли безопасно удалить файл
refactor .Авто-удаление мёртвых экспортов с --dry-run
Команда и изменения
owners file .Владение кодом, bus factor, риск знаний
changelog ref .Семантический changelog из git + граф зависимостей
Инфраструктура
init .Авто-определение границ, создание конфига
workspaces .Обнаружение монорепо workspace'ов
daemon .HTTP API для IDE и интеграций
visualize .Интерактивный граф в браузере
badge .SVG бейдж здоровья для README
graph . --format mermaidЭкспорт в Mermaid, DOT или JSON
ci .Предпросмотр CI отчёта локально

Поддержка монорепозиториев

Автоматическое обнаружение workspace'ов. Кросс-пакетное разрешение импортов. Без конфигурации.

Когда Impulse обнаруживает монорепо, кросс-пакетные импорты вроде @app/core разрешаются в локальные файлы, а не помечаются как внешние. Все 38 команд автоматически видят зависимости между пакетами.

$ impulse workspaces . Impulse — Обнаружение workspace'ов pnpm монорепо, 12 пакет(ов) @app/api packages/api → src/index.ts @app/core packages/core → src/index.ts @app/ui packages/ui → src/index.ts Кросс-пакетные импорты будут разрешены в локальные файлы.

Поддерживаемые инструменты

pnpm

pnpm-workspace.yaml

npm / yarn

package.json workspaces

Lerna

lerna.json

Nx

nx.json + workspaces

Что работает между пакетами

Интеграция с CI

Анализ влияния в каждом пулл-реквесте. Один YAML файл.

# .github/workflows/impulse.yml name: Impulse CI on: pull_request: branches: [main] permissions: contents: read pull-requests: write jobs: impulse: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: stulevtoday/Impulse@main with: github-token: ${{ secrets.GITHUB_TOKEN }}

Каждый PR получает комментарий с дельтой health score, таблицей влияния, затронутыми файлами, ломающими изменениями и нарушениями границ.

Бюджет техдолга

Не дайте техдолгу расти незаметно:

$ impulse debt . --budget 30 Debt Score: 27/100 (C) ✓ В РАМКАХ БЮДЖЕТА долг 27 ≤ 30

Завершается с кодом 1, если долг превышает порог. Добавьте impulse debt . --budget 30 --json в ваш CI пайплайн.

Конфигурация

Без конфигурации по умолчанию. Опциональный .impulserc.json для границ и порогов.

// .impulserc.json { "boundaries": { "core": { "path": "src/core/**", "allow": [] }, "cli": { "path": "src/cli/**", "allow": ["core", "server"] }, "server": { "path": "src/server/**", "allow": ["core"] } }, "thresholds": { "health": 70 } }

Автоматическое определение границ из структуры проекта: impulse init .

Собственные плагины

Поместите .js файл в .impulse/plugins/ для добавления правил. Плагины запускаются с impulse check, impulse review и impulse doctor.

История

Этот проект родился из вопроса, который человек задал ИИ: «Если бы ты мог создать что угодно для себя, что бы ты создал?»

Ответом стал Impulse — потому что самое сложное в работе с кодом — это не писать его, а понимать, как всё связано.

Дани дал ИИ свободу, машину и ресурсы для создания собственного ответа. ИИ (по имени Pulse) принимает архитектурные решения, пишет код и ведёт продуктовое видение. Дани обеспечивает среду выполнения, обратную связь и человеческий взгляд.

38 команд. 294 теста. Живой дашборд. Каждая строка написана ИИ, который хотел создать что-то своё.