# GenDesign Site Finder (AI-подбор инвест-участков) + Generative Design (концепции застройки) для девелоперов РФ. Live: `https://gendsgn.ru/` — Свердловская обл. (ЕКБ, ПЗЗ, МСК-66). ## Stack | Слой | Stack | |---|---| | Backend | Python 3.12, FastAPI, SQLAlchemy 2.0, GeoAlchemy2, Pydantic v2, Celery + Redis, httpx, Shapely 2 | | DB | PostgreSQL 16 + PostGIS 3.4 (~50 таблиц, partitioned `rosreestr_deals`, GIST на geom) | | Frontend | Next.js 15 app router, React 19, TypeScript 5 strict, Tailwind 4, TanStack Query | | Export | WeasyPrint (PDF), ezdxf (DXF), openpyxl (Excel) | | Tooling | uv, ruff, mypy strict (selective), pytest, pre-commit, prettier | | Deploy | Beget VPS · Forgejo Actions → GHCR → SSH → docker-compose · Caddy | | Knowledge | Obsidian vault `obsidian.gendsgn.ru` (CouchDB LiveSync) | ## Critical rules 1. **Knowledge = Obsidian vault only.** `mcp__obsidian__*` tools. Local mirror: `C:\Users\user\Documents\gendesign-memory`. Deprecated: `memory/memory-gendesign.jsonl` — не читай, не пиши. 2. **Branch + PR mandatory.** Никаких direct push в main. `feat/...` / `fix/...` / `refactor/...` / `docs/...` / `chore/...` → ветка от `forgejo/main` → `mcp__forgejo__create_pull_request` → PR URL пользователю. После PR create — сразу `Skill loop` polling. `gh` CLI bypassed (2026-05-16). **Полные правила: `.claude/rules/git-pr.md`**. 3. **Agent-first workflow.** Main session orchestrates ONLY — не пишет код inline. Любая задача >1 файл / >50 строк → subagent. Pre-push: spawn `code-reviewer` subagent на staged changes. Post-push review — внешнее окно Claude (НЕ дублировать). Лимиты размера subagent-задачи: `.claude/rules/delegation.md`. 4. **psycopg v3 only.** `import psycopg2` → ModuleNotFoundError. `CAST(:x AS type)` в SQL — никогда `:x::type`. **Полные правила: `.claude/rules/backend.md` + `sql.md`**. 5. **No `--no-verify` / `--force` / `--amend`.** Pre-commit hooks обязательны. Hook падает → fix root cause. 6. **Vault обновляется вместе с кодом** — в той же сессии. **Используй `/vault-write`** для новой записи (auto-routes через inbox → vault-overlord → правильная папка). НЕ пиши напрямую в `fixes/` / `decisions/` / `code/modules/`. Periodic cleanup: `/sort-inbox` (раскладка inbox), `/retention-pass` (архив устаревшего active в `old/`). Полные правила: `meta/02_claude_usage.md` + `inbox/README.md` в vault. 7. **Тестируй каждый merge** — `mcp__playwright__*` или curl ДО/сразу после deploy (post-deploy spawn `qa-tester`). Не доверяй "тесты прошли" без verify. ## Subagents (`.claude/agents/`) | Agent | Scope | |---|---| | `tech-analyst` | Нечёткая / cross-domain задача → план | | `backend-engineer` | `backend/app/**` — FastAPI, Celery, scrapers, services | | `frontend-engineer` | `frontend/src/**` — Next.js, React, hooks | | `database-expert` | `data/sql/**.sql`, Alembic, EXPLAIN ANALYZE | | `devops-engineer` | `docker-compose*.yml`, `Caddyfile`, `.github/workflows/**`, `.forgejo/workflows/**` | | `code-reviewer` | Pre-push lint (security, correctness, conventions) | | `deep-code-reviewer` | Тщательный review критичных PR (миграции / auth / scrapers) + merge authority при ✅ APPROVE (не эксклюзивно: self-merge разрешён любой сессии с 2026-06-27) | | `qa-tester` | Post-deploy smoke (playwright / curl / SQL) сразу после merge+deploy — rule #7 | `auto-*` в `.claude/agents/` — standalone bot-персоны (`/work-as-*`), НЕ для Task-spawn; общий контракт — `_autonomous_pickup.md`. **Routing:** тривиально (typo, 1-line) → main session. Single-domain clear → worker. Cross-domain / нечётко → `tech-analyst` first. Worker → `code-reviewer` → main commits → push → PR. ## Where to look - **Path-scoped rules:** `.claude/rules/` (backend, frontend, sql, git-pr, deploy, tradein, ui-tokens, ui-conventions, ui-microcopy) — auto-loaded при работе с соответствующими файлами через `paths:` frontmatter; `delegation.md` — намеренно БЕЗ `paths:` (грузится в каждой сессии, не добавлять frontmatter) - **Personal preferences:** `~/.claude/CLAUDE.md` (cross-project: no auto-commit, no Co-Authored-By, no @claude) - **Workflow memory:** `~/.claude/projects//memory/MEMORY.md` index - **Vault MOCs:** `meta/`, `domains//-MOC.md`, `decisions/`, `fixes/`, `limitations/`, `code/patterns/` - **DB access:** SSH tunnel `ssh -N gendesign` → `localhost:15432` · Credentials: vault `meta/00_credentials.md` ## Don't (cross-domain — specifics → `.claude/rules/`) - ❌ Direct push в main; merge вне policy (красный CI / tripwires — git-pr.md § Auto-merge policy) - ❌ `--no-verify` / `--amend` / `git push --force` - ❌ Knowledge-файлы вне vault (`docs/research/`, `notes/`, `wiki/`) - ❌ Hardcode credentials в коде / коммитах