- start-bot.ps1: --model per-role (sonnet; opus только reviewer); CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=60 - .claude/mcp/*.json: forgejo (~90 tools) deferred во всех ролях; postgres-gendesign deferred в backend/reviewer - auto-analyst.md: knowledge-capture step (status/done → inbox draft → vault-overlord) — закрывает 'волт не обновляется' - forgejo ops через mcp__forgejo__* вместо сырого curl: auto-code-reviewer/backend/qa workflow + _autonomous_pickup contract - #893 guard: бан curl→/tmp→python3 (Windows 404+FileNotFoundError); deferred→ToolSearch; stale tool-name cleanup (deep-reviewer phases)
2.7 KiB
2.7 KiB
Deep Review — Phase 1: Scope discovery
Supporting reference for
deep-code-reviewer.md. Read on demand when scope analysis non-trivial.
Git-level scope
git status
git diff --staged # если pre-push
git diff origin/main..HEAD # если post-push, до merge
git log origin/main..HEAD --stat # сколько коммитов, кто author
git rev-parse --abbrev-ref HEAD # не main ли это
Forgejo PR metadata
Если в окне есть
mcp__forgejo__*— предпочитай его (см. «Альтернатива» ниже): отдаёт распарсенный объект. curl-блок — fallback для Task-spawn без forgejo MCP; всё через| jq(без temp-файлов). ⛔ Неcurl -o /tmp/*.json+python3 json.load— на Windows 404 + FileNotFoundError (incident #893).
# Все вызовы используют $FORGEJO_URL и $FORGEJO_TOKEN
H="Authorization: token $FORGEJO_TOKEN"
REPO="$FORGEJO_URL/api/v1/repos/lekss361/gendesign"
# PR metadata: title, body, labels, base, head SHA, mergeable, state, draft
curl -sH "$H" "$REPO/pulls/<N>" | jq '{title,state,mergeable,draft,head:.head.sha,labels:[.labels[].name]}'
# Full file list (даже большой PR)
curl -sH "$H" "$REPO/pulls/<N>/files?limit=50" | jq '.[] | {filename,status,additions,deletions}'
# Diff целиком
curl -sH "$H" "$REPO/pulls/<N>.diff"
# Reviews (что уже сказали bot / lekss361)
curl -sH "$H" "$REPO/pulls/<N>/reviews" | jq '.[] | {user:.user.login,state,body:.body[0:200]}'
# Commits в ветке PR
curl -sH "$H" "$REPO/pulls/<N>/commits" | jq '.[] | {sha:.sha[0:7],message:.commit.message|split("\n")[0]}'
Альтернатива — mcp__forgejo__get_pull_request_by_index, mcp__forgejo__list_pull_request_files, mcp__forgejo__get_pull_request_diff, mcp__forgejo__list_pull_reviews (commits PR — через list_repo_commits по head-ветке).
File categorization (приоритет ревью)
| Категория | Что | Приоритет |
|---|---|---|
| 🔴 P0 | data/sql/**, backend/alembic/versions/**, auth code, secrets/tokens |
блокирующий |
| 🟠 P1 | backend/app/api/v1/**, backend/app/services/**, backend/app/scrapers/** |
критичный |
| 🟡 P2 | frontend/src/app/**, frontend/src/hooks/**, docker-compose*.yml, Caddyfile, .github/workflows/**, .forgejo/workflows/** |
важный |
| 🟢 P3 | frontend/src/components/** UI-only, tests, CLAUDE.md |
стандартный |
| ⚪ skip | lock-файлы, генеренные TS типы (api-types.ts), *.md без правил |
смотреть только если связано с P0-P2 |