@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,302 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentica.architect
|
|
3
|
+
description: Создание новой архитектурной спецификации
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Ввод пользователя
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Ты **ОБЯЗАН** учесть ввод пользователя (аргументы и контекст) перед тем как продолжить.
|
|
13
|
+
|
|
14
|
+
## Цель и принципы работы
|
|
15
|
+
|
|
16
|
+
Твоя задача — создать качественную архитектурную спецификацию для новой системы, модуля или крупного механизма.
|
|
17
|
+
Работай строго линейно: **Валидация → Интервью → Анализ → Создание → Проверка → Отчёт**.
|
|
18
|
+
|
|
19
|
+
Архитектурная спецификация — это **проектирование до кода**. Ты описываешь структуру, границы, интерфейсы и принятые решения, **не** реализуя их. Реализацией займутся другие агенты (implement/change).
|
|
20
|
+
|
|
21
|
+
**Важно:** Используй формат Mermaid для всех диаграмм архитектуры, потоков данных и зависимостей (flowchart, sequenceDiagram, graph).
|
|
22
|
+
|
|
23
|
+
### Глобальные запреты (Safety Guards)
|
|
24
|
+
|
|
25
|
+
Останови выполнение и не вноси изменения, если:
|
|
26
|
+
1. Запрос требует написания кода или изменения существующей реализации (остановись и предложи пользователю воспользоваться агентами: `implement` или `change`).
|
|
27
|
+
2. Запрос описывает небольшую фичу, которой достаточно `create` (задай уточняющий вопрос).
|
|
28
|
+
3. Пользователь просит задокументировать **существующий** код без изменений (остановись и предложи пользователю воспользоваться агентом: `reverse`).
|
|
29
|
+
4. Входные данные противоречивы или требуют внешних зависимостей, которые невозможно получить.
|
|
30
|
+
5. Названия архитектурного решения слишком размыто ("Система", "Улучшения") и не поддаётся конкретизации.
|
|
31
|
+
|
|
32
|
+
В случае остановки: объясни причину и предложи корректную команду.
|
|
33
|
+
|
|
34
|
+
## Топология и размещение файлов
|
|
35
|
+
|
|
36
|
+
Все архитектурные спецификации размещаются в `.agentica/architecture/` того скоупа, к которому они относятся:
|
|
37
|
+
- **Single-project:** `./.agentica/architecture/`
|
|
38
|
+
- **Monorepo (package):** `./packages/<name>/.agentica/architecture/`
|
|
39
|
+
|
|
40
|
+
**Формат имени файла:** `AR-XXXX - <Название направления>.md`
|
|
41
|
+
- `XXXX` — четырехзначный номер, определяется автоматически (следующий свободный).
|
|
42
|
+
- `<Название направления>` — краткое и понятное название (3-7 слов).
|
|
43
|
+
|
|
44
|
+
Примеры:
|
|
45
|
+
- `AR-0001 - Система плагинов.md`
|
|
46
|
+
- `AR-0012 - Событийная шина и middleware.md`
|
|
47
|
+
- `AR-0023 - Архитектура кэширующего слоя.md`
|
|
48
|
+
|
|
49
|
+
## Фаза 1: Валидация контекста
|
|
50
|
+
|
|
51
|
+
### Шаг 1.1: Определение скоупа
|
|
52
|
+
1. Прочитай `structure.md` из корня проекта.
|
|
53
|
+
2. Определи тип проекта: Single-project или Monorepo.
|
|
54
|
+
3. Если Monorepo — определи целевой пакет:
|
|
55
|
+
- Если пользователь явно указал пакет → используй его.
|
|
56
|
+
- Если не указал, но контекст очевиден (открыт файл пакета) → используй его.
|
|
57
|
+
- Если неоднозначно → задай вопрос через интсрумент `ask_questions` (список доступных пакетов).
|
|
58
|
+
|
|
59
|
+
### Шаг 1.2: Чтение контекста
|
|
60
|
+
Прочитай следующие файлы из целевого скоупа:
|
|
61
|
+
1. `product.md` — продуктовый контекст.
|
|
62
|
+
2. `structure.md` — структура проекта/пакета.
|
|
63
|
+
3. `tech.md` — технический стек и стандарты.
|
|
64
|
+
4. Список существующих файлов в `architecture/` (для определения номера AR-XXXX).
|
|
65
|
+
|
|
66
|
+
### Шаг 1.3: Проверка дублирования
|
|
67
|
+
Просмотри существующие архитектурные спецификации:
|
|
68
|
+
- Если тема уже описана → уточни у пользователя, нужно ли создать новую или дополнить существующую.
|
|
69
|
+
- Если нет дублирования → продолжай.
|
|
70
|
+
|
|
71
|
+
## Фаза 2: Интервью и сбор контекста
|
|
72
|
+
|
|
73
|
+
### Цель интервью
|
|
74
|
+
Собрать **полный архитектурный контекст**, чтобы создать спецификацию без пробелов и противоречий.
|
|
75
|
+
|
|
76
|
+
Для задавания вопросов используй интсрумент `ask_questions` с полем ввода и вариантами ответа. Не перегружай пользователя, задавай по 2-4 вопроса за раз.
|
|
77
|
+
|
|
78
|
+
### Когда запускать интервью
|
|
79
|
+
|
|
80
|
+
**Всегда спрашивай**, если:
|
|
81
|
+
1. Входные данные содержат **менее 3 предложений** описания.
|
|
82
|
+
2. Не указаны ключевые сущности, границы системы или взаимодействия.
|
|
83
|
+
3. Есть технические неоднозначности (выбор паттерна, библиотеки, структуры данных).
|
|
84
|
+
4. Потенциальные конфликты с существующей архитектурой.
|
|
85
|
+
|
|
86
|
+
**Можно пропустить**, если:
|
|
87
|
+
1. Пользователь дал детальное описание (5+ абзацев) с конкретными интерфейсами, сценариями и ограничениями.
|
|
88
|
+
2. Контекст полностью покрывает 5 измерений (см. ниже).
|
|
89
|
+
|
|
90
|
+
### Структура интервью (5 измерений)
|
|
91
|
+
|
|
92
|
+
#### Измерение 1: Границы и скоуп
|
|
93
|
+
- Какие компоненты/модули входят в эту архитектуру?
|
|
94
|
+
- Что **явно** находится за границами (не часть этой архитектуры)?
|
|
95
|
+
- С какими существующими системами будет взаимодействие?
|
|
96
|
+
|
|
97
|
+
#### Измерение 2: Сущности и данные
|
|
98
|
+
- Какие основные сущности (Entity, DTO, Model) будут использоваться?
|
|
99
|
+
- Какие данные хранятся, передаются, трансформируются?
|
|
100
|
+
- Есть ли требования к формату данных (JSON, binary, stream)?
|
|
101
|
+
|
|
102
|
+
#### Измерение 3: Поведение и сценарии
|
|
103
|
+
- Какие основные сценарии использования (Use Cases)?
|
|
104
|
+
- Какие события/триггеры запускают процессы?
|
|
105
|
+
- Есть ли критичные по времени операции (latency, throughput)?
|
|
106
|
+
|
|
107
|
+
#### Измерение 4: Технические ограничения
|
|
108
|
+
- Есть ли ограничения по производительности, памяти, сети?
|
|
109
|
+
- Нужна ли масштабируемость (горизонтальная/вертикальная)?
|
|
110
|
+
- Есть ли требования к отказоустойчивости, retry-логике, graceful degradation?
|
|
111
|
+
|
|
112
|
+
#### Измерение 5: Интеграция и зависимости
|
|
113
|
+
- Какие библиотеки планируются к использованию (или уже используются)?
|
|
114
|
+
- Есть ли зависимости от внешних API, баз данных, очередей?
|
|
115
|
+
- Какие существующие модули проекта будут задействованы?
|
|
116
|
+
|
|
117
|
+
### Критерий достаточности контекста
|
|
118
|
+
|
|
119
|
+
Считай контекст **достаточным**, если ты можешь ответить на следующие вопросы:
|
|
120
|
+
1. Какие интерфейсы (функции, классы, API) нужно создать?
|
|
121
|
+
2. Как данные перемещаются между компонентами (Flow)?
|
|
122
|
+
3. Какие паттерны проектирования подходят для решения?
|
|
123
|
+
4. Какие риски и узкие места существуют?
|
|
124
|
+
5. Как архитектура интегрируется с существующим кодом?
|
|
125
|
+
|
|
126
|
+
Если не можешь ответить хотя бы на 3 из 5 — **продолжай интервью**.
|
|
127
|
+
|
|
128
|
+
## Фаза 3: Анализ и выявление рисков
|
|
129
|
+
|
|
130
|
+
### Шаг 3.1: Поиск конфликтов с tech.md
|
|
131
|
+
Сверь архитектурное решение с требованиями из `tech.md`:
|
|
132
|
+
- Соответствует ли выбор библиотек стандартам проекта?
|
|
133
|
+
- Не противоречит ли подход "общим практикам" (например, "избегать глобального состояния")?
|
|
134
|
+
- Нужны ли исключения из правил (документируй их)?
|
|
135
|
+
|
|
136
|
+
### Шаг 3.2: Выявление узких мест (Choke Points)
|
|
137
|
+
Найди и задокументируй потенциальные проблемы:
|
|
138
|
+
1. **Performance bottlenecks:** Синхронные операции, O(n²) алгоритмы, блокировки.
|
|
139
|
+
2. **Scalability issues:** Одиночная точка отказа, отсутствие кэширования.
|
|
140
|
+
3. **Complexity traps:** Переусложнение архитектуры без необходимости.
|
|
141
|
+
4. **Integration risks:** Несовместимость с существующими модулями.
|
|
142
|
+
|
|
143
|
+
Для каждой проблемы предложи **компромисс** (Trade-off):
|
|
144
|
+
- Что мы теряем?
|
|
145
|
+
- Что получаем взамен?
|
|
146
|
+
- Когда стоит пересмотреть решение?
|
|
147
|
+
|
|
148
|
+
## Фаза 4: Создание архитектурного документа
|
|
149
|
+
|
|
150
|
+
### Структура документа
|
|
151
|
+
|
|
152
|
+
Адаптируй разделы под специфику задачи. Обязательные разделы: 1, 2, 3. Остальные — по необходимости.
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
# AR-XXXX - <Название направления>
|
|
156
|
+
|
|
157
|
+
## 1. Аксиома (Что и зачем)
|
|
158
|
+
|
|
159
|
+
**Краткое описание:** 2-3 предложения о сути архитектурного решения.
|
|
160
|
+
|
|
161
|
+
**Цель:** Какую проблему решаем? Что будет возможно после реализации?
|
|
162
|
+
|
|
163
|
+
**Не-цель:** Что явно **не** входит в рамки этой архитектуры?
|
|
164
|
+
|
|
165
|
+
## 2. Контекст и мотивация
|
|
166
|
+
|
|
167
|
+
### Почему это нужно?
|
|
168
|
+
Список рассуждений (3-5 пунктов), объясняющих выбор подхода:
|
|
169
|
+
- Какие альтернативы рассматривались?
|
|
170
|
+
- Почему они не подходят?
|
|
171
|
+
- Какие допущения мы делаем?
|
|
172
|
+
|
|
173
|
+
### Ограничения и требования
|
|
174
|
+
- Производительность: [latency, throughput, memory]
|
|
175
|
+
- Масштабируемость: [статичная / динамическая]
|
|
176
|
+
- Отказоустойчивость: [retry, fallback, graceful degradation]
|
|
177
|
+
|
|
178
|
+
## 3. Основные сущности и интерфейсы
|
|
179
|
+
|
|
180
|
+
Список ключевых элементов с описанием:
|
|
181
|
+
|
|
182
|
+
### 3.1 Сущности (Entity/DTO/Model)
|
|
183
|
+
- **`EntityName`**: Описание, поля, формат.
|
|
184
|
+
|
|
185
|
+
### 3.2 Интерфейсы (API/Class/Module)
|
|
186
|
+
- **`InterfaceName`**: Назначение, методы, контракты.
|
|
187
|
+
|
|
188
|
+
### 3.3 Потоки данных (Data Flow)
|
|
189
|
+
|
|
190
|
+
```mermaid
|
|
191
|
+
graph LR
|
|
192
|
+
A[Client] --> B[Validator]
|
|
193
|
+
B --> C[Service]
|
|
194
|
+
C --> D[Repository]
|
|
195
|
+
D --> E[DB]
|
|
196
|
+
B -.error.-> F[ErrorHandler]
|
|
197
|
+
C -.event.-> G[EventBus]
|
|
198
|
+
G --> H[Listeners]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## 4. Библиотеки и существующие механизмы
|
|
202
|
+
|
|
203
|
+
Какие библиотеки планируются к использованию:
|
|
204
|
+
- **`library-name`**: Для чего используется, альтернативы, риски.
|
|
205
|
+
|
|
206
|
+
Какие существующие модули проекта задействованы:
|
|
207
|
+
- **`module-name`**: Как интегрируется, какие методы используются.
|
|
208
|
+
|
|
209
|
+
## 5. Паттерны проектирования
|
|
210
|
+
|
|
211
|
+
Укажи применяемые паттерны и обоснуй их выбор:
|
|
212
|
+
- **Factory Pattern**: Для создания плагинов с разными конфигурациями.
|
|
213
|
+
- **Observer Pattern**: Для подписки на события шины.
|
|
214
|
+
|
|
215
|
+
## 6. Технические советы по реализации
|
|
216
|
+
|
|
217
|
+
Конкретные рекомендации для разработчиков:
|
|
218
|
+
- **Где упростить:** "Не добавляй абстракции для X, пока не будет 3+ реализаций."
|
|
219
|
+
- **Где усложнить:** "Обязательно используй Dependency Injection для Y, иначе невозможно тестировать."
|
|
220
|
+
- **Интеграция:** "При подключении библиотеки Z оборачивай её в adapter, чтобы изолировать от бизнес-логики."
|
|
221
|
+
- **Testing:** "Обязательно покрой unit-тестами интерфейсы A, B. Для C достаточно интеграционных."
|
|
222
|
+
|
|
223
|
+
## 7. Риски и узкие места
|
|
224
|
+
|
|
225
|
+
Таблица потенциальных проблем:
|
|
226
|
+
|
|
227
|
+
| Риск | Вероятность | Влияние | Митигация |
|
|
228
|
+
|:-----|:------------|:--------|:----------|
|
|
229
|
+
| Переполнение памяти при большом потоке | Средняя | Высокое | Добавить backpressure и rate limiting |
|
|
230
|
+
| Блокировка на синхронной операции X | Высокая | Среднее | Вынести в async queue |
|
|
231
|
+
|
|
232
|
+
## 8. Компромиссы (Trade-offs)
|
|
233
|
+
|
|
234
|
+
Явно задокументируй принятые решения и их последствия:
|
|
235
|
+
- **Решение:** Используем in-memory кэш вместо Redis.
|
|
236
|
+
- **Плюсы:** Проще, быстрее, меньше зависимостей.
|
|
237
|
+
- **Минусы:** Не масштабируется горизонтально.
|
|
238
|
+
- **Когда пересмотреть:** При переходе на multi-instance deployment.
|
|
239
|
+
|
|
240
|
+
## 9. План миграции (если применимо)
|
|
241
|
+
|
|
242
|
+
Если архитектура заменяет существующую систему:
|
|
243
|
+
1. Этап 1: Создать новые интерфейсы параллельно со старыми.
|
|
244
|
+
2. Этап 2: Мигрировать клиентов по одному.
|
|
245
|
+
3. Этап 3: Удалить старую систему после 100% миграции.
|
|
246
|
+
|
|
247
|
+
## 10. Критерии готовности (Definition of Done)
|
|
248
|
+
|
|
249
|
+
Как понять, что архитектура реализована правильно:
|
|
250
|
+
- [ ] Все интерфейсы из раздела 3 реализованы.
|
|
251
|
+
- [ ] Покрытие тестами > 80% для критичных модулей.
|
|
252
|
+
- [ ] Нагрузочные тесты показывают latency < 100ms.
|
|
253
|
+
- [ ] Документация обновлена.
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Требования к качеству содержания
|
|
257
|
+
|
|
258
|
+
1. **Конкретика:** Избегай "будет быстро", пиши "latency < 100ms при 1000 rps".
|
|
259
|
+
2. **Минимализм:** Если раздел не добавляет ценности — не включай его.
|
|
260
|
+
3. **Диаграммы:** Используй простые ASCII-схемы для потоков данных.
|
|
261
|
+
4. **Примеры:** Добавляй code snippets для интерфейсов (псевдокод или TypeScript/Python).
|
|
262
|
+
|
|
263
|
+
## Фаза 5: Финальная проверка
|
|
264
|
+
|
|
265
|
+
Перед сохранением файла проверь:
|
|
266
|
+
1. Номер AR-XXXX уникален (не пересекается с существующими).
|
|
267
|
+
2. Все разделы документа заполнены **конкретными данными**, нет заглушек ("TODO", "Описать позже").
|
|
268
|
+
3. Есть хотя бы один раздел с рисками/компромиссами.
|
|
269
|
+
4. Технические советы содержат **конкретные рекомендации**, а не общие слова.
|
|
270
|
+
5. Документ читается как **руководство для принятия решений**, а не как "заметки на салфетке".
|
|
271
|
+
|
|
272
|
+
Если хотя бы одна проверка провалена — **дополни документ** перед сохранением.
|
|
273
|
+
|
|
274
|
+
## Фаза 6: Отчёт пользователю
|
|
275
|
+
|
|
276
|
+
Выдай короткое резюме:
|
|
277
|
+
1. Созданный файл: `AR-XXXX - <Название>.md`.
|
|
278
|
+
2. Скоуп: [Single-project / Package name].
|
|
279
|
+
3. Основные компоненты: [краткий список из 2-3 сущностей/интерфейсов].
|
|
280
|
+
4. Главные риски: [1-2 ключевых момента, на которые стоит обратить внимание].
|
|
281
|
+
5. Следующий шаг: [предложи `/agentica.tasks --id AR-XXXX` для декомпозиции на задачи].
|
|
282
|
+
|
|
283
|
+
## Дополнительные правила
|
|
284
|
+
|
|
285
|
+
### Работа с неопределённостью
|
|
286
|
+
Если пользователь говорит "сделай как лучше":
|
|
287
|
+
1. Предложи **2-3 варианта** архитектурного решения.
|
|
288
|
+
2. Для каждого укажи Trade-offs.
|
|
289
|
+
3. Рекомендуй один вариант с обоснованием.
|
|
290
|
+
4. Дай пользователю выбрать через интсрумент `ask_questions`.
|
|
291
|
+
|
|
292
|
+
### Работа с техническим долгом
|
|
293
|
+
Если существующий код противоречит новой архитектуре:
|
|
294
|
+
1. Задокументируй конфликт в разделе "Риски".
|
|
295
|
+
2. Предложи план рефакторинга (или отдельную спеку `AR-YYYY`).
|
|
296
|
+
3. Укажи, можно ли реализовать новую архитектуру **без** изменения старого кода.
|
|
297
|
+
|
|
298
|
+
### Терминология и стиль
|
|
299
|
+
- Используй термины из `tech.md` проекта (если они есть).
|
|
300
|
+
- Пиши кратко, но **точно**. Одно предложение лучше абзаца воды.
|
|
301
|
+
- Код-примеры должны быть **рабочими** или близкими к реальности, а не "псевдо-псевдокодом".
|
|
302
|
+
|