@gian-tiaga/eda 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,18 @@
1
1
  ---
2
2
  name: eda-automate
3
- description: 'Анализирует историю `docs/reviews/` и `docs/review-fixes/`, ищет повторяющиеся замечания и предлагает автоматизации — кастомные правила линтеров, статанализаторов, pre-commit-проверок. Опирается на инструменты, которые уже работают в проекте; если ничего не подходит — предлагает новый, без дублей с уже установленными. Не внедряет автоматизации — выдаёт приоритезированный список с черновиками правил. Внедрение — отдельная задача через `eda-plan` + `eda-execute`. Все вопросы — через интерактивный вопрос.'
3
+ description: 'Анализирует историю `docs/reviews/` и `docs/review-fixes/`, а с аргументом `plans` ещё и `docs/plans/`. Ищет повторяющиеся замечания и проблемы планирования, предлагает автоматизации — кастомные правила линтеров, статанализаторов, pre-commit-проверок или checks для планов. Опирается на инструменты, которые уже работают в проекте; если ничего не подходит — предлагает новый, без дублей с уже установленными. Не внедряет автоматизации — выдаёт приоритезированный список с черновиками правил. Внедрение — отдельная задача через `eda-plan` + `eda-execute`. Все вопросы — через интерактивный вопрос.'
4
4
  ---
5
5
 
6
6
  # Скил: Автоматизатор (eda-automate)
7
7
 
8
- Читаешь историю ревью и фиксов, находишь повторяющиеся замечания, предлагаешь, какие из них можно поймать автоматически: кастомным правилом линтера, статанализатора, pre-commit-проверкой. Не внедряешь — только предлагаешь, с черновиком правила и оценкой стоимости.
8
+ Читаешь историю ревью и фиксов, находишь повторяющиеся замечания, предлагаешь, какие из них можно поймать автоматически: кастомным правилом линтера, статанализатора, pre-commit-проверкой. Если передан аргумент `plans`, дополнительно читаешь планы из `docs/plans/` и ищешь повторяющиеся проблемы планирования, которые можно ловить автоматической проверкой плана. Не внедряешь — только предлагаешь, с черновиком правила и оценкой стоимости.
9
+
10
+ ## Режимы вызова
11
+
12
+ | Режим | Запуск | Что анализирует |
13
+ |---|---|---|
14
+ | Обычный | `eda-automate` | `docs/reviews/` + `docs/review-fixes/` |
15
+ | С планами | `eda-automate plans` | `docs/reviews/` + `docs/review-fixes/` + `docs/plans/` |
9
16
 
10
17
  ## Главные правила
11
18
 
@@ -15,6 +22,7 @@ description: 'Анализирует историю `docs/reviews/` и `docs/rev
15
22
  4. **Предлагай только повторяющееся.** Минимум — паттерн встречается в 2+ разных ревью или в 3+ местах одного. Единичные замечания не автоматизируем.
16
23
  5. **Каждое предложение — с черновиком правила.** Не «надо бы что-то сделать», а конкретный фрагмент: имя инструмента, имя правила, псевдокод/skeleton.
17
24
  6. **Простой язык. Таблицы** для приоритезации.
25
+ 7. **Планы анализируй только с аргументом `plans`.** Без него не читай `docs/plans/`, если пользователь не указал конкретные файлы планов.
18
26
 
19
27
  ## Интерактивные вопросы
20
28
 
@@ -27,16 +35,20 @@ description: 'Анализирует историю `docs/reviews/` и `docs/rev
27
35
  ## Этапы
28
36
 
29
37
  ### 1. Выбрать диапазон
38
+ Определи режим по аргументам вызова. Если передан `plans`, включи планы в источники без отдельного вопроса.
39
+
30
40
  `AskUserQuestion`: какую историю анализировать.
31
41
  - Все ревью + фиксы (по умолчанию)
42
+ - Все ревью + фиксы + планы (если передан `plans`)
32
43
  - Последние N (5/10/20)
33
44
  - За период (последние N дней)
34
45
  - Конкретные файлы
35
46
 
36
- Получи список файлов из `docs/reviews/` и `docs/review-fixes/`.
47
+ Получи список файлов из `docs/reviews/` и `docs/review-fixes/`. В режиме `plans` дополнительно получи список файлов из `docs/plans/`.
37
48
 
38
49
  ### 2. Прочитать контекст
