--- paths: - .claude/** - .github/** --- # Git + PR workflow > Этот файл — manual reference из CLAUDE.md (auto-loaded для `.claude/**` и `.github/**` файлов). Если работаешь с code в backend/frontend — также явно открой этот файл при PR-related операциях. ## Branch + PR (MANDATORY) ``` 1. git checkout -b feat/ # или fix/ refactor/ docs/ chore/ perf/ 2. [worker делает код, staged] 3. code-reviewer subagent на staged changes (pre-push) 4. main session: git commit -m "feat(scope): ..." 5. git push -u origin feat/ 6. gh pr create --title "..." --body "$(cat < --json state,mergeable,comments,headRefOid` 2. `state == MERGED` → stop polling 3. Новый bot comment: распарси `` - **SHA guard**: `marker.sha7 == headRefOid[:7]` — иначе устаревший approval до fixup-push, игнорируй - **Scope guard** (см. ниже): если blocked paths → ping user, не auto-merge - `verdict=approve` + SHA match + scope OK → `gh pr merge --squash --delete-branch` - `verdict=changes` → fixup commits + push + re-poll 4. Нет новых comments → re-schedule 60s 5. **Cap**: 30 iter без resolution → stop, ping user. Blocked-scope cap = 5. ## Auto-merge scope **✅ Разрешено** (PR diff целиком в этих путях — bot merge без human): - `CLAUDE.md`, `README.md`, `docs/**` - `frontend/src/app/**` UI-only без новых endpoints - `frontend/public/**` - `.claude/agents/**`, `.claude/rules/**`, `memory/feedback_*.md` **❌ Блокировано** (любой файл из списка → human approval): - `data/sql/**`, `backend/alembic/versions/**` - `backend/app/api/v1/**`, `backend/app/services/**`, `backend/app/scrapers/**` - `docker-compose*.yml`, `Caddyfile`, `.github/workflows/**` - Любой файл с упоминанием secret / token / password / credential - PR меняет `Critical workflow rules` или `Auto-merge scope` в CLAUDE.md - PR меняет `Auto-merge scope` / blocked-list в любом `.claude/rules/*.md` (self-extending rules → нужен human) Touches both → more restrictive (block). ## Sequential PRs **Одна задача → один PR → merge → следующая.** Параллельно ТОЛЬКО если scope'ы строго orthogonal (разные файлы). Опасные файлы для конфликтов: `backend/app/api/v1/parcels.py`, `frontend/src/types/site-finder.ts`, OverviewTab/LandTab/MarketTab. ## Split big issues Issues ≥ 1.5 day → 3-4 sub-PRs: **Foundation → Schema → Workers → Integration**. Каждый ~200-500 lines. PR N+1 только после merge PR N. ## Review workflow (no conflict) - **Pre-push** (локально): spawn `code-reviewer` subagent на staged changes → lint pass (security, correctness, conventions). Блокирует push при 🔴 критикал. - **Post-push** (внешнее окно Claude): делает review после PR create, постит комменты от `lekss361`. Main session НЕ дублирует — только acting on review comments (fixup commits). ## Запреты - ❌ `git push origin main` / direct push в main - ❌ `gh pr merge` без approval (human "merge it" или bot verdict=approve + SHA match) - ❌ `--no-verify` / `--amend` / `--no-edit` / `--force` без явного approval - ❌ `@claude` в PR comments — plain text only (`feedback_no_claude_mentions`) - ❌ Параллельные PR на одни файлы (`feedback_sequential_prs`)