Реализация
Build-промпт для агента-кодера: как поднять архитектурный фундамент Agentfy.ai 2.0 — монорепо, CleanSlice-скелет api, 8 слоёв-групп слайсов, инвариант «зависимости только вниз» и базовую схему Prisma. Фичовые слайсы наполняются позже (у каждого своя страница Implementation).
Это промпт для агента
У каждого раздела есть страница Implementation — точный copy-paste спек, который выполняет агент. Сначала прочти Обзор, Слои-слайсы и Схему БД — они источник правды, на который ссылается промпт.
Промпт
ROLE: You are scaffolding the FOUNDATION of Agentfy.ai 2.0 (NestJS + Prisma + CleanSlice). Not
features yet — the skeleton everything else is built on.
GOAL: A booting `api` with the 8 layered slice groups wired as empty-but-valid modules, the
"dependencies point only downward" rule ENFORCED in CI, Prisma connected with a baseline schema, and
the sibling apps scaffolded. Ready for feature slices to drop in.
DELIVERABLES
1) Monorepo: api/ (NestJS), app/ (Nuxt), admin/ (Nuxt), worker/, k8s/, docs/. Shared tooling
(tsconfig base, eslint, prettier), `#`-path aliases per app.
2) `api` CleanSlice structure: src/slices/<group>/<slice>/{domain,data,dtos,<slice>.module.ts}.
Create all 8 groups as wired modules (empty is fine):
infra · setup · system · user · admin · runtime · agent · billing.
3) LAYERING ENFORCEMENT: a dependency-boundary check (eslint-plugin-boundaries or dependency-cruiser)
that FAILS CI when a lower group imports a higher one. Order (low→high):
infra → setup → system → user → admin → runtime → agent → billing.
4) infra + setup baseline: infra/prisma (PrismaService), infra/redis, infra/storage adapters;
setup/core (config · error filter · health · rate-limit), setup/mcp (tool registry).
5) Prisma baseline: Team, User, UserTeam, Agent + the conventions (see DB schema). One migration.
6) A trivial GET /health that boots green.
CONTRACTS / CONVENTIONS (follow exactly)
- Slice anatomy: domain (gateway abstract class + entities/types), data (Prisma-backed concrete
gateway + mapper), dtos (camelCase: createUser.dto.ts). Prisma IS the repository.
- Gateway pattern: an abstract class `IXxxGateway` in domain/ is the DI token; the concrete impl
lives in data/ and is bound in the module.
- IDs: `{slice}-{uuid}`, generated in `mapper.toCreate`.
- `I`-prefixed abstract classes as DI tokens (IUserGateway, IUserData); `Types` suffix for enums
(UserStatusTypes); no `any` — use `unknown` + type guards.
- Singular slice folder names (`user/`, not `users/`); routes are plural.
SECURITY: no secrets in the repo; config via env; Prisma URL + KEK from env only.
ACCEPTANCE: see the checklist below. Start at v0.1 scope.Референс — чему агент должен следовать
8 слоёв-групп (инвариант)
L0 infra адаптеры внешних систем (prisma · redis · storage · vector)
L0 setup плумбинг фреймворка (core · mcp)
L1 system общие сервисы (usage · setting · notification · llm · file)
L2 user идентичность / тенантность
L3 admin ops (читает другие через Prisma)
L4 runtime эфемерное исполнение (tasks · worker · events)
L5 agent домен агента + orchestrator (мозг)
L6 billing чистый sink (его никто не импортирует)Правило: каждая группа импортирует только группы ниже. Без циклов. Это хребет — CI-проверка границ существует, чтобы нарушение нельзя было замержить. См. Слои-слайсы.
Анатомия слайса
slices/<group>/<slice>/
├── domain/ gateway (абстрактный IXxxGateway) · entities · types · errors
├── data/ конкретный gateway (Prisma) · mapper (toCreate ставит id)
├── dtos/ createXxx.dto.ts · updateXxx.dto.ts (файлы camelCase)
└── <slice>.module.ts биндит IXxxGateway → concrete, экспонирует use-casesБаза Prisma
Реализуй Team, User, UserTeam, Agent ровно как в Схеме БД (id {slice}-{uuid}, тенантность teamId, таймстемпы). Остальное приходит со своим фичовым слайсом.
Порядок задач
- v0.1 — фундамент (эта страница): монорепо + скелет
api+ 8 связанных групп + CI-проверка слоёв + база infra/setup + база Prisma +/health. - v0.2 — core (без рантайма): наполнить
agent,system/llm,agent/chat,agent/memory,agent/orchestrator. - v0.3 — эфемерный рантайм:
runtime/task,runtime/worker,runtime/event, приложениеworker(см. Worker → Implementation). - дальше: слайсы user/admin/billing, фронтенды, SDK — по Плану.
Критерии приёмки
- [ ]
apiстартует;GET /healthотдаёт 200;prisma migrateнакатывает базу чисто. - [ ] Все 8 групп есть как валидные NestJS-модули под
src/slices/<group>/. - [ ] CI-проверка границ падает, когда нижняя группа импортирует верхнюю (докажи временным плохим импортом, затем убери его).
- [ ] Пример-слайс следует анатомии: абстрактный gateway в
domain/, Prisma-имплементация вdata/,idчеканится как{slice}-{uuid}вmapper.toCreate. - [ ] Нет
any; DI-токены с префиксомI; singular-папки слайсов.
См. также
- Обзор · Слои-слайсы · Разбор слайсов · Схема БД — источник правды.
- Конвенции — правила CleanSlice целиком.
- Worker → Implementation — build-промпт следующей подсистемы.
- План — порядок версия за версией.