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:
+12
-3
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user