39
50
  - Все выбранные ревью и отчёты о фиксах.
51
+ - В режиме `plans`: все выбранные планы из `docs/plans/`.
40
52
  - `docs/rules.md`, `docs/arch.md` (если есть).
41
53
  - Какие языки и фреймворки в проекте — определи сам.
42
54
  - Какие инструменты статанализа уже установлены и работают — определи по конфигам и зависимостям проекта.
@@ -47,6 +59,7 @@ description: 'Анализирует историю `docs/reviews/` и `docs/rev
47
59
  - Нарушения архитектурных границ (импорты не из API соседнего модуля).
48
60
  - Забытое: error handling, validation, очистка ресурсов.
49
61
  - Стиль: имена, форматирование, порядок.
62
+ - Для планов: пропущенные тесты, отсутствующая проверка после шага, слишком крупные шаги, шаги без файлов/модулей, противоречие `docs/rules.md` или `docs/arch.md`, нет критерия готовности, рискованные действия без rollback/backup.
50
63
 
51
64
  Для каждого паттерна собери: где встречался (ссылки на ревью), сколько раз, в каких файлах.
52
65
 
@@ -56,10 +69,11 @@ description: 'Анализирует историю `docs/reviews/` и `docs/rev
56
69
  1. Если в проекте **уже работает** инструмент, который умеет ловить этот класс паттернов — предлагай правило в нём.
57
70
  2. Если такого инструмента в проекте нет, но он стандартный для языка/фреймворка — предлагай его, явно отметив, что инструмент **новый** для проекта.
58
71
  3. **Не предлагай альтернативу уже установленному инструменту того же класса.** Если в проекте уже есть один статанализатор — не предлагай второй для тех же задач, даже если он мощнее.
72
+ 4. Для паттернов из планов предлагай проверку плана: скрипт, markdownlint-правило, pre-commit/check, CI-check или custom validator для `docs/plans/*.md`. Не притворяйся, что runtime-линтер кода поймает проблему, которая живёт только в тексте плана.
59
73
 
60
74
  Каждое предложение содержит:
61
75
  - Что ловит (одна-две фразы простым языком).
62
- - Где встречалось (ссылки на 2–3 ревью).
76
+ - Где встречалось (ссылки на 2–3 источника: ревью, фиксы или планы).
63
77
  - Инструмент и тип правила. Если инструмент **новый** для проекта — пометка «требует установки».
64
78
  - **Черновик правила** — псевдокод или фрагмент конфигурации.
65
79
  - Польза: `low` / `medium` / `high` (по частоте паттерна и вреду от пропуска).
@@ -71,13 +85,14 @@ description: 'Анализирует историю `docs/reviews/` и `docs/rev
71
85
  ---
72
86
  date: <YYYY-MM-DD HH:MM>
73
87
  sources: [docs/reviews/..., docs/review-fixes/...]
88
+ mode: <normal | plans>
74
89
  status: draft
75
90
  ---
76
91
 
77
92
  # Предложения по автоматизации
78
93
 
79
94
  ## Контекст
80
- - Проанализировано: N ревью + M фиксов
95
+ - Проанализировано: N ревью + M фиксов + K планов
81
96
  - Стек проекта: <по конфигам>
82
97
  - Уже работающие инструменты: <список>
83
98
 
@@ -114,3 +129,4 @@ status: draft
114
129
  - Предлагать второй инструмент того же класса в дополнение к уже установленному.
115
130
  - Сохранять отчёт куда-либо кроме `docs/automations/`.
116
131
  - Дублировать в предложениях правила, которые уже зафиксированы в `docs/rules.md` как автоматизированные.
132
+ - В обычном режиме без `plans` смешивать проблемы планирования с ревью и фиксами.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-review
3
- description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл). Формирует пронумерованные замечания, оценку 0–100, рекомендации «править / на усмотрение / не править». Сохраняет в docs/reviews/. Всегда проверяет своё же ревью тремя параллельными моделями (Sonnet, Haiku, Opus); кросс-CLI (Claude ↔ Codex) включается только флагом `strict`. После каждой проверки сам корректирует ревью. Не правит код — это `eda-fix-by-review`. Все вопросы через интерактивный вопрос.'
3
+ description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл). Если контекст ревью понятен из запроса или репозитория, не задаёт уточняющий вопрос и сразу выбирает цель. Формирует пронумерованные замечания, оценку 0–100, рекомендации «править / на усмотрение / не править». Сохраняет в docs/reviews/. Всегда проверяет своё же ревью тремя параллельными моделями (Sonnet, Haiku, Opus); кросс-CLI (Claude ↔ Codex) включается только флагом `strict`. После каждой проверки сам корректирует ревью. Не правит код — это `eda-fix-by-review`. Вопросытолько когда без ответа нельзя безопасно продолжать.'
4
4
  ---
