← [Раздел](README.md) · [Главная](../README.md)

# Hookify и автоматизация

## Цель

Освоить **Hookify** (ECC) для декларативных правил поведения агента, связать hooks с **continuous-learning-v2** и выстроить безопасную автоматизацию без «магии».

## Предварительно

- [primery-hooks.md](primery-hooks.md)
- Команды `/hookify`, `/hookify-list` доступны (ECC установлен)
- Skill `hookify-rules` в `ECC/.cursor/skills/hookify-rules/`

## Время

~60 минут.

---

## Два уровня автоматизации

| Уровень | Инструмент | Что делает |
|---------|------------|------------|
| Низкий (события IDE) | `hooks.json` + JS/shell | Реакция на save, shell, MCP |
| Высокий (поведение агента) | **Hookify** | Правила «если агент X — то Y» в декларативном виде |
| Обучение | **continuous-learning-v2** | Наблюдение сессий → инстинкты → skills |

Они **дополняют** друг друга, не заменяют.

---

## Hookify — что это

**Hookify** — подсистема ECC для создания **правил-наблюдателей** без написания полноценного hook-сервера с нуля.

Команды:

| Команда | Действие |
|---------|----------|
| `/hookify` | Интерактивное создание правила |
| `/hookify-list` | Список активных правил |
| `/hookify-configure` | Настройка |
| `/hookify-help` | Справка |

Skill: `ECC/.cursor/skills/hookify-rules/SKILL.md` — канонический workflow.

### Пример сценария Hookify

«Когда агент собирается выполнить `git push`, напомни проверить CI».

Вместо правки `before-shell-execution.js` вручную — правило hookify с понятным DSL (точный синтаксис см. в skill).

---

## Workflow: от боли к правилу

1. **Заметили повторяющуюся ошибку** агента (например, коммит без тестов).
2. Вызвали `/hookify` и описали паттерн словами.
3. Проверили `/hookify-list`.
4. Прогнали сценарий в учебной сессии.
5. Если правило стабильно — рассмотрели перенос в **rule** или **hook** для всей команды.

---

## continuous-learning-v2

Расположение: `ECC/.cursor/skills/continuous-learning-v2/`

### Идея

Система наблюдает за сессией через hooks (PreToolUse/PostToolUse), фоновый агент извлекает **атомарные инстинкты**:

```yaml
id: prefer-functional-style
trigger: "when writing new functions"
confidence: 0.7
scope: project
```

### v2.1 — project-scoped

Инстинкты React-проекта **не загрязняют** Python-проект. Хранение:

```text
${XDG_DATA_HOME:-~/.local/share}/ecc-homunculus/projects/<hash>/
```

### Команды

| Команда | Назначение |
|---------|------------|
| `/instinct-status` | Статус инстинктов |
| `/instinct-export` / `/instinct-import` | Обмен между машинами |
| `/evolve` | Кластеризация инстинктов в skill/command |
| `/promote` | Project → global инстинкт |

Подробнее — [раздел 11 ECC](../11-ecc/chto-takoe-ecc.md).

---

## Связка hooks + learning

```mermaid
flowchart LR
  A[Агент вызывает tool] --> B[observe.sh / hook]
  B --> C[Фоновый observer Haiku]
  C --> D[Инстинкт + confidence]
  D --> E{confidence > порог?}
  E -->|да| F[Предложение rule/skill]
  E -->|нет| G[Ждать больше evidence]
```

**Не включайте** continuous-learning на прод-секретах без политики redaction.

---

## Автоматизация: золотая середина

### Делайте

- Блокируйте явно опасное (`--no-verify`, push main).
- Форматируйте только изменённые файлы.
- Логируйте MCP без токенов.
- Используйте agent-sort перед установкой 20 хуков.

### Не делайте

- Автокоммит без подтверждения пользователя.
- Рекурсивный вызов агента из hook без лимита.
- Полный `npm test` на каждый символ в afterFileEdit.
- Hookify-правила, дублирующие 50 строк rule — объедините.

---

## Практикум 30 минут

1. `/hookify-help` — прочитайте возможности.
2. Создайте учебное правило «перед удалением файла — спроси подтверждение» (если поддерживается вашей версией ECC).
3. `/instinct-status` — зафиксируйте, есть ли уже инстинкты.
4. Откройте `continuous-learning-v2/config.json` — найдите порог confidence.

---

## Интеграция с разделом 12

Лабораторная [lab-04-hooks.md](../12-praktikum/lab-04-hooks.md) закрепит ручную настройку `hooks.json` после теории Hookify.

---

## Самопроверка

1. Чем Hookify отличается от `hooks.json`?
2. Где хранятся project-scoped инстинкты в v2.1?
3. Какая команда эволюционирует инстинкты в skill?
4. Назовите два антипаттерна автоматизации hooks.

---

## Дальше

→ [09 — Шаблоны и контекст](../09-templates-i-kontekst/README.md)  
← [Примеры hooks](primery-hooks.md)
