Files
voidea/template/project.yaml
T

128 lines
4.4 KiB
YAML

# Шаблон проекта — машиночитаемое описание
# Формат: YAML
# Используется CI/CD, генераторами и ИИ-ассистентами для понимания структуры
template:
version: "1.0.0"
description: "Универсальный шаблон для старта любых проектов"
defaults:
language: python
python_version: "3.12"
database: sqlite
async_framework: fastapi
orm: sqlalchemy
frontend: react
frontend_build: vite
styling: tailwind
testing: pytest
architecture:
layers:
- name: api
depends_on: [services]
description: "HTTP роуты, Pydantic валидация, OpenAPI документация"
- name: services
depends_on: [integrations, data]
description: "Бизнес-логика, оркестрация"
- name: integrations
depends_on: [data]
description: "Внешние API, AI провайдеры, fallback chain"
- name: tasks
depends_on: [services, integrations]
description: "Фоновые задачи (Celery или прямой вызов)"
- name: agents
depends_on: [services, integrations]
description: "Системные агенты (саморазвитие проекта)"
- name: data
depends_on: [core]
description: "Модели БД, репозитории, миграции"
- name: core
description: "Config, base classes, security, dependencies"
layers_frontend:
- name: pages
depends_on: [components]
- name: components
depends_on: [api, auth]
- name: api
description: "HTTP-клиент к backend"
- name: auth
description: "JWT токены, AuthContext"
agents:
core:
- name: DocAgent
description: "Пишет документацию параллельно с кодом"
version: "1.0.0"
triggers: [pre_commit, manual]
- name: AuditAgent
description: "Проверяет каждый коммит на соответствие правилам"
version: "1.0.0"
triggers: [pre_commit, manual]
- name: EvolutionAgent
description: "Версионирует агентов, управляет их развитием"
version: "1.0.0"
triggers: [cron, manual, event]
- name: SupervisorAgent
description: "Следит за всеми агентами, их здоровьем и версиями"
version: "1.0.0"
triggers: [cron, event, manual]
optional:
- name: QATesterAgent
when: "tests_exist"
- name: FixAgent
when: "first_bug"
- name: BacklogAgent
when: "tech_debt_exists"
- name: SecurityAgent
when: "pre_production"
- name: SpecAgent
when: "pre_release"
- name: RolloutAgent
when: "pre_deploy"
- name: ObserverAgent
when: "post_launch"
- name: UITestAgent
when: "ui_exists"
triggers:
- name: pre_commit
description: "Запускается при каждом коммите"
- name: push
description: "Запускается при пуше в remote"
- name: tag_creation
description: "Запускается при создании git-тега"
- name: cron
description: "Запускается по расписанию (daily/hourly)"
- name: manual
description: "Запускается вручную из админ-панели"
- name: api
description: "Запускается через API-вызов"
- name: event
description: "Запускается при возникновении события"
conventions:
naming:
classes: PascalCase
functions: snake_case
constants: UPPER_SNAKE_case
files: snake_case
env_vars: UPPER_SNAKE_case
db_tables: snake_case
db_indexes: "ix_tablename_column"
db_unique: "uq_tablename_column"
git_branches: "feature/*, hotfix/*, release/*"
imports:
style: "absolute"
order: ["stdlib", "third_party", "local"]
formatting:
python_line_length: 88
js_line_length: 100
quote_style: "double для данных, single для docstrings"
docstrings: "google-style"
rules_ref: "docs/00-rules.md"
decisions_ref: "docs/decisions/"
checklists_ref: "docs/checklists/"