5
5
 
6
6
  # Скил: Ревьюер (eda-review)
@@ -17,7 +17,7 @@ description: 'Ревью изменений (незакоммиченный diff
17
17
  ## Главные правила
18
18
 
19
19
  1. **Перед ревью** прочитай `docs/rules.md` и `docs/arch.md`, если есть. Замечания должны опираться на правила проекта, а не на твои общие представления.
20
- 2. **Интерактивные вопросы** — по разделу ниже.
20
+ 2. **Интерактивные вопросы** — по разделу ниже. Если контекст понятен, не спрашивай.
21
21
  3. **Не правишь код.** Только ревью. Запись только в `docs/reviews/`.
22
22
  4. **Мета-ревью тремя моделями — обязательно**, без флага. Кросс-CLI — только в `strict`.
23
23
  5. **Главный ревьюер — ты.** Мета-ревьюеры дают подсказки; решение — добавить, убрать или оставить пункт — за тобой. Не вставляй чужие пункты механически.
@@ -26,6 +26,11 @@ description: 'Ревью изменений (незакоммиченный diff
26
26
 
27
27
  ## Интерактивные вопросы
28
28
 
29
+ Если цель ревью понятна из запроса или текущего состояния репозитория, **не задавай вопрос**. Примеры понятного контекста:
30
+ - пользователь указал файл, папку, PR, ветку или тип diff;
31
+ - в запросе есть «ревью незакоммиченных изменений», «ревью текущей ветки», «проверь PR #N»;
32
+ - в рабочем дереве есть незакоммиченные изменения и пользователь просит «сделай ревью» без других целей.
33
+
29
34
  Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
30
35
  - Claude Code: используй `AskUserQuestion`.
31
36
  - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
@@ -35,7 +40,13 @@ description: 'Ревью изменений (незакоммиченный diff
35
40
  ## Этапы
36
41
 
37
42
  ### 1. Выбрать вход и прочитать контекст
38
- Через `AskUserQuestion` спроси, что ревьюим: незакоммиченный diff (`git diff HEAD`) / diff ветки от main (`git diff main...HEAD`) / конкретный файл или папка / номер PR. Получи diff/исходник в `$TARGET`. Прочитай `docs/rules.md`, `docs/arch.md`. Если в diff видно отсылки к плану из `docs/plans/` или исследованию из `docs/researches/` — прочитай их тоже.
43
+ Сначала попробуй определить цель ревью без вопроса:
44
+ - если пользователь указал файл, папку, PR, ветку или тип diff — используй это;
45
+ - если пользователь просит ревью без уточнений и есть незакоммиченные изменения — используй `git diff HEAD`;
46
+ - если незакоммиченных изменений нет, но текущая ветка не `main`/`master` и отличается от базовой ветки — используй `git diff <base>...HEAD`, где `<base>` выбери из существующих `main`, `master`, `origin/main`, `origin/master`;
47
+ - если цель всё ещё неоднозначна или diff пустой — только тогда через `AskUserQuestion` спроси, что ревьюим: незакоммиченный diff (`git diff HEAD`) / diff ветки от main (`git diff main...HEAD`) / конкретный файл или папка / номер PR.
48
+
49
+ Получи diff/исходник в `$TARGET`. Прочитай `docs/rules.md`, `docs/arch.md`. Если в diff видно отсылки к плану из `docs/plans/` или исследованию из `docs/researches/` — прочитай их тоже.
39
50
 
40
51
  ### 2. Сделать первичное ревью и сохранить
41
52
  Пройдись по изменениям. Замечания группируй по типу: bug / архитектура / стиль / тесты / безопасность / производительность / документация. Каждое — с локацией (`file:line`) и предложением «что сделать». Поставь оценку 0–100 (100 — идеально, 0 — переделывать).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "Набор скилов eda-* для Claude Code и Codex CLI: research, plan, execute, review, fix, send-review, commit, docs, automate",
5
5
  "type": "module",
6
6
  "bin": {