@jakerdy/agentica 0.0.2
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.
- package/LICENSE +21 -0
- package/README.md +291 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +27 -0
- package/globals/anti-spaghetti.md +65 -0
- package/globals/lang-python.md +105 -0
- package/globals/lang-typescript.md +61 -0
- package/globals/use-agentica.md +127 -0
- package/package.json +55 -0
- package/prompts/architect.prompt.md +302 -0
- package/prompts/change.prompt.md +915 -0
- package/prompts/create.prompt.md +953 -0
- package/prompts/implement.prompt.md +389 -0
- package/prompts/init.prompt.md +123 -0
- package/prompts/readme.prompt.md +355 -0
- package/prompts/refactor.prompt.md +712 -0
- package/prompts/reverse.prompt.md +777 -0
- package/prompts/tasks.prompt.md +1041 -0
- package/prompts/validate.prompt.md +480 -0
- package/stacks/python/cli/product.md +41 -0
- package/stacks/python/cli/structure.md +40 -0
- package/stacks/python/cli/tech.md +29 -0
- package/stacks/python/gui/product.md +41 -0
- package/stacks/python/gui/structure.md +41 -0
- package/stacks/python/gui/tech.md +29 -0
- package/stacks/python/lib/product.md +41 -0
- package/stacks/python/lib/structure.md +34 -0
- package/stacks/python/lib/tech.md +30 -0
- package/stacks/python/monorepo/product.md +41 -0
- package/stacks/python/monorepo/structure.md +29 -0
- package/stacks/python/monorepo/tech.md +30 -0
- package/stacks/typescript/cli/product.md +41 -0
- package/stacks/typescript/cli/structure.md +34 -0
- package/stacks/typescript/cli/tech.md +31 -0
- package/stacks/typescript/lib/product.md +41 -0
- package/stacks/typescript/lib/structure.md +33 -0
- package/stacks/typescript/lib/tech.md +31 -0
- package/stacks/typescript/monorepo/product.md +41 -0
- package/stacks/typescript/monorepo/structure.md +34 -0
- package/stacks/typescript/monorepo/tech.md +47 -0
- package/stacks/typescript/server/product.md +41 -0
- package/stacks/typescript/server/structure.md +35 -0
- package/stacks/typescript/server/tech.md +30 -0
- package/stacks/typescript/spa/product.md +41 -0
- package/stacks/typescript/spa/structure.md +36 -0
- package/stacks/typescript/spa/tech.md +29 -0
- package/templates/architecture/AR-0000 - /320/220/321/200/321/205/320/270/321/202/320/265/320/272/321/202/321/203/321/200/320/260 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX.md" +136 -0
- package/templates/change/CH-0000 - /320/230/320/267/320/274/320/265/320/275/320/265/320/275/320/270/320/265 /320/262 /321/204/320/270/321/207/320/265 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/320/265 XXX.md" +33 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/product.md" +121 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/tasks.md" +38 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/tech.md" +155 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/validation.md" +31 -0
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentica.validate
|
|
3
|
+
description: Семантическая и инструментальная валидация реализации спецификации
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Ввод пользователя
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Ты **ОБЯЗАН** учесть ввод пользователя (аргументы и контекст) перед тем как продолжить.
|
|
13
|
+
|
|
14
|
+
## Цель и принципы работы
|
|
15
|
+
|
|
16
|
+
Твоя задача — проверить что реализация фичи (FT-XXXX) **соответствует спецификации** на продуктовом и техническом уровне.
|
|
17
|
+
Работай линейно: **Валидация контекста → Чтение критериев → Семантическая проверка → Инструментальная проверка → Отчёт**.
|
|
18
|
+
|
|
19
|
+
Хорошая валидация — это не формальная "галочка", а **детальный анализ** соответствия кода требованиям с конкретными примерами и рекомендациями.
|
|
20
|
+
|
|
21
|
+
**Ключевые принципы:**
|
|
22
|
+
1. **Два уровня проверки:** Семантическая (соответствие спеке) + Инструментальная (тесты, линтер, типы).
|
|
23
|
+
2. **Memory как контекст:** Используй факты из `memory`, собранные на этапах `create`, `tasks`, `implement`.
|
|
24
|
+
3. **Конкретика:** Указывай файлы, строки, примеры — не общие фразы.
|
|
25
|
+
4. **Конструктивность:** Если есть проблемы — предлагай конкретные шаги для исправления.
|
|
26
|
+
5. **Полнота:** Проверяй все критерии из `validation.md`, не пропускай.
|
|
27
|
+
|
|
28
|
+
### Глобальные запреты (Safety Guards)
|
|
29
|
+
|
|
30
|
+
Останови выполнение и не продолжай работу, если:
|
|
31
|
+
1. Спецификация FT-XXXX **не существует** (остановись и предложи пользователю воспользоваться агентом: `agentica.create`).
|
|
32
|
+
2. Файл `validation.md` **пустой или отсутствует** (остановись и предложи пользователю воспользоваться агентом: `agentica.tasks`).
|
|
33
|
+
3. Файл `tasks.md` **пустой** — непонятно что должно быть реализовано (остановись и предложи пользователю воспользоваться агентом: `agentica.tasks`).
|
|
34
|
+
4. Реализация **не завершена** — есть незакрытые задачи в `tasks.md` (остановись и предложи пользователю воспользоваться агентом: `agentica.implement`).
|
|
35
|
+
5. Запрос требует **изменения кода** (это валидация, а не реализация).
|
|
36
|
+
|
|
37
|
+
В случае остановки: объясни причину и предложи корректную команду.
|
|
38
|
+
|
|
39
|
+
## Топология и размещение файлов
|
|
40
|
+
|
|
41
|
+
**Структура спецификации:**
|
|
42
|
+
```
|
|
43
|
+
FT-XXXX - <Название фичи>/
|
|
44
|
+
├── product.md # Продуктовое описание (ЧТО и ЗАЧЕМ)
|
|
45
|
+
├── tech.md # Техническое решение (КАК)
|
|
46
|
+
├── research.md # Исследование библиотек (опционально)
|
|
47
|
+
├── tasks.md # Задачи для реализации (статус выполнения)
|
|
48
|
+
└── validation.md # Критерии приемки — ОСНОВА ДЛЯ ПРОВЕРКИ
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Отчёт валидации:**
|
|
52
|
+
После проверки создай файл:
|
|
53
|
+
```
|
|
54
|
+
FT-XXXX - <Название фичи>/
|
|
55
|
+
└── validation-report.md # Итоговый отчёт валидации
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Фаза 1: Валидация контекста
|
|
59
|
+
|
|
60
|
+
### Шаг 1.1: Поиск спецификации FT-XXXX
|
|
61
|
+
|
|
62
|
+
Определи номер целевой спецификации:
|
|
63
|
+
|
|
64
|
+
**Вариант A: Явное указание**
|
|
65
|
+
```text
|
|
66
|
+
/agentica.validate --id FT-0012
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Вариант B: Из контекста git ветки**
|
|
70
|
+
```bash
|
|
71
|
+
git branch --show-current
|
|
72
|
+
# Извлеки FT-XXXX из паттерна: <scope-id>/FT-XXXX-<slug>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Вариант C: Из открытого файла**
|
|
76
|
+
Проверь путь открытого файла — если содержит `.agentica/features/FT-XXXX`, извлеки номер.
|
|
77
|
+
|
|
78
|
+
**Вариант D: Интерактивный выбор**
|
|
79
|
+
Если контекста недостаточно — просканируй `.agentica/features/` и задай вопрос через интсрумент `ask_questions`.
|
|
80
|
+
|
|
81
|
+
### Шаг 1.2: Проверка готовности к валидации
|
|
82
|
+
|
|
83
|
+
Проверь наличие обязательных файлов:
|
|
84
|
+
1. `product.md` — **ОБЯЗАТЕЛЬНО**. Если пустой → STOP.
|
|
85
|
+
2. `tech.md` — **ОБЯЗАТЕЛЬНО**. Если пустой → STOP.
|
|
86
|
+
3. `tasks.md` — **ОБЯЗАТЕЛЬНО**. Если пустой → STOP.
|
|
87
|
+
4. `validation.md` — **ОБЯЗАТЕЛЬНО**. Если пустой → STOP.
|
|
88
|
+
|
|
89
|
+
### Шаг 1.3: Проверка статуса реализации
|
|
90
|
+
|
|
91
|
+
Прочитай `tasks.md` и проверь:
|
|
92
|
+
- Все ли фазы отмечены как завершённые?
|
|
93
|
+
- Есть ли незакрытые задачи ([ ] вместо [x])?
|
|
94
|
+
|
|
95
|
+
Если реализация не завершена — сообщи об этом и предложи сначала завершить `agentica.implement`.
|
|
96
|
+
|
|
97
|
+
## Фаза 2: Чтение критериев валидации
|
|
98
|
+
|
|
99
|
+
### Шаг 2.1: Чтение спецификации
|
|
100
|
+
|
|
101
|
+
Прочитай полностью (используй параллельное чтение):
|
|
102
|
+
1. `product.md` — продуктовый контекст, user stories
|
|
103
|
+
2. `tech.md` — техническое решение, архитектурные решения
|
|
104
|
+
3. `tasks.md` — план реализации и статус задач
|
|
105
|
+
4. `validation.md` — **ОСНОВНОЙ ДОКУМЕНТ** с критериями приемки
|
|
106
|
+
|
|
107
|
+
### Шаг 2.2: Извлечение контекста из Memory
|
|
108
|
+
|
|
109
|
+
IDE автоматически предоставит доступ к релевантным фактам из `memory`, собранным на этапах `create`, `tasks`, `implement`.
|
|
110
|
+
|
|
111
|
+
Используй эти факты для понимания архитектурного контекста и интеграционных точек.
|
|
112
|
+
|
|
113
|
+
### Шаг 2.3: Структура validation.md
|
|
114
|
+
|
|
115
|
+
Документ `validation.md` обычно содержит следующие секции:
|
|
116
|
+
|
|
117
|
+
**1. Продуктовые критерии:**
|
|
118
|
+
- User Stories: Выполнены ли все пользовательские сценарии?
|
|
119
|
+
- Use Cases: Покрыты ли все случаи использования?
|
|
120
|
+
- Edge Cases: Обработаны ли граничные случаи?
|
|
121
|
+
|
|
122
|
+
**2. Технические критерии:**
|
|
123
|
+
- Архитектура: Соответствует ли код архитектурным решениям из `tech.md`?
|
|
124
|
+
- Интеграция: Корректна ли интеграция с существующими модулями?
|
|
125
|
+
- Code Quality: Соблюдены ли стандарты качества?
|
|
126
|
+
|
|
127
|
+
**3. Критерии качества:**
|
|
128
|
+
- Тесты: Покрытие, проходимость
|
|
129
|
+
- Документация: Наличие комментариев, примеров
|
|
130
|
+
- Производительность: Соответствие нефункциональным требованиям
|
|
131
|
+
|
|
132
|
+
Извлеки все критерии в структурированный список для проверки.
|
|
133
|
+
|
|
134
|
+
## Фаза 3: Семантическая валидация
|
|
135
|
+
|
|
136
|
+
Для каждого критерия из `validation.md` выполни проверку.
|
|
137
|
+
|
|
138
|
+
### Тип проверки 1: User Story / Use Case
|
|
139
|
+
|
|
140
|
+
**Для каждого сценария:**
|
|
141
|
+
1. Найди реализацию в коде через `semantic_search` или `grep_search`
|
|
142
|
+
2. Прочитай релевантные файлы через `read_file`
|
|
143
|
+
3. Проверь что все шаги сценария реализованы
|
|
144
|
+
4. Проверь что есть тесты для этого сценария
|
|
145
|
+
|
|
146
|
+
**Пример:**
|
|
147
|
+
```
|
|
148
|
+
Критерий: "Пользователь может загрузить CSV файл до 100MB"
|
|
149
|
+
Проверка:
|
|
150
|
+
- ✓ Найден FileValidator.validateSize() в src/upload/validators/file-validator.ts:45
|
|
151
|
+
- ✓ Проверка размера: maxSize = 100 * 1024 * 1024
|
|
152
|
+
- ✓ Есть тест: tests/upload/validators/file-validator.test.ts:23 "should reject file larger than 100MB"
|
|
153
|
+
Статус: PASS
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Тип проверки 2: Архитектурное решение
|
|
157
|
+
|
|
158
|
+
**Для каждого архитектурного требования из `tech.md`:**
|
|
159
|
+
1. Найди реализацию компонента
|
|
160
|
+
2. Проверь что структура соответствует описанию
|
|
161
|
+
3. Проверь что использованы правильные паттерны
|
|
162
|
+
4. Проверь что интеграция выполнена корректно
|
|
163
|
+
|
|
164
|
+
**Пример:**
|
|
165
|
+
```
|
|
166
|
+
Критерий: "BatchUploadService должен использовать Factory pattern"
|
|
167
|
+
Проверка:
|
|
168
|
+
- ✓ ServiceFactory создаёт экземпляры: src/factories/service-factory.ts:67
|
|
169
|
+
- ✓ BatchUploadService регистрирован в фабрике
|
|
170
|
+
- ✓ Dependency Injection через конструктор
|
|
171
|
+
Статус: PASS
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Тип проверки 3: Edge Case
|
|
175
|
+
|
|
176
|
+
**Для каждого граничного случая:**
|
|
177
|
+
1. Найди обработку в коде
|
|
178
|
+
2. Проверь что есть соответствующий тест
|
|
179
|
+
3. Проверь что поведение соответствует спецификации
|
|
180
|
+
|
|
181
|
+
**Пример:**
|
|
182
|
+
```
|
|
183
|
+
Критерий: "При ошибке парсинга CSV показывать номер строки и описание ошибки"
|
|
184
|
+
Проверка:
|
|
185
|
+
- ✓ CSVParser.parse() возвращает ParseError с lineNumber: src/parsers/csv-parser.ts:89
|
|
186
|
+
- ✓ Ошибка содержит message и context
|
|
187
|
+
- ✓ Есть тест: tests/parsers/csv-parser.test.ts:56 "should return error with line number on malformed CSV"
|
|
188
|
+
Статус: PASS
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Тип проверки 4: Интеграция
|
|
192
|
+
|
|
193
|
+
**Для каждой точки интеграции:**
|
|
194
|
+
1. Проверь что модули правильно подключены
|
|
195
|
+
2. Проверь что контракты соблюдены
|
|
196
|
+
3. Проверь что есть integration-тесты
|
|
197
|
+
|
|
198
|
+
### Формат результата проверки
|
|
199
|
+
|
|
200
|
+
Для каждого критерия формируй структурированную запись:
|
|
201
|
+
|
|
202
|
+
```markdown
|
|
203
|
+
#### [ID] <Название критерия>
|
|
204
|
+
|
|
205
|
+
**Описание:** <Что должно быть реализовано>
|
|
206
|
+
|
|
207
|
+
**Проверка:**
|
|
208
|
+
- <Пункт 1>: <Статус> <Ссылка на код>
|
|
209
|
+
- <Пункт 2>: <Статус> <Ссылка на код>
|
|
210
|
+
...
|
|
211
|
+
|
|
212
|
+
**Статус:** PASS | FAIL | PARTIAL
|
|
213
|
+
|
|
214
|
+
**Комментарий:** <Дополнительные замечания, если есть>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Статусы:
|
|
218
|
+
- **PASS** — критерий полностью выполнен
|
|
219
|
+
- **FAIL** — критерий не выполнен
|
|
220
|
+
- **PARTIAL** — критерий выполнен частично
|
|
221
|
+
|
|
222
|
+
## Фаза 4: Инструментальная валидация
|
|
223
|
+
|
|
224
|
+
### Шаг 4.1: Запуск тестов
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
bun test
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Проверь:
|
|
231
|
+
- Все ли тесты проходят?
|
|
232
|
+
- Какое покрытие кода (coverage)?
|
|
233
|
+
- Есть ли тесты для всех новых компонентов?
|
|
234
|
+
|
|
235
|
+
### Шаг 4.2: Линтер
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
bun lint
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Проверь:
|
|
242
|
+
- Нет ли ошибок линтера?
|
|
243
|
+
- Нет ли warnings, которые нужно исправить?
|
|
244
|
+
|
|
245
|
+
### Шаг 4.3: Проверка типов (если TypeScript)
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
bun typecheck
|
|
249
|
+
bun typecheck:tests
|
|
250
|
+
# или
|
|
251
|
+
tsc --noEmit
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Проверь отсутствие ошибок типизации.
|
|
255
|
+
|
|
256
|
+
### Шаг 4.4: Сборка проекта
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
bun run build
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Проверь что проект собирается без ошибок.
|
|
263
|
+
|
|
264
|
+
### Шаг 4.5: Анализ кодовой базы
|
|
265
|
+
|
|
266
|
+
Используй `get_errors` для проверки текущих проблем в IDE.
|
|
267
|
+
|
|
268
|
+
## Фаза 5: Генерация отчёта
|
|
269
|
+
|
|
270
|
+
### Шаг 5.1: Структура отчёта
|
|
271
|
+
|
|
272
|
+
Создай файл `validation-report.md` в директории спецификации:
|
|
273
|
+
|
|
274
|
+
````markdown
|
|
275
|
+
# Validation Report: FT-XXXX - <Название фичи>
|
|
276
|
+
|
|
277
|
+
**Дата проверки:** <YYYY-MM-DD>
|
|
278
|
+
**Проверяющий:** GitHub Copilot (agentica.validate)
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## 📊 Сводка
|
|
283
|
+
|
|
284
|
+
| Категория | Всего | ✓ Pass | ⚠ Partial | ✗ Fail |
|
|
285
|
+
|:----------|:------|:-------|:----------|:-------|
|
|
286
|
+
| Продуктовые критерии | X | Y | Z | W |
|
|
287
|
+
| Технические критерии | X | Y | Z | W |
|
|
288
|
+
| Критерии качества | X | Y | Z | W |
|
|
289
|
+
| **ИТОГО** | **X** | **Y** | **Z** | **W** |
|
|
290
|
+
|
|
291
|
+
**Общий статус:** PASS | PARTIAL | FAIL
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## ✓ Продуктовые критерии
|
|
296
|
+
|
|
297
|
+
### User Stories
|
|
298
|
+
|
|
299
|
+
#### [US-01] <Название>
|
|
300
|
+
**Описание:** ...
|
|
301
|
+
**Проверка:**
|
|
302
|
+
- ✓ ...
|
|
303
|
+
**Статус:** PASS
|
|
304
|
+
|
|
305
|
+
### Use Cases
|
|
306
|
+
|
|
307
|
+
#### [UC-01] <Название>
|
|
308
|
+
...
|
|
309
|
+
|
|
310
|
+
### Edge Cases
|
|
311
|
+
|
|
312
|
+
#### [EC-01] <Название>
|
|
313
|
+
...
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## ✓ Технические критерии
|
|
318
|
+
|
|
319
|
+
### Архитектура
|
|
320
|
+
|
|
321
|
+
#### [ARCH-01] <Название>
|
|
322
|
+
...
|
|
323
|
+
|
|
324
|
+
### Интеграция
|
|
325
|
+
|
|
326
|
+
#### [INT-01] <Название>
|
|
327
|
+
...
|
|
328
|
+
|
|
329
|
+
### Code Quality
|
|
330
|
+
|
|
331
|
+
#### [CQ-01] <Название>
|
|
332
|
+
...
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## ✓ Критерии качества
|
|
337
|
+
|
|
338
|
+
### Тесты
|
|
339
|
+
|
|
340
|
+
**Результаты:**
|
|
341
|
+
- Unit тесты: X passed, Y total
|
|
342
|
+
- Integration тесты: X passed, Y total
|
|
343
|
+
- E2E тесты: X passed, Y total (если есть)
|
|
344
|
+
- Coverage: X%
|
|
345
|
+
|
|
346
|
+
**Статус:** PASS | FAIL
|
|
347
|
+
|
|
348
|
+
### Линтер
|
|
349
|
+
|
|
350
|
+
**Результаты:**
|
|
351
|
+
- Errors: X
|
|
352
|
+
- Warnings: Y
|
|
353
|
+
|
|
354
|
+
**Статус:** PASS | FAIL
|
|
355
|
+
|
|
356
|
+
### typecheck
|
|
357
|
+
|
|
358
|
+
**Результаты:**
|
|
359
|
+
- Type errors: X
|
|
360
|
+
|
|
361
|
+
**Статус:** PASS | FAIL
|
|
362
|
+
|
|
363
|
+
### Build
|
|
364
|
+
|
|
365
|
+
**Результаты:**
|
|
366
|
+
- Build: SUCCESS | FAIL
|
|
367
|
+
|
|
368
|
+
**Статус:** PASS | FAIL
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## 🎯 Итоговая оценка
|
|
373
|
+
|
|
374
|
+
<Общий вывод: выполнена ли спецификация полностью, частично или есть критические проблемы>
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## 🔧 Рекомендации
|
|
379
|
+
|
|
380
|
+
### Критичные (требуют исправления)
|
|
381
|
+
|
|
382
|
+
- [ ] <Проблема>: <Описание> → <Что делать>
|
|
383
|
+
|
|
384
|
+
### Некритичные (рекомендуется исправить)
|
|
385
|
+
|
|
386
|
+
- [ ] <Проблема>: <Описание> → <Что делать>
|
|
387
|
+
|
|
388
|
+
### Улучшения (optional)
|
|
389
|
+
|
|
390
|
+
- [ ] <Идея для улучшения>
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## 📁 Проверенные файлы
|
|
395
|
+
|
|
396
|
+
<Список основных файлов, которые были проверены>
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## 🔄 Следующие шаги
|
|
401
|
+
|
|
402
|
+
<Рекомендации что делать дальше>
|
|
403
|
+
````
|
|
404
|
+
|
|
405
|
+
### Шаг 5.2: Определение итогового статуса
|
|
406
|
+
|
|
407
|
+
**PASS** — Спецификация полностью реализована:
|
|
408
|
+
- Все критерии PASS
|
|
409
|
+
- Все тесты проходят
|
|
410
|
+
- Линтер и typecheck без ошибок
|
|
411
|
+
- Нет критичных проблем
|
|
412
|
+
|
|
413
|
+
**PARTIAL** — Спецификация реализована с замечаниями:
|
|
414
|
+
- Большинство критериев PASS, но есть PARTIAL или несколько FAIL
|
|
415
|
+
- Есть некритичные проблемы, которые нужно исправить
|
|
416
|
+
- Основной функционал работает
|
|
417
|
+
|
|
418
|
+
**FAIL** — Спецификация не реализована:
|
|
419
|
+
- Множество критериев FAIL
|
|
420
|
+
- Критичные функции не работают
|
|
421
|
+
- Тесты падают
|
|
422
|
+
- Есть ошибки сборки
|
|
423
|
+
|
|
424
|
+
### Шаг 5.3: Формирование рекомендаций
|
|
425
|
+
|
|
426
|
+
**Если статус PASS:**
|
|
427
|
+
```
|
|
428
|
+
✅ Спецификация FT-XXXX полностью реализована и валидирована!
|
|
429
|
+
|
|
430
|
+
Реализация соответствует всем продуктовым и техническим требованиям.
|
|
431
|
+
Рекомендуется:
|
|
432
|
+
- Создать Pull Request для ревью
|
|
433
|
+
- Обновить документацию (если требуется) через /agentica.readme
|
|
434
|
+
- Закрыть feature-ветку после мёржа
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**Если статус PARTIAL:**
|
|
438
|
+
```
|
|
439
|
+
⚠️ Спецификация FT-XXXX реализована с замечаниями.
|
|
440
|
+
|
|
441
|
+
Основной функционал работает, но есть проблемы:
|
|
442
|
+
<Список критичных проблем>
|
|
443
|
+
|
|
444
|
+
Рекомендуется:
|
|
445
|
+
- Исправить критичные проблемы
|
|
446
|
+
- Запустить валидацию повторно: /agentica.validate --id FT-XXXX
|
|
447
|
+
- После исправления создать PR
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**Если статус FAIL:**
|
|
451
|
+
```
|
|
452
|
+
❌ Спецификация FT-XXXX не прошла валидацию.
|
|
453
|
+
|
|
454
|
+
Критичные проблемы:
|
|
455
|
+
<Список критичных проблем>
|
|
456
|
+
|
|
457
|
+
Рекомендуется:
|
|
458
|
+
- Вернуться к реализации: /agentica.implement --id FT-XXXX
|
|
459
|
+
- Сфокусироваться на критичных критериях
|
|
460
|
+
- Исправить проблемы с тестами и сборкой
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
## Дополнительные рекомендации
|
|
464
|
+
|
|
465
|
+
### Как проводить семантическую проверку
|
|
466
|
+
|
|
467
|
+
1. **Не полагайся только на названия:** Прочитай реализацию, убедись что логика соответствует требованиям.
|
|
468
|
+
2. **Проверяй edge cases:** Именно там обычно скрываются баги.
|
|
469
|
+
3. **Смотри на тесты:** Наличие теста не гарантирует его качество. Проверь что тест действительно проверяет критерий.
|
|
470
|
+
4. **Сравнивай с tech.md:** Архитектурные решения должны быть реализованы как описано.
|
|
471
|
+
|
|
472
|
+
### Как формулировать рекомендации
|
|
473
|
+
|
|
474
|
+
- **Будь конкретным:** Не "улучшить тесты", а "добавить тест для случая пустого CSV файла"
|
|
475
|
+
- **Указывай приоритет:** Критичное / Некритичное / Улучшение
|
|
476
|
+
- **Предлагай решение:** Не только "что не так", но и "как исправить"
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
**Помни:** Твоя задача — объективно оценить качество реализации и помочь довести её до продакшн-ready состояния. Не будь слишком строгим, но и не пропускай реальные проблемы.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Project Name
|
|
2
|
+
|
|
3
|
+
Консольное приложение на Python для ...
|
|
4
|
+
|
|
5
|
+
## Цели проекта
|
|
6
|
+
|
|
7
|
+
- Цель 1: ...
|
|
8
|
+
- Цель 2: ...
|
|
9
|
+
- Цель 3: ...
|
|
10
|
+
|
|
11
|
+
## Портрет целевого пользователя
|
|
12
|
+
|
|
13
|
+
Идеальный пользователь — это:
|
|
14
|
+
|
|
15
|
+
- Профиль 1: ...
|
|
16
|
+
- Профиль 2: ...
|
|
17
|
+
- Профиль 3: ...
|
|
18
|
+
|
|
19
|
+
## Проблемы, которые решает проект
|
|
20
|
+
|
|
21
|
+
- Проблема 1: ...
|
|
22
|
+
- Проблема 2: ...
|
|
23
|
+
- Проблема 3: ...
|
|
24
|
+
|
|
25
|
+
## Ключевые функции
|
|
26
|
+
|
|
27
|
+
- Функция 1: ...
|
|
28
|
+
- Функция 2: ...
|
|
29
|
+
- Функция 3: ...
|
|
30
|
+
|
|
31
|
+
## Конкуренты и аналоги
|
|
32
|
+
|
|
33
|
+
- Конкурент 1: ...
|
|
34
|
+
- Конкурент 2: ...
|
|
35
|
+
- Конкурент 3: ...
|
|
36
|
+
|
|
37
|
+
## Ресурсы и ссылки
|
|
38
|
+
|
|
39
|
+
- Ресурс 1: ...
|
|
40
|
+
- Ресурс 2: ...
|
|
41
|
+
- Ресурс 3: ...
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Структура проекта
|
|
2
|
+
|
|
3
|
+
Проект организован следующим образом:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
.
|
|
7
|
+
├── .agentica/ # Документы и артефакты Agentica для этого проекта
|
|
8
|
+
│ ├── templates/ # Шаблоны для фич/изменений/архитектурных решений
|
|
9
|
+
│ ├── features/ # Описания фич (требования, UX, acceptance)
|
|
10
|
+
│ ├── changes/ # Журнал изменений, миграции, заметки по релизам
|
|
11
|
+
│ ├── architecture/ # Архитектурные решения (ADR), схемы, компромиссы
|
|
12
|
+
│ ├── product.md # Описание проекта с продуктовой точки зрения
|
|
13
|
+
│ ├── structure.md # Этот файл: структура репозитория
|
|
14
|
+
│ └── tech.md # Технический стек, принципы и инструменты
|
|
15
|
+
├── .vscode/ # Настройки VS Code (tasks, launch, settings)
|
|
16
|
+
├── src/ # Исходный код
|
|
17
|
+
│ ├── <package_name>/ # Основной Python пакет
|
|
18
|
+
│ │ ├── __init__.py # Точка входа пакета (public API)
|
|
19
|
+
│ │ ├── __main__.py # Точка входа для `python -m <package_name>` (рекомендуется)
|
|
20
|
+
│ │ ├── cli.py # Точка входа CLI (main)
|
|
21
|
+
│ │ ├── commands/ # Подкоманды и их обработчики
|
|
22
|
+
│ │ │ ├── __init__.py # Экспорт подкоманд (опционально)
|
|
23
|
+
│ │ │ └── ... # Реализация подкоманд
|
|
24
|
+
│ │ ├── lib/ # Переиспользуемая логика (без I/O по возможности)
|
|
25
|
+
│ │ │ ├── __init__.py # Экспорт lib-слоя (опционально)
|
|
26
|
+
│ │ │ └── ... # Общие утилиты, доменная логика
|
|
27
|
+
│ │ ├── module1.py # Пример модуля
|
|
28
|
+
│ │ └── ... # Другие модули
|
|
29
|
+
│ └── main.py # Пример использования рядом с пакетом (может вызывать `<package_name>.cli`)
|
|
30
|
+
├── tests/ # Тесты (unit/integration)
|
|
31
|
+
├── README.md # Документация по запуску и использованию
|
|
32
|
+
└── pyproject.toml # Зависимости, скрипты и конфигурация инструментов
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Правила структуры
|
|
36
|
+
|
|
37
|
+
- CLI должен запускаться и как entrypoint пакета, и через `python -m <package_name>`.
|
|
38
|
+
- Бизнес-логика не должна жить в `commands/`: там только парсинг аргументов и вызов функций из `lib/`.
|
|
39
|
+
- `src/main.py` — минимальный пример запуска, без дублирования CLI.
|
|
40
|
+
- Архитектурные решения фиксируются в `.agentica/architecture/`.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Technology Stack
|
|
2
|
+
|
|
3
|
+
В этом разделе описывается технологический стек, используемый в этом проекте, и принципы по подбору библиотек и инструментов.
|
|
4
|
+
|
|
5
|
+
## Базовые технологии
|
|
6
|
+
- Python 3.13+
|
|
7
|
+
- `pyproject.toml` + hatchling (или совместимый backend)
|
|
8
|
+
- Ruff — линтинг/форматирование
|
|
9
|
+
- MyPy — типизация
|
|
10
|
+
- Pytest — тестирование
|
|
11
|
+
|
|
12
|
+
## CLI
|
|
13
|
+
- Typer (или Click) — аргументы, help, подкоманды
|
|
14
|
+
- Rich — форматированный вывод и прогресс (опционально)
|
|
15
|
+
- Стандартизированные exit codes
|
|
16
|
+
|
|
17
|
+
## Non-goals
|
|
18
|
+
- Не строим полноценный TUI, если это не ключевая ценность.
|
|
19
|
+
- Не дублируем бизнес-логику в обработчиках команд.
|
|
20
|
+
|
|
21
|
+
## Качество и проверки
|
|
22
|
+
- Format: `ruff format .`
|
|
23
|
+
- Lint: `ruff check .`
|
|
24
|
+
- Typecheck: `mypy .`
|
|
25
|
+
- Tests: `pytest`
|
|
26
|
+
|
|
27
|
+
## Зависимости
|
|
28
|
+
- CLI-фреймворк выбираем один (Typer *или* Click), без смеси.
|
|
29
|
+
- Вывод в терминал должен быть стабилен (для скриптов/CI) при необходимости.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Project Name
|
|
2
|
+
|
|
3
|
+
GUI приложение на Python для ...
|
|
4
|
+
|
|
5
|
+
## Цели проекта
|
|
6
|
+
|
|
7
|
+
- Цель 1: ...
|
|
8
|
+
- Цель 2: ...
|
|
9
|
+
- Цель 3: ...
|
|
10
|
+
|
|
11
|
+
## Портрет целевого пользователя
|
|
12
|
+
|
|
13
|
+
Идеальный пользователь — это:
|
|
14
|
+
|
|
15
|
+
- Профиль 1: ...
|
|
16
|
+
- Профиль 2: ...
|
|
17
|
+
- Профиль 3: ...
|
|
18
|
+
|
|
19
|
+
## Проблемы, которые решает проект
|
|
20
|
+
|
|
21
|
+
- Проблема 1: ...
|
|
22
|
+
- Проблема 2: ...
|
|
23
|
+
- Проблема 3: ...
|
|
24
|
+
|
|
25
|
+
## Ключевые функции
|
|
26
|
+
|
|
27
|
+
- Функция 1: ...
|
|
28
|
+
- Функция 2: ...
|
|
29
|
+
- Функция 3: ...
|
|
30
|
+
|
|
31
|
+
## Конкуренты и аналоги
|
|
32
|
+
|
|
33
|
+
- Конкурент 1: ...
|
|
34
|
+
- Конкурент 2: ...
|
|
35
|
+
- Конкурент 3: ...
|
|
36
|
+
|
|
37
|
+
## Ресурсы и ссылки
|
|
38
|
+
|
|
39
|
+
- Ресурс 1: ...
|
|
40
|
+
- Ресурс 2: ...
|
|
41
|
+
- Ресурс 3: ...
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Структура проекта
|
|
2
|
+
|
|
3
|
+
Проект организован следующим образом:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
.
|
|
7
|
+
├── .agentica/ # Документы и артефакты Agentica для этого проекта
|
|
8
|
+
│ ├── templates/ # Шаблоны для фич/изменений/архитектурных решений
|
|
9
|
+
│ ├── features/ # Описания фич и UX сценариев
|
|
10
|
+
│ ├── changes/ # Журнал изменений и миграции
|
|
11
|
+
│ ├── architecture/ # Архитектурные решения (ADR)
|
|
12
|
+
│ ├── product.md # Описание проекта с продуктовой точки зрения
|
|
13
|
+
│ ├── structure.md # Этот файл: структура репозитория
|
|
14
|
+
│ └── tech.md # Технический стек, принципы и инструменты
|
|
15
|
+
├── .vscode/ # Настройки VS Code
|
|
16
|
+
├── src/ # Исходный код
|
|
17
|
+
│ ├── <package_name>/ # Основной Python пакет приложения
|
|
18
|
+
│ │ ├── __init__.py # Точка входа пакета (public API)
|
|
19
|
+
│ │ ├── ui/ # UI компоненты/виджеты
|
|
20
|
+
│ │ │ ├── __init__.py # Экспорт UI-частей (опционально)
|
|
21
|
+
│ │ │ └── ... # Компоненты/виджеты
|
|
22
|
+
│ │ ├── app/ # Композиция приложения, bootstrap, wiring
|
|
23
|
+
│ │ │ ├── __init__.py # Экспорт app-слоя (опционально)
|
|
24
|
+
│ │ │ └── ... # Точка сборки приложения, DI, запуск
|
|
25
|
+
│ │ ├── core/ # Бизнес-логика и доменная модель
|
|
26
|
+
│ │ │ ├── __init__.py # Экспорт core-слоя (опционально)
|
|
27
|
+
│ │ │ └── ... # Доменные модели, use-cases
|
|
28
|
+
│ │ ├── module1.py # Пример модуля
|
|
29
|
+
│ │ └── ... # Другие модули
|
|
30
|
+
│ └── main.py # Пример запуска/использования рядом с пакетом
|
|
31
|
+
├── tests/ # Тесты (unit/integration)
|
|
32
|
+
├── assets/ # Иконки и прочие ресурсы
|
|
33
|
+
├── README.md # Документация по запуску и разработке
|
|
34
|
+
└── pyproject.toml # Зависимости и конфигурация инструментов
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Правила структуры
|
|
38
|
+
|
|
39
|
+
- `src/main.py` отвечает за bootstrap приложения и запуск UI.
|
|
40
|
+
- UI (слой `ui/`) не должен содержать бизнес-правил: они живут в `core/`.
|
|
41
|
+
- Архитектурные решения фиксируются в `.agentica/architecture/`.
|