feat(skill): язык ответа ревьюера, батч-пауза, фиксы из ревью

- Зачем:
  - Ревьюер отвечал на английском вне зависимости от языка сессии — оператор тратил усилия на чтение и перевод.
  - Скилл паузил оператора непредсказуемо (то спрашивал, то применял молча) — нужен явный критерий, что требует мнения оператора, а что не требует.
  - Накопились фактические неточности из двух раундов self-review (детекция мёртвого ревьюера, disallowedTools, /agent, грамматика инвокации).
- Что:
  - Step 2: новый блок Language — лид определяет язык сессии и добавляет директиву в брифинг; парсимые литералы (VERDICT, severity tags, заголовки секций) остаются английскими.
  - Step 4: новый блок «structural vs non-structural» с батч-паузой — одна пауза на раунд только при наличии structural-фиксов; non-structural применяются молча.
  - reviewer-prompt.md: добавлен плейсхолдер {LANGUAGE_BLOCK} и описание в таблице placeholders.
  - Фиксы из ревью: детекция мёртвого ревьюера переписана под async-модель Agent Teams; disallowedTools — путь через кастомный subagent; /agent описан как CLI оператора, а не tool лида; bare <file-path> резолвится в mode=plan; добавлены формы code-vs-plan и code-vs-plan <plan-path>; xhigh — orthogonal effort flag; «plan in context» получило конкретные критерии.
- Проверка:
  - git diff main..HEAD -- SKILL.md reviewer-prompt.md — посмотреть итоговый набор правок.
  - Запустить /claude-team-review на самой ветке и убедиться, что директива Language вставляется и батч-пауза срабатывает только на structural.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-15 15:53:05 +03:00
co-authored by Claude Opus 4.7
parent bb8c9cf0e1
commit a9f8d032f3
2 changed files with 157 additions and 23 deletions
+12 -3
View File
@@ -131,6 +131,8 @@ VERDICT: REVISE
```
Approve if no findings or all low severity. Revise if any high or critical.
{LANGUAGE_BLOCK}
```
---
@@ -143,15 +145,22 @@ Approve if no findings or all low severity. Revise if any high or critical.
| `{ARTIFACT}` | Path to plan, inline plan text, or instruction to use git for code |
| `{ROUND}` | `1` for initial, `N` for re-review |
| `{PREVIOUS_FINDINGS_BLOCK}` | Empty on round 1 or when the same teammate continues. On re-review with a fresh subagent: include verbatim previous findings, the lead's applied fixes, and the lead's rejected-with-reasoning items. |
| `{LANGUAGE_BLOCK}` | Empty when operator's session language is English (template default). Otherwise a `## Language` section instructing the reviewer to respond in the operator's language while keeping section headers, severity tags, and the `VERDICT: APPROVED\|REVISE` line as English literals. See SKILL.md Step 2 "Language" for the exact block. |
## Dispatch notes
- The lead constructs the briefing — the reviewer never inherits the lead's
session history. Pass only what the reviewer needs.
- Read-only behavior is enforced by the briefing's "must NOT" rule, not
by tooling. If the host platform supports an enforced read-only sandbox
(Claude Code `disallowedTools`, Codex `sandbox_mode = "read-only"`),
feel free to use it on top.
by tooling. Enforced sandboxing is platform-specific and is off the
default path:
- **Claude Code** with the built-in `general-purpose` agent has no
invocation-time tool-restriction parameter — the briefing is the
only control. To enforce, define a custom subagent (e.g.
`~/.claude/agents/adversarial-reviewer.md`) with frontmatter
`disallowedTools: Write, Edit` and dispatch that agent type instead.
- **Codex**: the host's `sandbox_mode = "read-only"` applies to the
spawned subagent natively.
- For plan-mode reviews where the plan is inline, include the full plan
text in `{ARTIFACT}` rather than a summary — the reviewer needs the
actual artifact, not paraphrase.