@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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +291 -0
  3. package/dist/cli.js +64 -0
  4. package/dist/cli.js.map +27 -0
  5. package/globals/anti-spaghetti.md +65 -0
  6. package/globals/lang-python.md +105 -0
  7. package/globals/lang-typescript.md +61 -0
  8. package/globals/use-agentica.md +127 -0
  9. package/package.json +55 -0
  10. package/prompts/architect.prompt.md +302 -0
  11. package/prompts/change.prompt.md +915 -0
  12. package/prompts/create.prompt.md +953 -0
  13. package/prompts/implement.prompt.md +389 -0
  14. package/prompts/init.prompt.md +123 -0
  15. package/prompts/readme.prompt.md +355 -0
  16. package/prompts/refactor.prompt.md +712 -0
  17. package/prompts/reverse.prompt.md +777 -0
  18. package/prompts/tasks.prompt.md +1041 -0
  19. package/prompts/validate.prompt.md +480 -0
  20. package/stacks/python/cli/product.md +41 -0
  21. package/stacks/python/cli/structure.md +40 -0
  22. package/stacks/python/cli/tech.md +29 -0
  23. package/stacks/python/gui/product.md +41 -0
  24. package/stacks/python/gui/structure.md +41 -0
  25. package/stacks/python/gui/tech.md +29 -0
  26. package/stacks/python/lib/product.md +41 -0
  27. package/stacks/python/lib/structure.md +34 -0
  28. package/stacks/python/lib/tech.md +30 -0
  29. package/stacks/python/monorepo/product.md +41 -0
  30. package/stacks/python/monorepo/structure.md +29 -0
  31. package/stacks/python/monorepo/tech.md +30 -0
  32. package/stacks/typescript/cli/product.md +41 -0
  33. package/stacks/typescript/cli/structure.md +34 -0
  34. package/stacks/typescript/cli/tech.md +31 -0
  35. package/stacks/typescript/lib/product.md +41 -0
  36. package/stacks/typescript/lib/structure.md +33 -0
  37. package/stacks/typescript/lib/tech.md +31 -0
  38. package/stacks/typescript/monorepo/product.md +41 -0
  39. package/stacks/typescript/monorepo/structure.md +34 -0
  40. package/stacks/typescript/monorepo/tech.md +47 -0
  41. package/stacks/typescript/server/product.md +41 -0
  42. package/stacks/typescript/server/structure.md +35 -0
  43. package/stacks/typescript/server/tech.md +30 -0
  44. package/stacks/typescript/spa/product.md +41 -0
  45. package/stacks/typescript/spa/structure.md +36 -0
  46. package/stacks/typescript/spa/tech.md +29 -0
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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,65 @@
1
+ # Анти-спагетти метод: Единый Code Style Guide
2
+
3
+ ## 1. Структура файла и Визуальное оформление
4
+ - **Принципы:** Код должен быть структурированным сверху вниз. Порядок секций фиксирован, это делает код предсказуемым.
5
+ - **Структура модуля (Strict):**
6
+ 1. **Импорты**
7
+ 2. **Константы** — магические числа/строки выносятся сюда.
8
+ 3. **Интерфейсы/типы** — одноуровневые, без вложенности.
9
+ 4. **Публичные функции/классы** — экспортируемое API.
10
+ 5. **Приватные функции/классы** — внутренняя реализация.
11
+ 6. **Утилитарные функции** — вспомогательные/экспорт в самом конце.
12
+ - **Четкое визуальное разделение:** Помечай группы широким однострочным разделителем-заголовком, чтобы визуально "разрезать" файл.
13
+ - *Пример:*
14
+ ```typescript
15
+ //------------------- Constants ---------------------//
16
+ //---------------------- Types ----------------------//
17
+ //------------------- Public API --------------------//
18
+ //---------------- Order Processor ------------------//
19
+ //---------------------- Utils ----------------------//
20
+ ```
21
+ - **Структура класса:** Придерживайся следующей очерёдности (state first):
22
+ 1. **Приватные поля** (состояние).
23
+ 2. **Конструктор**.
24
+ 3. **Публичные свойства** (геттеры/сеттеры).
25
+ 4. **Публичные методы**.
26
+ 5. **Приватные методы**.
27
+ 6. **Утилитарные методы** (статические).
28
+
29
+ ## 2. Типизация и Данные (TypeScript)
30
+ - **Одноуровневые типы:** Создавай на каждый отдельный "объект" свой интерфейс/тип. Разбивай сложные вложенные типы на отдельные алиасы. Это улучшает читаемость и отладку.
31
+ - *Плохо:* `function process(data: { items: { id: string }[] })`
32
+ - *Хорошо:* `interface Item { id: string }; interface ProcessData { items: Item[] };`
33
+ - **Избегай дублирования DTO:** Не создавай 10 похожих интерфейсов для передачи одних и тех же данных. Если аргументов много и они повторяются — сгруппируй их в Класс или общий DTO.
34
+ - **Интерфейсы для DTO:** Для всех args-return структур использовать интерфейсы, даже если это всего 2-3 поля.
35
+ - **Прямые типы:** Используй типы напрямую (через импорты), избегай `typeof` или `ISomeType["field"]` в сигнатурах.
36
+
37
+ ## 3. Плоскость (Flatness) и Поток управления
38
+ - **Принцип раннего возврата (Early Return):** Избегай конструкции `else`. Если в блоке `if` происходит `return`, `throw` или `break`, `else` не нужен. Это уменьшает визуальную вложенность.
39
+ - **Запрет на пирамиды:** Вложенные if-ы запрещены. Вычисли флаги по очереди и используй ранний возврат. Макс. 3-4 уровня вложенности — если больше, рефактори.
40
+ - **Распаковка цепочек методов:** Обязательное использование именованных переменных для промежуточных вычислений. Вместо цепочки в 10 этажей (`data.filter().map().reduce()...`) разбивай шаги на переменные:
41
+ - *Пример:* `const activeItems = ...; const values = ...; const result = ...;`
42
+ - **Императивное >> Функционального:** Если можно написать простой цикл `for/of`, пиши его. Не городи сложные композиции из `reduce`, если это не улучшает читаемость.
43
+ - **Тернарные операторы:** Разрешены только если помещаются в одну строку и не содержат вложенности.
44
+
45
+ ## 4. Простота (Simplicity) и Рефакторинг
46
+ - **Лимиты функции:** Макс. 30-40 строк кода. Функция должна помещаться на экран.
47
+ - **Лимит аргументов:** Не более 4-х аргументов. Если нужно больше — группируйте в объект (DTO) или превращайте функцию в класс.
48
+ - **Превращай мега-функции в классы:** Если функция имеет >100 строк, >5 аргументов или хранит сложное состояние в замыканиях (`let state = ...`), её нужно рефакторить в класс. Поля класса заменят замыкания, а методы — шаги алгоритма.
49
+ - **Единый уровень абстракции:** Внутри одной функции не должны перемешиваться высокоуровневая бизнес-логика и низкоуровневые манипуляции (парсинг JSON и расчет скидки рядом).
50
+
51
+ ## 5. Чистота (Cleanliness) и Инкапсуляция
52
+ - **Defensive programming только на границах:** Проверки `null/undefined` нужны только на входе в публичный API (границы системы). Внутри приватных методов и между внутренними функциями — доверяй типизации TypeScript.
53
+ - *Принцип:* "Не проверяй дважды". Если `handleUser` уже проверил `user`, то `processUser` не должен проверять его снова.
54
+ - **Инкапсуляция условий:** Запрет на "размазывание" логики. Вместо `if (order.total > 100 && order.user.isPremium)` используй метод модели `if (order.canApplyDiscount())`. Логика принадлежит объекту с данными.
55
+ - **Чистота булевых выражений:** Если условие `if` содержит более 2-х операторов, вынеси его в переменную (`const canAccess = ...`) или метод.
56
+ - **Запрет на мутации:** Функция не должна изменять входные параметры (immutability).
57
+ - **Запрет на Side Effects в геттерах:** Методы `get...` не должны менять состояние объекта или БД.
58
+
59
+ ## 6. Общие запреты и стандарты
60
+ - **Магические значения:** Все числа, строки, таймауты и конфигурации — строго в константы с понятными именами (`const MAX_RETRY = 3`).
61
+ - **Никаких флагов в аргументах:** Если `boolean` аргумент меняет логику функции (ветвление внутри), раздели её на две разные функции.
62
+ - **Обработка ошибок:** Не должно быть методов, целиком завернутых в `try-catch`, кроме верхнего уровня публичного API.
63
+ - **Ограничение длины строки:** Максимум 100–120 символов (нет горизонтальному скроллу).
64
+ - **Мертвый код:** Закомментированный код удаляется безжалостно. Для истории есть Git.
65
+ - **Стрелочные функции:** Вложенные стрелки только для коротких лямбд. Если растет логика — выноси в именованную функцию.
@@ -0,0 +1,105 @@
1
+ # Python Specifics
2
+
3
+ ## Naming
4
+
5
+ | Тип символа | `Casing` | PEP |
6
+ | ------------------------ | -------------- | ------------------------------------------------------------------------------ |
7
+ | Класс, Exception | `PascalCase` | [PEP 8](https://peps.python.org/pep-0008/#class-names) |
8
+ | Функция, метод | `snake_case` | [PEP 8](https://peps.python.org/pep-0008/#function-and-variable-names) |
9
+ | Переменная, аргумент | `snake_case` | [PEP 8](https://peps.python.org/pep-0008/#function-and-variable-names) |
10
+ | Константа (module-level) | `ALL_CAPS` | [PEP 8](https://peps.python.org/pep-0008/#constants) |
11
+ | Приватный атрибут/метод | `_snake_case` | [PEP 8](https://peps.python.org/pep-0008/#method-names-and-instance-variables) |
12
+ | Name mangling | `__snake_case` | [PEP 8](https://peps.python.org/pep-0008/#method-names-and-instance-variables) |
13
+ | Модуль, пакет | `snake_case` | [PEP 8](https://peps.python.org/pep-0008/#package-and-module-names) |
14
+ | Type variable | `PascalCase` | [PEP 8](https://peps.python.org/pep-0008/#type-variable-names) |
15
+
16
+ ## Декомпозиция модулей
17
+
18
+ Не стоит писать супер большие модули с множеством классов. По возможности:
19
+ - Один публичный класс = один модуль (файл)
20
+ - Связанные функции группируй в отдельные модули
21
+ - Используй `__init__.py` для удобного публичного API пакета
22
+ - Приватные helper-функции можно оставлять в том же модуле с префиксом `_`
23
+
24
+ В частности, выноси в отдельные модули:
25
+ - Модели данных (dataclasses, Pydantic models)
26
+ - Бизнес-логику и сервисы
27
+ - Утилиты и helpers
28
+ - Типы и протоколы (interfaces)
29
+ - Константы и конфигурацию
30
+
31
+ ## Скрипты
32
+
33
+ - Форматирование Ruff: `uv run ruff format`
34
+ - Линт Ruff: `uv run ruff check`
35
+ - Автофикс линта: `uv run ruff check --fix`
36
+ - Проверка типов mypy: `uv run mypy .`
37
+ - Запуск всех тестов: `uv run pytest`
38
+ - Запуск тестов с покрытием: `uv run pytest --cov`
39
+ - Не запускай утилиты через `pip`, используй `uv` и скрипты выше. Если нужны дополнительные команды, добавь их в `pyproject.toml` секцию `[tool.uv.scripts]`.
40
+
41
+ ## pyproject.toml и зависимости
42
+
43
+ - Добавляй зависимости только через `uv add <package>`.
44
+ - Добавляй dev-зависимости через `uv add --dev <package>`.
45
+ - Удаляй зависимости только через `uv remove <package>`.
46
+ - **Не** редактируй `pyproject.toml` вручную для зависимостей.
47
+ - Используй `uv sync` для синхронизации окружения.
48
+ - Для production-зависимостей НЕ используй `--dev`.
49
+
50
+ ## Типизация
51
+
52
+ Следуй [PEP 484](https://peps.python.org/pep-0484/) (Type Hints):
53
+
54
+ ```python
55
+ # Хорошо:
56
+ def process_items(items: list[str], count: int) -> dict[str, int]:
57
+ result: dict[str, int] = {}
58
+ return result
59
+
60
+ # Плохо (без type hints):
61
+ def process_items(items, count):
62
+ result = {}
63
+ return result
64
+ ```
65
+
66
+ - Используй современный синтаксис типов (Python 3.10+): `list[str]` вместо `List[str]`
67
+ - Для опциональных значений: `str | None` вместо `Optional[str]`
68
+ - Используй `typing.Protocol` для структурной типизации (duck typing)
69
+ - Избегай `Any` — используй `object`, `typing.Protocol` или generic types
70
+
71
+ ## Docstrings
72
+
73
+ Следуй [PEP 257](https://peps.python.org/pep-0257/) и Google/NumPy стилю:
74
+
75
+ ```python
76
+ def calculate_total(items: list[float], tax_rate: float) -> float:
77
+ """Calculate total price including tax.
78
+
79
+ Args:
80
+ items: List of item prices
81
+ tax_rate: Tax rate as decimal (e.g., 0.15 for 15%)
82
+
83
+ Returns:
84
+ Total price with tax applied
85
+
86
+ Raises:
87
+ ValueError: If tax_rate is negative
88
+ """
89
+ if tax_rate < 0:
90
+ raise ValueError("Tax rate cannot be negative")
91
+ return sum(items) * (1 + tax_rate)
92
+ ```
93
+
94
+ ## Общие обязательные принципы
95
+
96
+ - **Типизация**: всегда используй type hints для публичного API ([PEP 484](https://peps.python.org/pep-0484/))
97
+ - **Обработка ошибок**: выбрасывай конкретные исключения, не используй голый `except:`
98
+ - **Imports**: следуй порядку [PEP 8](https://peps.python.org/pep-0008/#imports) (stdlib → third-party → local), используй `ruff` для автосортировки
99
+ - **Immutability**: предпочитай неизменяемые структуры данных (tuples, frozenset, dataclasses с `frozen=True`)
100
+ - **Context managers**: используй `with` для работы с ресурсами (файлы, соединения, locks)
101
+ - **Dataclasses**: используй `@dataclass` вместо ручного `__init__` для data containers
102
+ - **Pathlib**: используй `pathlib.Path` вместо `os.path` для работы с путями
103
+ - **f-strings**: используй f-strings для форматирования строк вместо `.format()` или `%`
104
+ - **List comprehensions**: предпочитай comprehensions вместо `map()`/`filter()` для простых случаев
105
+ - **Dependency Injection**: передавай зависимости через аргументы конструктора/функций (важно для тестируемости)
@@ -0,0 +1,61 @@
1
+ # Typescript Specifics
2
+
3
+ ## Naming
4
+
5
+ | Тип символа | `Casing` |
6
+ | ------------------------- | ---------------- |
7
+ | Класс, Enum | `PascalCase` |
8
+ | Интерфейс | `IPascalCase` |
9
+ | Поле интерфейса/класса | `snake_case` |
10
+ | Метод | `PascalCase` |
11
+ | Компонент | `PascalCase` |
12
+ | Функция | `camelCase` |
13
+ | Аргумент | `snake_case` |
14
+ | Переменная | `snake_case` |
15
+ | Ключ Enum'а | `PascalCase` |
16
+ | Строковое значение Enum'а | `snake_case` |
17
+ | Константа | `ALL_CAPS` |
18
+ | Папка/Файл | `snake_case.ext` |
19
+
20
+ ## Декомпозиция компонентов
21
+
22
+ Не стоит писать супер глубокие компоненты, по возможности, все "атомарные", и все те кусочки JSX которым можно дать название нужно выносить в отдельный компонент, даже если он не будет повторно использоваться за пределами этого конкретного модуля.
23
+
24
+ В частности:
25
+ - Элементы списка
26
+ - Содержимое карточек
27
+ - Секции сложных Layout'ов
28
+ - ...
29
+
30
+ ## Скрипты
31
+ - Форматирование Biome: `bun format`
32
+ - Линт Biome: `bun lint`
33
+ - Проверка типов проекта: `bun typecheck`
34
+ - Проверка типов тестов: `bun typecheck:tests`
35
+ - Запуск всех тестов: `bun test`
36
+ - Не запускай утилиты через `bunx <tool>`, используй скрипты выше. Если их нет, добавь новый скрипт в `package.json`.
37
+
38
+ ## package.json и зависимости
39
+ - Добавляй зависимости только через `bun add <package>`.
40
+ - Удаляй зависимости только через `bun remove <package>`.
41
+ - **Не** редактируй `package.json` вручную для зависимостей.
42
+ - Добавляй зависимости в правильный workspace-пакет.
43
+ - Не добавляй расширение `.js` к импортам, если это не требуется. Все внутренние импорты пакетов не должны содержать `.js`.
44
+
45
+ ## ES6 `this` binding
46
+
47
+ В тех случаях когда код написан в классе, и нужно передать колбек в виде метода, следует передавать стрелочную функцию:
48
+
49
+ ```typescript
50
+ // Хорошо:
51
+ handle.addEventListener("onclick", (e) => this.BeginDrag(e))
52
+
53
+ // Плохо:
54
+ handle.addEventListener("onclick", this.BeginDrag.bind(this))
55
+ ```
56
+ ## Общие обязательные приципы
57
+ - Интерфейсы: префикс `I` (например, `IUser`, `IProjectConfig`). Названия файлов для интерфейсов не должны содержать `I` (например, `user.ts`, а не `IUser.ts`).
58
+ - Типизация: избегай `any` (используй `unknown` или введи интерфейс/тип).
59
+ - Обработка ошибок: выбрасывай только подклассы `Error`.
60
+ - Внедрение зависимостей: предпочитай DI через аргументы конструктора/фабрик (важно для тестируемости).
61
+ - Архитектура расширения: держи бизнес-логику в **extension host**; webviews не должны превращаться во второй бэкенд.
@@ -0,0 +1,127 @@
1
+ ## Agentica Framework: Гид для Агентов
2
+
3
+ Этот проект использует **Agentica** - фреймворк для spec-driven разработки. Твоя задача — работать **внутри спецификаций**, а не в обход них.
4
+
5
+ ### Где искать контекст
6
+
7
+ **1. Структура директории `.agentica/`**
8
+
9
+ Проверяй ОБА уровня:
10
+ - **Корень проекта** `.agentica/` - глобальный контекст (шаблоны, промпты, общие стандарты)
11
+ - **Корень пакета** `.agentica/` - локальные спеки и контекст конкретного пакета
12
+
13
+ **Корневой уровень** (`.agentica/` в корне проекта):
14
+ ```
15
+ .agentica/
16
+ ├── prompts/ # Воркфлоу агентов (init, create, implement, validate)
17
+ ├── templates/ # Шаблоны спек (feature, change, architecture)
18
+ ├── product.md # Глобальное продуктовое видение
19
+ ├── structure.md # Структура и организация репозитория
20
+ ├── tech.md # Глобальный тех-стек и стандарты
21
+ └── status.md # Статус интеграции
22
+ ```
23
+
24
+ **Уровень пакета** (`.agentica/` в каждом пакете/скоупе):
25
+ ```
26
+ packages/my-package/.agentica/
27
+ ├── features/ # Спеки FT-XXXX (новая функциональность)
28
+ ├── changes/ # Спеки CH-XXXX (изменения существующего кода)
29
+ ├── architecture/ # Спеки AR-XXXX (архитектурные решения и паттерны)
30
+ ├── product.md # Назначение и домен пакета
31
+ ├── structure.md # Файловая структура пакета
32
+ ├── tech.md # Стек и паттерны конкретного пакета
33
+ └── status.md # Отслеживание интеграции пакета
34
+ ```
35
+
36
+ **2. Система Memory**
37
+
38
+ IDE автоматически предоставляет доступ к фактам, сохранённым на предыдущих этапах спеки (`create`, `tasks`). Эти факты помечены тегами по фичам/скоупам:
39
+
40
+ - `@<scope>/FT-XXXX--existing-modules` - Существующие модули и их назначение
41
+ - `@<scope>/FT-XXXX--patterns` - Используемые паттерны проектирования
42
+ - `@<scope>/FT-XXXX--libraries` - Подключённые библиотеки и API
43
+ - `@<scope>/FT-XXXX--integration-points` - Точки, где модули соединяются
44
+ - `@<scope>/FT-XXXX--dependencies` - Граф зависимостей
45
+
46
+ **Доверяй этим фактам** - они содержат исследованный контекст о кодовой базе. Используй их, чтобы избежать дублирования кода и следовать существующей архитектуре.
47
+
48
+ ### Как найти информацию
49
+
50
+ **Перед написанием любого кода:**
51
+ 1. Прочитай `product.md` (уровень пакета) - пойми домен и назначение
52
+ 2. Прочитай `structure.md` (уровень пакета) - узнай, где должны быть файлы
53
+ 3. Прочитай `tech.md` (уровень пакета И корня) - следуй стандартам
54
+ 4. Проверь факты в memory - используй существующие паттерны и модули
55
+ 5. Прочитай связанные спеки в `features/`, `changes/`, `architecture/` - учись на похожих работах
56
+
57
+ **При реализации спеки (FT-XXXX или CH-XXXX):**
58
+ 1. **ВСЕГДА** читай полную спеку сначала: `product.md`, `tech.md`, `tasks.md`, `validation.md`
59
+ 2. Проверь, существует ли `research.md` - он может содержать решения по библиотекам
60
+ 3. Просканируй соседние спеки в `features/` - они могут использовать те же паттерны
61
+ 4. Ищи документы AR-XXXX, относящиеся к твоему домену - они определяют архитектуру
62
+
63
+ **Если застрял или неясно:**
64
+ - Перечитай `tech.md` - решение может быть уже определено
65
+ - Ищи похожий код через `semantic_search` с конкретными терминами
66
+ - Проверь memory на наличие связанных паттернов
67
+ - НЕ УГАДЫВАЙ - задавай уточняющие вопросы
68
+
69
+ ### Критические правила
70
+
71
+ **1. Оставайся внутри спеки**
72
+ - Твоя задача — реализовать то, что **уже решено** в спеке
73
+ - НЕ добавляй "улучшения" или "хотелки", не упомянутые в задачах
74
+ - Если спека неясна - спрашивай, не предполагай
75
+
76
+ **2. Останавливайся при переполнении контекста**
77
+ - Если ты читаешь слишком много файлов и контекст кажется "тяжёлым" - ОСТАНАВЛИВАЙСЯ
78
+ - Попроси пользователя:
79
+ - Сузить скоуп
80
+ - Разбить задачу на более мелкие спеки
81
+ - Создать нормальную спеку через `/agentica.create` или `/agentica.architect`
82
+
83
+ **3. Читай соседние спеки**
84
+ - Перед созданием похожего кода проверь другие FT-XXXX в том же пакете
85
+ - Переиспользуй паттерны, не изобретай заново
86
+ - Консистентность > новизна
87
+
88
+ **4. Следуй процессу**
89
+ Каждый воркфлоу Agentica имеет определённые шаги (init → create → tasks → implement → validate). Если пользователь просит сделать что-то масштабное:
90
+ - Проверь, существует ли связанная спека
91
+ - Если спеки нет - рекомендуй сначала использовать `/agentica.create`
92
+ - Не пиши большие фичи "фристайлом" без спеки
93
+
94
+ ### Рекомендации для пользователя
95
+
96
+ Если пользователь просит большие изменения в "обычном" режиме (без воркфлоу Agentica):
97
+ ```
98
+ ⚠️ Похоже на существенное изменение. Рекомендую использовать воркфлоу Agentica:
99
+
100
+ 1. Создай спеку: `/agentica.create --name <название-фичи>`
101
+ 2. Распланируй задачи: `/agentica.tasks --id FT-XXXX`
102
+ 3. Реализуй: `/agentica.implement --id FT-XXXX`
103
+ 4. Валидируй: `/agentica.validate --id FT-XXXX`
104
+
105
+ Это обеспечит:
106
+ - Правильное планирование архитектуры
107
+ - Поэтапную реализацию с тестами
108
+ - Покрытие всех edge cases
109
+ - Лучшее качество и поддерживаемость кода
110
+ ```
111
+
112
+ ### Быстрая справка
113
+
114
+ | Мне нужно... | Смотри в... |
115
+ | :------------------------------- | :----------------------------------- |
116
+ | Понять назначение проекта | Root `.agentica/product.md` |
117
+ | Узнать, где должны быть файлы | Package `.agentica/structure.md` |
118
+ | Следовать стандартам кода | `.agentica/tech.md` (оба уровня) |
119
+ | Посмотреть архитектурные решения | Package `.agentica/architecture/` |
120
+ | Проверить похожие фичи | Package `.agentica/features/` |
121
+ | Понять прошлые изменения | Package `.agentica/changes/` |
122
+ | Найти существующие паттерны | Факты Memory + похожие спеки |
123
+ | Изучить воркфлоу | Root `.agentica/prompts/*.prompt.md` |
124
+
125
+ ---
126
+
127
+ **Помни:** Agentica - это **планируемая разработка**. Если тебя просят сделать что-то большое без спеки - рекомендуй сначала создать её. Спеки экономят время и дают лучший код.
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@jakerdy/agentica",
3
+ "version": "0.0.2",
4
+ "description": "Spec-driven framework for agent coding with developer-first approach",
5
+ "keywords": [
6
+ "ai",
7
+ "agents",
8
+ "llm",
9
+ "spec-driven",
10
+ "code-generation",
11
+ "architecture",
12
+ "cli",
13
+ "developer-tools"
14
+ ],
15
+ "author": "Jak Erdy",
16
+ "license": "MIT",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/jakerdy/agentica.git"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/jakerdy/agentica/issues"
23
+ },
24
+ "homepage": "https://github.com/jakerdy/agentica#readme",
25
+ "module": "src/index.ts",
26
+ "main": "dist/cli.js",
27
+ "type": "module",
28
+ "bin": {
29
+ "agentica": "./dist/cli.js"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "prompts",
34
+ "templates",
35
+ "stacks",
36
+ "globals",
37
+ "README.md",
38
+ "LICENSE"
39
+ ],
40
+ "scripts": {
41
+ "build": "bun run build.ts",
42
+ "prepublishOnly": "bun run build"
43
+ },
44
+ "engines": {
45
+ "node": ">=18.0.0"
46
+ },
47
+ "devDependencies": {
48
+ "typescript": "^5",
49
+ "@types/bun": "latest"
50
+ },
51
+ "dependencies": {
52
+ "chalk": "^5.6.2",
53
+ "commander": "^14.0.3"
54
+ }
55
+ }