From f99d795e2586c046bafeb0e14f5b039db08933fa Mon Sep 17 00:00:00 2001 From: vitya Date: Sun, 23 Aug 2026 02:05:50 +0300 Subject: [PATCH] =?UTF-8?q?feat(skills):=20review-subagent=20=E2=80=94=20c?= =?UTF-8?q?lean-context=20review=20via=20review=5Fsubagent=20tool=20[v0.1.?= =?UTF-8?q?0]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Скилл-обёртка для тула review_subagent (pi-расширение, OpeItcLoc03/pi-extensions): дефолт-ревьюер = текущая модель сессии, конкретная — параметром model. GREEN-проверка: fresh-context субагент со скиллами выбирает review-subagent по триггеру «отревьюй через субагента». Lint 49/0, dist собран. --- README.md | 1 + dist/review-subagent.skill | Bin 0 -> 2631 bytes skills/review-subagent/SKILL.md | 81 ++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 dist/review-subagent.skill create mode 100644 skills/review-subagent/SKILL.md diff --git a/README.md b/README.md index 691ad33..1ce190e 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,7 @@ an explicit `adapted-from` marker in its frontmatter. | `code-review` | `adapted-from: mattpocock/skills @ 84fdeffd` (MIT) — two-axis + Fowler baseline; output: caveman-review format | | `writing-skills` | `adapted-from: obra/superpowers @ 6.2.0` (MIT) — TDD-for-skills core + ideya 8 self-skill-authoring | | `web-search` | `author: ours` — search_web tool (pi-extension) + policy: when to search, «без поиска» session-off | +| `review-subagent` | `author: ours` — review_subagent tool (pi-extension): clean-context review by your own model, optional `model` override | | all other `skills/*` | `author: ours` | Adaptation policy: a clone is rewritten to our conventions (`.tasks/` boards, diff --git a/dist/review-subagent.skill b/dist/review-subagent.skill new file mode 100644 index 0000000000000000000000000000000000000000..057412085984d621dcd5f26cf60f609a7eaa8f13 GIT binary patch literal 2631 zcmV-N3b^%9O9KQH000080GkjOUBeXmowW%70Js$Z02lxO0CHt^X=QgUb9G{2XJu}5 zFH=iNOiV6qWUW|TZyVPUecxX(kY7ZXOUbbx0y^+R`&2Y&fH(ybRE2j%URfJcT$a0( zYy>TADzO~+LrLMFh8x?hk@lr&LDHs8i6RB)7wrB8|B{}Wxw~9a%0q$J5T#w-ojY^p z%$d3Cx~|jow@j7VW;-xDZq!-#ubXD<_?>t&Y*#7lv?FKRw4)$wR%x|zp|a}KO;l?K ztypedafp5w8QR%2O}Z6!sA)`{{3Zp>x@j4FG-GR>!VRj0byFsv>cPfFnZh>yj9R8f z>$k{qvVO81hX+;~gropd+pC%xnqE+=U>>79(r{LC>HOmTOb zOp+1dqemYkN4R{Ah2!+W6}#>=o;|>}Fy6&R{Llf-7V@*lxPOOlsT=rwzz;83$ajKx zlS8nOEa96?f7|da0~qTXeU3bE45Fpk<9vyr=>u7IWvN2H{pb_gK;9VecqerIn^ba$;DPehCmpJcmtfL3^q~&TnEVrz>NgW zA9xX5Ec`AC);-^d6_&<{+9fRaGn#>pbU!fZ?<-y382=QD`RIlIm8v7le;50_6r+O zsY=Q=gl*Y0!X+Xb;szrzD(ec4I5|LkQ@Fv5<8S4mVRDq-x2u@708clc@K%nXc`U#j zS;q6%J%slk^_a04!D^403Wlfq5)yNsz04zfD8FQjW62X@I~mh@;71iC`y3UMJ4o** zZ}9`OOn=95DS2UyzLg+);ybQMOHTso{*2Z8savc{tOI9d;C(y!U7ZUgebF4jqWkJX(Ob&!NMZJF#i|!AjkjR%FbL z{112gl8d(DuD*Za;u3GcS>n7&E%!t*m>I(8L%DgVT~)}uF9~vz7hK1}hH<7peJ$>} z=3E8K&z}d+hlqsbsH2vOdp5niY%EeQZ5p(xkgu-BwxCT@K?6X{|NtkB4R3LEW@h^nQh7ea1TqV%$I{NX_gy9wOk@J$%(?8(FOq zXOly8HBm`FeJE%TM5vx|nvMmLKKFa^Wey?^2ZncXlNEY+GPWRPYJ9-TgE)n2Jy8wF zibAWs&L&M;son2%j`yvA%rVe$E>t*^&*oZz_HFP1Q4U3RM|t;4_oZ+a`&$K>D@LnL ze4i0KW3*O<>|13NQ3cvZ4Ccfp;BDR?xWlRXv)-K9$E^BHirQXr-jmQ?O3@GTqZwUP z`P_4xi9$cMb;G?I6w8Sxs*lutnt>uYSul)J_>8+Tf=#~5Fw}kly=5J>&5rSsCMxlX zstC}kB%<@O=ZJIhb^0wy{&>c~OeB-Ro?tT37F=;IO4u(7^dAWAtnU*g*P)Q^Sfc+S z6U&tufMr#EnLOabkmO>LQGh?OqClF<8V|nOXI~`nfeeTbbQK5sRy)5%o*?ieodzJ( zs?$lYO7E@C4U%PgfAu%NRMPSA(8J>s9%e7`Z7Kh3dBwRT(PxNT?dM3DS1d2=C4*m3 z+p>z`uFMFN za^8yhD+WTh<)q8FQ4lz}W2H*=w+c%uB$)B;4_Lfp;Vk>y5tRBoZHmQvI^WDIFtcmQ zY!(H1Zi!$ehX-+l@LEnYuM|DqgC%AxqyC5|YwxU6m?tR9L5{le$9tT1ZGi{2X^(_;Bed&$S5c*T z{VJR$vhn0&b3KUS_N_`S+-fyU%&!wLA&j-@4rLSZnk=I<&$jnwX;~C*xowHAlhHwb z2%pasH#Dzs6!)_8>;UBXN|e)%0N*Fy$(0Wli4eZPGgP*9SGlDEFB1G= zm1ks*{D*>}OgAkn?cmT?D@?A-a~scIJ1le~4awGhA4^0gxz)15?D5e{%Aa31WIfuR zTyh^U;l4ckJ%s=OF3CCej%ZPK`X5#u@6Ri!ozG1zj#jY9+>A|=-y23Ng+CWwG-CAk zP(`-2INnDs^Xs_wVOU$eIB&x%Gn05qID7vC8I0{%l)tCphAy%@$z~%S%PWo~pYQ%gxqOfGF?P)h{{000000RRC2MgRZ+>j?k=007ET^(X)U literal 0 HcmV?d00001 diff --git a/skills/review-subagent/SKILL.md b/skills/review-subagent/SKILL.md new file mode 100644 index 0000000..08d5945 --- /dev/null +++ b/skills/review-subagent/SKILL.md @@ -0,0 +1,81 @@ +--- +name: review-subagent +author: ours +version: 0.1.0 +description: > + Use when you need an independent review of code, a diff, or a spec by a + reviewer subagent in a clean isolated context — invoke the `review_subagent` + tool (default reviewer is your own model; pass `model` to request a specific + one). Triggers: «отревьюй через субагента», «прогони на <модель>», «дай + второй модели посмотреть», "review with a subagent", "have a second model + review this", "review this on ". NOT for the two-axis Standards/Spec + review method (→ code-review) and NOT for spawning fully-isolated processes + (→ review-kit-pi-method). +--- + +# Review Subagent + +Когда нужно независимое ревью кода/диффа/спеки — делегируй его субагенту +через тул `review_subagent`. Ревьюер видит ТОЛЬКО то, что ты передал +(критерий + код): ни истории сессии, ни файловой системы, ни намерений +имплементера. Это убивает «я только что это написал» bias. + +## Когда вызывать + +- Пользователь просит «отревьюй через субагента», «прогони на X-модели», + «пусть вторая модель посмотрит». +- Тебе нужно независимое ревью своего же кода/диффа перед закрытием таски + или перед коммитом — глаза, не знающие замысла. +- Дифф/код лежит в файле (`paths`) или в тексте (`code`), а критерий — что + именно проверить (баги, соответствие спеке, типизация, безопасность…). + +## Как вызывать + +``` +review_subagent: + question: "Критерий: найди баги и проблемы корректности в этом коде." + code: "function sum(a,b){return a-b;}" # inline-текст ИЛИ + paths: ["C:\\abs\\path\\file.ts"] # файлы (тул прочитает сам) + model: "routerai/deepseek/deepseek-v4-pro-0813" # опционально — конкретная +``` + +Правила выбора модели: +- **Дефолт — твоя же модель** (та, что писала код). Пользователь сам решает, + кем ревьюить. +- **Конкретная модель — только по явному запросу** («отревьюй claude», + «прогони на deepseek-pro»): передай `model` как `provider/model`. + Невалидный `model` → ошибка, без авто-фолбэков. +- Не подбирай модель «поумнее» по своей инициативе — это решение пользователя. + +## Правила + +1. **Не ревьюй сам, если просят субагента.** Не подменяй `review_subagent` + собственным анализом — смысл в независимом контексте. +2. **Точечный критерий.** Не «посмотри код», а «проверь X против критерия Y». + Если вердикт не покрыл вопрос — вызови ещё раз с уточнением. +3. **Передавай ровно скоуп.** Файлы/текст, которые относятся к ревью; не тяни + весь репозиторий. Лимиты тула: 20 файлов, 80KB суммарно, 40KB на файл. +4. **Если тул упал** (нет модели, сеть, лимит) — честно скажи пользователю, + что субагент-ревью сейчас недоступен, и предложи путь (передать `model` + явно / уменьшить скоуп). Не «успешно отревьюено». + +## Отношения с другими скиллами + +- `review-kit-pi-method` — spawn ПОЛНОСТЬЮ изолированных процессов + (`pi -p -nc -ns -nt`) для trigger-тестов и чистых вердиктов. Этот тул — + быстрый in-process вариант той же идеи (чистый контекст через + modelRegistry.complete). Для методик с несколькими субагентами — читай + review-kit-pi-method. +- `code-review` — двухосная МЕТОДИКА (Standards + Spec субагенты, отчёт по + диффу с коммита). Этот скилл — МЕХАНИЗМ одного ревью; code-review может + использовать его как исполнителя. +- `caveman-review` — формат комментариев (однострочные L:line). Формат тула — + свободный; форматируй вердикт как требует задача. + +## Реализация тула + +Тул `review_subagent` — pi-расширение: +`~/projects/pi-extensions/extensions/review-subagent.ts` (репо +`OpeItcLoc03/pi-extensions`, дом pi-расширений). Правки — в клоне репо → +`commit + push` → `just install` (затирает home-копию) → `/reload` сессии. +Тот же паттерн, что `describe_image` (vision) и `search_web` (поиск).