| name | code-reviewer-subagent |
| description | Піднімає рев'юера у ЧИСТОМУ контексті, що бачить ЛИШЕ git diff + AC PR, і повертає дискретний вердикт ACCEPT/WARN/PARTIAL/REJECT з обґрунтуванням. Тригери — '/code-reviewer-subagent', 'дай рев'юера в чистому контексті', 'субагент має оцінити diff проти AC', 'review this diff with fresh eyes'. НЕ вбудований '/code-review'. |
| argument-hint | [base-ref] (за замовч. main) |
| allowed-tools | Read, Glob, Bash, Task |
| disable-model-invocation | false |
code-reviewer-subagent — рев'юер у чистому контексті
Незалежний рев'юер для PR feat/reminders. Ідея — чистий контекст:
субагент НЕ бачить ні нашого діалогу, ні решти кодбази, тільки git diff і
acceptance criteria PR. Це усуває упередження «я ж щойно це писав» і дає
чесний, відтворюваний вердикт. Не плутати з вбудованим /code-review — тут ми
явно піднімаємо ізольований субагент через Task.
Acceptance criteria PR feat/reminders
- AC-1 —
remind [days] показує всі завдання з терміном у межах вікна,
включно з тим, що випадає рівно на межу (due_in_days == days).
- AC-2 — прострочені завдання теж потрапляють у нагадування.
- AC-3 — desktop-сповіщення безпечне до будь-якої назви завдання (назва —
недовірений ввід, у шелл її пускати не можна).
Кроки
Bash: зібрати дифф — git diff main...HEAD (обмежити src/tasks/).
Task: підняти субагент із чистим контекстом. У промпт кладемо РІВНО
дві речі: повний текст AC вище і текст diff. Жодного іншого контексту.
- Субагент повертає один із чотирьох вердиктів і обґрунтування:
- ACCEPT — diff виконує всі AC.
- WARN — виконує, але є зауваження.
- PARTIAL — частина AC виконана, частина ні.
- REJECT — ключова AC не виконана.
Output
feat/reminders · code-reviewer-subagent
Вердикт: REJECT
Обґрунтування:
- AC-1: due_within використовує строге `<`, тож завдання з due_in_days
рівно == days випадає з вікна. Межа має бути інклюзивною (`<=`).
- AC-3: notify_desktop підставляє title у os.system через шелл —
command injection. Назву завдання не можна пускати в шелл.
Що зробити: повернути `<= days`; перейти на subprocess.run([...], shell=False).
Після фіксу обох — повторний прогін має дати Вердикт: ACCEPT.
Anti-patterns
- Не годуй субагенту весь репозиторій — суть у вузькому, неупередженому контексті.
- Не повертай розмитих «ну майже» — вердикт дискретний.
- Не плутай із вбудованим
/code-review — тут явний ізольований субагент через Task.