@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,35 @@
|
|
|
1
|
+
# Структура проекта
|
|
2
|
+
|
|
3
|
+
Проект организован следующим образом:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
.
|
|
7
|
+
├── .agentica/ # Документы и артефакты Agentica для этого проекта
|
|
8
|
+
│ ├── templates/ # Шаблоны для фич/изменений/архитектурных решений
|
|
9
|
+
│ ├── features/ # Описания фич и контрактов API
|
|
10
|
+
│ ├── changes/ # Изменения и миграции
|
|
11
|
+
│ ├── architecture/ # Архитектурные решения (ADR)
|
|
12
|
+
│ ├── product.md # Описание сервиса с продуктовой точки зрения
|
|
13
|
+
│ ├── structure.md # Этот файл: структура репозитория
|
|
14
|
+
│ └── tech.md # Технический стек, принципы и инструменты
|
|
15
|
+
├── .vscode/ # Настройки VS Code
|
|
16
|
+
├── src/ # Серверный код (routes, services, db)
|
|
17
|
+
│ ├── index.ts # Композиция сервера и запуск
|
|
18
|
+
│ ├── routes/ # HTTP роуты/handlers
|
|
19
|
+
│ ├── services/ # Бизнес-логика (use-cases)
|
|
20
|
+
│ ├── db/ # Доступ к БД, схемы, репозитории
|
|
21
|
+
│ └── ... # Middleware, utils, types
|
|
22
|
+
├── tests/ # Тесты (unit/integration)
|
|
23
|
+
├── scripts/ # Скрипты (миграции, генерация, деплой)
|
|
24
|
+
├── README.md # Документация сервиса
|
|
25
|
+
├── biome.json # Линт/форматирование Biome
|
|
26
|
+
├── tsconfig.json # Конфигурация TypeScript
|
|
27
|
+
└── package.json # Зависимости и скрипты
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Правила структуры
|
|
31
|
+
|
|
32
|
+
- `routes/` тонкие: валидация + вызов `services/`.
|
|
33
|
+
- `services/` не знает о транспорте (HTTP) и UI.
|
|
34
|
+
- Взаимодействие с БД изолировано в `db/`.
|
|
35
|
+
- Архитектурные решения фиксируются в `.agentica/architecture/`.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Technology Stack
|
|
2
|
+
|
|
3
|
+
В этом разделе описывается технологический стек, используемый в этом проекте, и принципы по подбору библиотек и инструментов.
|
|
4
|
+
|
|
5
|
+
## Базовые технологии
|
|
6
|
+
- Node.js 20+
|
|
7
|
+
- Bun — рантайм и пакетный менеджер
|
|
8
|
+
- Biome — линтинг и форматирование кода
|
|
9
|
+
- TypeScript — основной язык
|
|
10
|
+
- Bun test — тестирование
|
|
11
|
+
|
|
12
|
+
## Серверные приложения
|
|
13
|
+
- ElysiaJS — HTTP сервер/роутинг
|
|
14
|
+
- Zod — валидация входных данных
|
|
15
|
+
- Drizzle — доступ к БД и миграции
|
|
16
|
+
- Логи и метрики (опционально): структурированные логи, трассировка
|
|
17
|
+
|
|
18
|
+
## Non-goals
|
|
19
|
+
- Не смешиваем transport (HTTP) и доменную логику в одном месте.
|
|
20
|
+
- Не делаем "магические" middleware без явной схемы ошибок/логирования.
|
|
21
|
+
|
|
22
|
+
## Качество и проверки
|
|
23
|
+
- Format: `bun format`
|
|
24
|
+
- Lint: `bun lint`
|
|
25
|
+
- Typecheck: `bun typecheck`
|
|
26
|
+
- Tests: `bun test`
|
|
27
|
+
|
|
28
|
+
## Зависимости
|
|
29
|
+
- Валидация и схемы должны быть едиными (не смешивать несколько validators).
|
|
30
|
+
- Библиотеки для БД/ORM выбираем так, чтобы миграции были воспроизводимы.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Project Name
|
|
2
|
+
|
|
3
|
+
TypeScript SPA (web) application aimed at ...
|
|
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,36 @@
|
|
|
1
|
+
# Структура проекта
|
|
2
|
+
|
|
3
|
+
Проект организован следующим образом:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
.
|
|
7
|
+
├── .agentica/ # Документы и артефакты Agentica для этого проекта
|
|
8
|
+
│ ├── templates/ # Шаблоны для фич/изменений/архитектурных решений
|
|
9
|
+
│ ├── features/ # Описания UI/UX фич и сценариев
|
|
10
|
+
│ ├── changes/ # Изменения, миграции, заметки по релизам
|
|
11
|
+
│ ├── architecture/ # Архитектурные решения (ADR)
|
|
12
|
+
│ ├── product.md # Описание SPA с продуктовой точки зрения
|
|
13
|
+
│ ├── structure.md # Этот файл: структура репозитория
|
|
14
|
+
│ └── tech.md # Технический стек, принципы и инструменты
|
|
15
|
+
├── .vscode/ # Настройки VS Code
|
|
16
|
+
├── public/ # Статические файлы
|
|
17
|
+
├── src/ # Исходный код SPA
|
|
18
|
+
│ ├── main.tsx # Точка входа (bootstrap UI)
|
|
19
|
+
│ ├── app.tsx # Корневой компонент приложения
|
|
20
|
+
│ ├── components/ # UI компоненты
|
|
21
|
+
│ ├── routes/ # Страницы/роуты (если используются)
|
|
22
|
+
│ └── ... # Stores, utils, types
|
|
23
|
+
├── index.html # HTML entrypoint
|
|
24
|
+
├── vite.config.ts # Конфигурация Vite
|
|
25
|
+
├── tests/ # Тесты (unit/e2e), если есть
|
|
26
|
+
├── README.md # Документация по запуску и разработке
|
|
27
|
+
├── biome.json # Линт/форматирование Biome
|
|
28
|
+
├── tsconfig.json # Конфигурация TypeScript
|
|
29
|
+
└── package.json # Зависимости и скрипты
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Правила структуры
|
|
33
|
+
|
|
34
|
+
- `src/main.tsx` — единственная точка bootstrap; не разносить инициализацию по компонентам.
|
|
35
|
+
- UI-компоненты держать в `components/`, страницы/экраны — в `routes/`.
|
|
36
|
+
- Архитектурные решения фиксируются в `.agentica/architecture/`.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Technology Stack
|
|
2
|
+
|
|
3
|
+
В этом разделе описывается технологический стек, используемый в этом проекте, и принципы по подбору библиотек и инструментов.
|
|
4
|
+
|
|
5
|
+
## Базовые технологии
|
|
6
|
+
- Node.js 20+
|
|
7
|
+
- Bun — рантайм и пакетный менеджер
|
|
8
|
+
- Biome — линтинг и форматирование кода
|
|
9
|
+
- TypeScript — основной язык
|
|
10
|
+
- Tailwind CSS 4 — стилизация
|
|
11
|
+
|
|
12
|
+
## SPA
|
|
13
|
+
- SolidJS — UI
|
|
14
|
+
- Solid Primitives — утилиты/хуки
|
|
15
|
+
- Vite — сборка и dev-сервер
|
|
16
|
+
|
|
17
|
+
## Non-goals
|
|
18
|
+
- Не строим дизайн-систему с нуля, если есть готовые примитивы.
|
|
19
|
+
- Не хардкодим окружения/URL внутри компонентов.
|
|
20
|
+
|
|
21
|
+
## Качество и проверки
|
|
22
|
+
- Format: `bun format`
|
|
23
|
+
- Lint: `bun lint`
|
|
24
|
+
- Typecheck: `bun typecheck`
|
|
25
|
+
- Tests: `bun test`
|
|
26
|
+
|
|
27
|
+
## Зависимости
|
|
28
|
+
- UI-утилиты — сначала искать в `solid-primitives`, потом добавлять своё.
|
|
29
|
+
- Любая зависимость должна быть совместима с билдом Vite и ESM.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# AR-0000 - Архитектура фичи или модуля XXX
|
|
2
|
+
|
|
3
|
+
Этот документ — «референс идеи» и архитектурных решений на уровне концепций и псевдокода.
|
|
4
|
+
Он не обязан быть привязан к конкретной структуре кода, но должен фиксировать важные предпосылки, границы и механизмы.
|
|
5
|
+
|
|
6
|
+
## TL;DR (заполняет автор)
|
|
7
|
+
|
|
8
|
+
**Что строим:** ...
|
|
9
|
+
|
|
10
|
+
**Зачем:** ...
|
|
11
|
+
|
|
12
|
+
**Ключевая идея в 1–2 фразы:** ...
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## Контекст и границы
|
|
16
|
+
|
|
17
|
+
**Контекст:**
|
|
18
|
+
- В какой системе/продукте живёт модуль/фича: ...
|
|
19
|
+
|
|
20
|
+
**Границы ответственности:**
|
|
21
|
+
- Что делает: ...
|
|
22
|
+
- Что не делает: ...
|
|
23
|
+
|
|
24
|
+
**Внешние зависимости/интеграции (если есть):**
|
|
25
|
+
- ...
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Цели, качества, принципы
|
|
29
|
+
|
|
30
|
+
**Цели (3–7):**
|
|
31
|
+
- ...
|
|
32
|
+
|
|
33
|
+
**Качества (качество системы / quality attributes):**
|
|
34
|
+
- Надёжность: ...
|
|
35
|
+
- Производительность: ...
|
|
36
|
+
- Безопасность: ...
|
|
37
|
+
- Поддерживаемость: ...
|
|
38
|
+
- Наблюдаемость: ...
|
|
39
|
+
|
|
40
|
+
**Принципы (design principles):**
|
|
41
|
+
- ...
|
|
42
|
+
- ...
|
|
43
|
+
- ...
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## Обзор решения
|
|
47
|
+
|
|
48
|
+
Короткое описание архитектуры, основных компонентов и того, как они взаимодействуют.
|
|
49
|
+
|
|
50
|
+
### Диаграмма (опционально)
|
|
51
|
+
|
|
52
|
+
```mermaid
|
|
53
|
+
flowchart LR
|
|
54
|
+
A[Client / Caller] --> B[Module XXX]
|
|
55
|
+
B --> C[(Storage / External System)]
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Компоненты и механизмы архитектуры
|
|
59
|
+
|
|
60
|
+
### Компонент 1: ...
|
|
61
|
+
|
|
62
|
+
Описание компонента 1, его роль в архитектуре и взаимодействие с другими компонентами.
|
|
63
|
+
|
|
64
|
+
**Ответственность:** ...
|
|
65
|
+
|
|
66
|
+
**Входы/выходы (концептуально):**
|
|
67
|
+
- Вход: ...
|
|
68
|
+
- Выход: ...
|
|
69
|
+
|
|
70
|
+
**Инварианты/гарантии:**
|
|
71
|
+
- ...
|
|
72
|
+
|
|
73
|
+
### Компонент 2: ...
|
|
74
|
+
|
|
75
|
+
...
|
|
76
|
+
|
|
77
|
+
### Подход / паттерн: ...
|
|
78
|
+
|
|
79
|
+
Описание логики реализуемого бизнес-процесса и того как он перекладывается на архитектуру и код. Если есть, то описание паттерна проектирования, который используется для реализации этого процесса.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## Потоки данных и сценарии (на уровне идей)
|
|
83
|
+
|
|
84
|
+
### Сценарий 1 (happy path)
|
|
85
|
+
|
|
86
|
+
1. ...
|
|
87
|
+
2. ...
|
|
88
|
+
3. ...
|
|
89
|
+
|
|
90
|
+
### Сценарий 2 (ошибки / деградация)
|
|
91
|
+
|
|
92
|
+
1. ...
|
|
93
|
+
2. ...
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## Псевдокод (только значимые детали)
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
function main(input):
|
|
100
|
+
validate(input)
|
|
101
|
+
state = load_state(...)
|
|
102
|
+
result = core_algorithm(state, input)
|
|
103
|
+
persist(result)
|
|
104
|
+
return result
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## Компромиссы, альтернативы, риски
|
|
109
|
+
|
|
110
|
+
**Компромиссы:**
|
|
111
|
+
- ...
|
|
112
|
+
|
|
113
|
+
**Альтернативы (и почему не выбраны):**
|
|
114
|
+
- ...
|
|
115
|
+
|
|
116
|
+
**Риски:**
|
|
117
|
+
- ...
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
## Открытые вопросы
|
|
121
|
+
|
|
122
|
+
- ...
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
## Ресурсы и ссылки
|
|
126
|
+
|
|
127
|
+
> Для ссылки на ресурс используется синтаксис: [^1], [^2], [^3], ...
|
|
128
|
+
|
|
129
|
+
- [^1]: ... (ресурс 1)
|
|
130
|
+
- [^2]: ... (ресурс 2)
|
|
131
|
+
- [^3]: ... (ресурс 3)
|
|
132
|
+
|
|
133
|
+
### Связанные документы (опционально)
|
|
134
|
+
|
|
135
|
+
- Feature spec: FT-....
|
|
136
|
+
- Change spec: CH-....
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CH-0000 - Изменение в фиче или модуле XXX
|
|
2
|
+
|
|
3
|
+
В виду того что ... (краткое описание причины изменения и его контекста), необходимо внести следующие изменения в фичу или модуль XXX:
|
|
4
|
+
|
|
5
|
+
- ... (краткое описание изменения 1)
|
|
6
|
+
- ... (краткое описание изменения 2)
|
|
7
|
+
- ... (краткое описание изменения 3)
|
|
8
|
+
|
|
9
|
+
При этом важно учитывать следующие аспекты и ограничения:
|
|
10
|
+
|
|
11
|
+
- ... (аспект или ограничение 1)
|
|
12
|
+
- ... (аспект или ограничение 2)
|
|
13
|
+
|
|
14
|
+
## Текущее поведение
|
|
15
|
+
|
|
16
|
+
Описание текущего поведения фичи или модуля XXX, которое необходимо изменить. Это может включать в себя описание функционала, который не соответствует требованиям, или проблем, которые возникают при использовании текущей реализации.
|
|
17
|
+
|
|
18
|
+
## Ожидаемое поведение
|
|
19
|
+
|
|
20
|
+
Описание ожидаемого поведения фичи или модуля XXX после внесения изменений. Лучше всего описать это в виде нескольких предложений на естественном языке, и приложить Golden-Snippet, который демонстрирует правильное поведение.
|
|
21
|
+
|
|
22
|
+
## Необходимый контекст и важные файлы проекта
|
|
23
|
+
|
|
24
|
+
- В итнерфейсе IXXX необходимо ... (описание изменений в интерфейсе, если это применимо)
|
|
25
|
+
- В реализации XXX необходимо ... (описание изменений в реализации, если это применимо)
|
|
26
|
+
- Тесты для XXX необходимо ... (описание изменений в тестах, если это применимо)
|
|
27
|
+
|
|
28
|
+
## Задачи
|
|
29
|
+
|
|
30
|
+
- [ ] TSK-0001: ... (описание задачи 1)
|
|
31
|
+
- [ ] TSK-0002: ... (описание задачи 2)
|
|
32
|
+
- [ ] TSK-0003: ... (описание задачи 3)
|
|
33
|
+
- [ ] ...
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# FT-0000 - Продуктовое описание - Название фичи или модуля XXX
|
|
2
|
+
|
|
3
|
+
Этот документ нужен, чтобы разработчик быстро понял «общую картину» фичи/модуля: зачем это делается, для кого, где границы и как выглядит успех.
|
|
4
|
+
|
|
5
|
+
Верхнюю часть заполняет пользователь (1–2 экрана текста). Ниже агент детализирует в User Stories, требования и тест-кейсы.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Краткое описание (заполняет пользователь)
|
|
9
|
+
|
|
10
|
+
**Что строим (1–3 предложения):**
|
|
11
|
+
- ...
|
|
12
|
+
|
|
13
|
+
**Почему сейчас / проблема:**
|
|
14
|
+
- ...
|
|
15
|
+
|
|
16
|
+
**Ценность:**
|
|
17
|
+
- Для пользователя: ...
|
|
18
|
+
- Для бизнеса: ...
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Цели и границы (заполняет пользователь)
|
|
22
|
+
|
|
23
|
+
**Цели (3–7 буллетов):**
|
|
24
|
+
- ...
|
|
25
|
+
|
|
26
|
+
**Не цели (что точно не делаем):**
|
|
27
|
+
- ...
|
|
28
|
+
|
|
29
|
+
**Входит в объём (scope):**
|
|
30
|
+
- ...
|
|
31
|
+
|
|
32
|
+
**Не входит в объём (out of scope):**
|
|
33
|
+
- ...
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## Пользователи и сценарий (заполняет пользователь)
|
|
37
|
+
|
|
38
|
+
**Кто пользуется (роли/персоны):**
|
|
39
|
+
- Основной пользователь: ...
|
|
40
|
+
- Вторичный пользователь: ...
|
|
41
|
+
|
|
42
|
+
**Ключевой пользовательский сценарий (happy path, 5–10 шагов):**
|
|
43
|
+
1. ...
|
|
44
|
+
2. ...
|
|
45
|
+
3. ...
|
|
46
|
+
|
|
47
|
+
**Краевые случаи (top-5):**
|
|
48
|
+
- ...
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
## Ограничения и зависимости (заполняет пользователь)
|
|
52
|
+
|
|
53
|
+
**Ограничения:**
|
|
54
|
+
- Продуктовые/UX: ...
|
|
55
|
+
- Технические/платформенные: ...
|
|
56
|
+
- Безопасность/комплаенс (если актуально): ...
|
|
57
|
+
|
|
58
|
+
**Зависимости и интеграции (если есть):**
|
|
59
|
+
- Системы/модули: ...
|
|
60
|
+
- Внешние сервисы: ...
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Критерии успеха (заполняет пользователь)
|
|
64
|
+
|
|
65
|
+
**Как поймём, что фича успешна (измеримо, если возможно):**
|
|
66
|
+
- ...
|
|
67
|
+
|
|
68
|
+
**Критерии готовности (Definition of Done на уровне фичи):**
|
|
69
|
+
- ...
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## Риски и открытые вопросы (заполняет пользователь)
|
|
73
|
+
|
|
74
|
+
**Риски:**
|
|
75
|
+
- ...
|
|
76
|
+
|
|
77
|
+
**Открытые вопросы:**
|
|
78
|
+
- ...
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Детализация (заполняет агент)
|
|
84
|
+
|
|
85
|
+
Задача этой секции — разложить верхнеуровневое описание на User Stories, функциональные требования, тест-кейсы и критерии приёмки.
|
|
86
|
+
|
|
87
|
+
## User Stories
|
|
88
|
+
|
|
89
|
+
### US-0001 - Как ... (роль пользователя), я хочу ... (желание), чтобы ... (ценность).
|
|
90
|
+
|
|
91
|
+
Описание первой пользовательской истории, которая описывает потребности и ожидания пользователей от фичи или модуля XXX.
|
|
92
|
+
|
|
93
|
+
#### Функциональные требования для US-0001
|
|
94
|
+
|
|
95
|
+
- <список функциональных требований, которые должны быть реализованы для удовлетворения потребностей, описанных в US-0001>
|
|
96
|
+
- FR-0001: ... (описание функционального требования 1)
|
|
97
|
+
- FR-0002: ... (описание функционального требования 2)
|
|
98
|
+
|
|
99
|
+
#### Тест-кейсы для US-0001
|
|
100
|
+
|
|
101
|
+
**Integration - тесты**
|
|
102
|
+
- <верхнеуровневый список тестов, которые проверяют взаимодействие этой фичи или модуля с другими компонентами системы>
|
|
103
|
+
- INT-0001: ... (описание тест-кейса 1)
|
|
104
|
+
- INT-0002: ... (описание тест-кейса 2)
|
|
105
|
+
|
|
106
|
+
**End-to-end - тесты**
|
|
107
|
+
- <верхнеуровневый список тестов, которые проверяют полный пользовательский сценарий с использованием этой фичи или модуля>
|
|
108
|
+
- E2E-0001: ... (описание тест-кейса 1)
|
|
109
|
+
- E2E-0002: ... (описание тест-кейса 2)
|
|
110
|
+
|
|
111
|
+
#### Критерии приемки для US-0001
|
|
112
|
+
|
|
113
|
+
1. **Дано** <входная потребность>, **Когда** <действие пользователя>, **Тогда** <ожидаемый результат>.
|
|
114
|
+
2. **Дано** <входная потребность>, **Когда** <действие пользователя>, **Тогда** <ожидаемый результат>.
|
|
115
|
+
3. ...
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
### US-0002 - Как ... (роль пользователя), я хочу ... (желание), чтобы ... (ценность).
|
|
119
|
+
|
|
120
|
+
...
|
|
121
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# FT-0000 - Список задач - Название фичи или модуля XXX
|
|
2
|
+
|
|
3
|
+
Документы:
|
|
4
|
+
- [Продуктовое описание - Название фичи или модуля XXX](../product.md)
|
|
5
|
+
- [Тех-задание фичи или модуля XXX](../tech.md)
|
|
6
|
+
- [Чек-лист для валидации фичи или модуля XXX](../validation.md)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Фазы реализации:
|
|
11
|
+
|
|
12
|
+
- Фаза 1: Инициализация и планирование
|
|
13
|
+
- Фаза 2: Разработка базового функционала и утилит
|
|
14
|
+
- Фаза 3: Реализация бизнес-логики и интеграция с другими компонентами
|
|
15
|
+
- Фаза 4: Тестирование, отладка и оптимизация
|
|
16
|
+
- Фаза 5: Валилдация реализации на соответствие качественным критериям и требованиям
|
|
17
|
+
- Фаза 6: Подготовка к релизу и выпуск фичи или модуля XXX
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Фаза 1: Инициализация и планирование
|
|
22
|
+
|
|
23
|
+
- [ ] TSK-1-001: Создать директории и файлы для фичи или модуля XXX
|
|
24
|
+
- [ ] TSK-1-002: Определить основные интерфейсы и контракты для фичи или модуля XXX
|
|
25
|
+
- [ ] ...
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# Фаза 2: Разработка базового функционала и утилит
|
|
29
|
+
|
|
30
|
+
- [ ] TSK-2-001: Реализовать базовые функции и утилиты для фичи или модуля XXX
|
|
31
|
+
- [ ] ...
|
|
32
|
+
|
|
33
|
+
# Фаза 3: Реализация бизнес-логики и интеграция с другими компонентами
|
|
34
|
+
|
|
35
|
+
...
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# Фаза N: ...
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# FT-0000 - Название фичи или модуля XXX
|
|
2
|
+
|
|
3
|
+
Этот документ фиксирует технический план и «интерфейс реализации» фичи/модуля: какие сущности, контракты, алгоритмы и ограничения должны быть воплощены в коде.
|
|
4
|
+
|
|
5
|
+
Верхнюю часть заполняет пользователь (технические предпочтения/ограничения/план). Ниже агент формирует исчерпывающую спецификацию контрактов и сигнатур под TypeScript.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Технический план (заполняет пользователь)
|
|
9
|
+
|
|
10
|
+
**Кратко (1–3 предложения):**
|
|
11
|
+
- ...
|
|
12
|
+
|
|
13
|
+
**Целевая среда и ограничения:**
|
|
14
|
+
- Runtime (Node/Bun/Browser): ...
|
|
15
|
+
- TypeScript target/module: ...
|
|
16
|
+
- Ограничения по совместимости/версии: ...
|
|
17
|
+
|
|
18
|
+
**Архитектурный набросок:**
|
|
19
|
+
- Куда встраиваемся (модуль/пакет/слой): ...
|
|
20
|
+
- Границы ответственности (что делает/не делает модуль): ...
|
|
21
|
+
- Основные зависимости/интеграции: ...
|
|
22
|
+
|
|
23
|
+
**Предпочитаемые подходы и библиотеки:**
|
|
24
|
+
- Валидация/схемы (например, zod): ...
|
|
25
|
+
- DI/IoC (если нужно): ...
|
|
26
|
+
- Логирование/трассировка: ...
|
|
27
|
+
- Хранилище/HTTP/CLI (если актуально): ...
|
|
28
|
+
|
|
29
|
+
**Организация кода (ожидаемая структура):**
|
|
30
|
+
- Папки/модули: ...
|
|
31
|
+
- Публичный API (какие экспорты должны быть доступны): ...
|
|
32
|
+
|
|
33
|
+
**Ключевые алгоритмы/процессы (списком):**
|
|
34
|
+
1. ...
|
|
35
|
+
2. ...
|
|
36
|
+
|
|
37
|
+
**Ошибки и контракты отказов:**
|
|
38
|
+
- Какие ошибки ожидаем (категории/коды): ...
|
|
39
|
+
- Что возвращаем/кидаем наружу (ошибка vs result): ...
|
|
40
|
+
|
|
41
|
+
**Нефункциональные требования:**
|
|
42
|
+
- Производительность/лимиты: ...
|
|
43
|
+
- Безопасность (валидация, доступы, секреты): ...
|
|
44
|
+
- Наблюдаемость (логи/метрики): ...
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Спецификация реализации (заполняет агент)
|
|
50
|
+
|
|
51
|
+
Эта секция — формальная спецификация для генерации/реализации кода. Она должна быть достаточно точной, чтобы реализация не требовала значимых изменений публичных контрактов.
|
|
52
|
+
|
|
53
|
+
### Термины и глоссарий (опционально)
|
|
54
|
+
|
|
55
|
+
- Term1: ...
|
|
56
|
+
|
|
57
|
+
### Публичное API модуля
|
|
58
|
+
|
|
59
|
+
- Экспортируемые функции/классы: ...
|
|
60
|
+
- События/хуки (если есть): ...
|
|
61
|
+
|
|
62
|
+
### Модели данных и схемы
|
|
63
|
+
|
|
64
|
+
- Входные структуры: ...
|
|
65
|
+
- Выходные структуры: ...
|
|
66
|
+
- Внутренние структуры: ...
|
|
67
|
+
|
|
68
|
+
### Основные интерфейсы и контракты
|
|
69
|
+
|
|
70
|
+
- `IInterfaceXXX`: описание интерфейса, который будет реализован фичей или модулем XXX.
|
|
71
|
+
- `ClassXXX`: описание класса, который реализует `IInterfaceXXX` и предоставляет публичный API.
|
|
72
|
+
|
|
73
|
+
### Логика и алгоритмы
|
|
74
|
+
|
|
75
|
+
Логика работы фичи или модуля XXX строится на основе ... (краткое описание основных алгоритмов, которые реализует фича или модуль XXX, и их взаимодействия между собой).
|
|
76
|
+
|
|
77
|
+
#### Бизнес-процесс 001
|
|
78
|
+
|
|
79
|
+
Описание бизнес-процесса 001, который реализует фича или модуль XXX.
|
|
80
|
+
Это может включать в себя описание входных данных, шагов обработки и ожидаемых результатов.
|
|
81
|
+
|
|
82
|
+
#### Алгоритм 001 для бизнес-процесса 001
|
|
83
|
+
|
|
84
|
+
Описание алгоритма 001, который используется для реализации бизнес-процесса 001.
|
|
85
|
+
Это может включать в себя описание основных шагов алгоритма, его сложности и оптимизаций.
|
|
86
|
+
|
|
87
|
+
...
|
|
88
|
+
|
|
89
|
+
### Интерфейсы, контракты и классы (формально)
|
|
90
|
+
|
|
91
|
+
### IInterfaceXXX
|
|
92
|
+
|
|
93
|
+
Описание интерфейса IInterfaceXXX, его методов, параметров и возвращаемых значений.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
|
|
97
|
+
import { z } from 'zod';
|
|
98
|
+
|
|
99
|
+
const schema = z.object({
|
|
100
|
+
...
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
export type IInterfaceXXX = z.infer<typeof schema>;
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### ClassXXX
|
|
108
|
+
|
|
109
|
+
Описание класса ClassXXX, его методов, параметров и возвращаемых значений.
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
|
|
113
|
+
import { z } from 'zod';
|
|
114
|
+
|
|
115
|
+
const schema = z.object({
|
|
116
|
+
...
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
export type IClassXXXInit = z.infer<typeof schema>;
|
|
120
|
+
|
|
121
|
+
export class ClassXXX implements IInterfaceXXX {
|
|
122
|
+
|
|
123
|
+
constructor(init: IClassXXXInit) {
|
|
124
|
+
...
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Описание метода Method1, его параметров и возвращаемого значения.
|
|
129
|
+
* @param x - описание параметра x
|
|
130
|
+
* @returns описание возвращаемого значения
|
|
131
|
+
*/
|
|
132
|
+
Method1(x: Type): ReturnType;
|
|
133
|
+
|
|
134
|
+
...
|
|
135
|
+
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 2.7 Ошибки
|
|
141
|
+
|
|
142
|
+
- Перечень доменных ошибок: ...
|
|
143
|
+
- Формат ошибок (name/code/cause): ...
|
|
144
|
+
- Что является retryable/terminal: ...
|
|
145
|
+
|
|
146
|
+
### 2.8 Конфигурация
|
|
147
|
+
|
|
148
|
+
- Какие env/config нужны: ...
|
|
149
|
+
- Дефолты и валидация конфигурации: ...
|
|
150
|
+
|
|
151
|
+
### 2.9 Тестовая стратегия (на уровне реализации)
|
|
152
|
+
|
|
153
|
+
- Unit: что тестируем (списком): ...
|
|
154
|
+
- Integration: что тестируем (границы/моки): ...
|
|
155
|
+
- E2E: маппинг на User Stories: ...
|