diff --git a/.claude/agents/auto-analyst.md b/.claude/agents/auto-analyst.md index f2703c2d..37b66b1e 100644 --- a/.claude/agents/auto-analyst.md +++ b/.claude/agents/auto-analyst.md @@ -14,7 +14,13 @@ tools: Task, Read, Glob, Grep, Bash, mcp__obsidian__obsidian_simple_search, mcp_ > > **Модель = модель окна.** Frontmatter `model: sonnet` действует ТОЛЬКО при Task-spawn (запрещён). > Твой issue — ЕДИНСТВЕННЫЙ канал к worker'у (он не видит твой контекст, не читает vault). Качество -> всего pipeline упирается в качество твоей декомпозиции → запускай окно в сильной модели осознанно. +> всего pipeline упирается в качество твоей декомпозиции. +> +> **⚠️ ЧИТАТЬ ПОЛНОЕ ТЕЛО ISSUE ПЕРЕД ЛЮБЫМ ДЕЙСТВИЕМ.** Прежде чем оставить коммент, сменить +> лейбл или принять решение по issue — получи актуальное тело через `mcp__forgejo__get_issue` +> (не полагайся на title / память / предыдущий тик). Если issue касается кода — verify актуальный +> код в main (`git show forgejo/main:` или Grep). Один выверенный коммент лучше «коммент → +> опровержение». (Инцидент 2026-05-31: mis-read #884 по title → два взаимоисключающих коммента.) > **Forgejo API → `mcp__forgejo__*` tools** (primary; полный mapping в [[_autonomous_pickup]] § «Forgejo операции»). curl — только fallback. Запуск окна: `scripts/start-bot.ps1 analyst`. @@ -181,6 +187,9 @@ Files/сигнатур/бинарного DoD, ≥2 толкования) — ** - ❌ **`status/ready` → потом переписываю тело** — ready только на финальном verified-теле; иначе держи `status/blocked` (воркер берёт ready за ~30s) - ❌ **Label-изменение без аудита тела** — «поменяй лейблы» ⇒ проверь+перепиши тонкое тело до ready +- ❌ **Действие по issue без чтения ПОЛНОГО тела** — ВСЕГДА `mcp__forgejo__get_issue` ПЕРЕД + комментом/лейблом/решением. Не полагаться на title, память, предыдущий тик. Если про код — + verify актуальный код в main. (Anti-pattern: «написал коммент → опроверг себя вторым комментом») - ✅ **Метрики из issue верифицируй на live-БД** перед ready: `mcp__postgres-tradein__execute_sql` для tradein (NULL %, coverage, anchor n, stale-counts), `mcp__postgres-gendesign__execute_sql` для основной. Не переписывай цифру из старой vault-заметки без своего SELECT — данные дрейфуют. **postgres-tradein** = отдельная trade-in БД (scraped avito/cian/yandex, estimator), **postgres-gendesign** = основная. - ✅ Один issue = единственное толкование. Перечитай глазами worker'а с нулевым контекстом перед CREATE diff --git a/.claude/agents/auto-qa-tester.md b/.claude/agents/auto-qa-tester.md index 50f50de6..bc688357 100644 --- a/.claude/agents/auto-qa-tester.md +++ b/.claude/agents/auto-qa-tester.md @@ -27,7 +27,11 @@ QA в autonomous-pickup mode. Polling issues с `status/qa` (PR уже merged au 1. KILL-SWITCH check (см. _autonomous_pickup.md) 2. PICKUP: GET issues?labels=status/qa&state=open&sort=updated-desc&limit=3 - Нет → result: idle, sleep 5m + Нет → ПЕРЕД тем как объявить idle: перепроверь без limit (или limit:1) что + status/qa&state=open реально пуст. Причина: limit:3 может вернуть 0 при + ошибке запроса, а застрявшие items копятся. Если после перепроверки пусто + → result: idle, sleep 5m. Если есть — обрабатывай по terminal-правилу + (Non-UI-testable) или обычному smoke, не объявляй idle. 3. Для каждой issue (max 3 за тик): a. Read issue body — что нужно проверить (acceptance criteria из analyst'а) b. Read related vault — какие smokes есть для этого scope diff --git a/.claude/agents/auto-resolver.md b/.claude/agents/auto-resolver.md index d524f07a..f218b280 100644 --- a/.claude/agents/auto-resolver.md +++ b/.claude/agents/auto-resolver.md @@ -14,7 +14,7 @@ tools: Read, Write, Edit, Glob, Grep, Bash, mcp__obsidian__obsidian_simple_searc > > **Модель = модель окна.** Frontmatter `model` действует только при Task-spawn (запрещён). > Резолвер несёт высокую judgment-нагрузку (классификация блокера, прод-операции, решение -> «задача vs решение-человека») → запускай окно в сильной модели (Opus) осознанно. +> «задача vs решение-человека»). Окно запускается через `start-bot.ps1 resolver` (Sonnet). > **Forgejo API → `mcp__forgejo__*` tools** (mapping в [[_autonomous_pickup]] § «Forgejo операции»). curl — fallback.