framework/skills/tool-usage/review/cross-provider-review/SKILL.md
Для второго ревью другой моделью и debate-сессий
npx skillsauth add steelmorgan/1c-agent-based-dev-framework cross-provider-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Единый навык для cross-family второго мнения. Reviewer является advisory-слоем, не финальным authority, и не должен редактировать реальный проект.
AI governance classification: advice-only. Owner: orchestrator/primary agent. HITL требуется там, где это требуют
workflow, продуктовые или архитектурные approval gates. Quality signal: evidence-backed findings, явная позиция primary
agent, review trace и наблюдаемый lifecycle/cleanup.
.agents/skills/cross-provider-review/scripts/claude_opus_review.py.agents/skills/cross-provider-review/scripts/codex_review.pyНавык работает в двух режимах с разной семантикой приговора:
verdict: PASS — обязательное условие для завершения. Этот режим используется оркестратором ровно один раз в конце задачи, вместо advisory-финала.Режим фиксируется в вводном промпте (via --constraints / --review-ask) — reviewer должен явно знать, blocking у него приговор или advisory.
references/review-prompt.md — default shape для advisory-ревью (task artifacts и acceptance-bound reviews). Может использоваться упрощённо для free-form opinion review / idea critique, пока read-only и evidence boundaries явные.references/finalization-prompt.md — шаблон для gate-режима (финал задачи). Включает жёсткую структуру: bidirectional rule compliance check, goal verification с traceability-таблицей, anti-deception checklist, итерационный протокол с эскалацией пользователю после 3 раундов.Оба adapter поддерживают одинаковый lifecycle:
start: создаёт .review-sandboxes/<review_id>/workspace, материализует focused paths или full context (по умолчанию через hardlink — почти мгновенно и без расхода диска) и запускает reviewer.ask: продолжает сохранённую сессию.debate: обсуждает одну конкретную finding.sync: обновляет sandbox из реальных source paths.status: показывает phase, heartbeat, pid, logs, timeout, result preview и live progress counters.log: показывает prompt/response history.stats: показывает доступные token/cost stats, raw event stats и tool-call counters.show: показывает review metadata, cumulative stats и runtime state одним JSON payload.close: закрывает и по умолчанию удаляет sandbox; --keep-sandbox использовать только для forensic/debug.Status interpretation: движущийся heartbeat означает, что процесс жив; stale heartbeat без stdout/stderr growth является
практическим сигналом stuck-состояния; phase=timeout означает, что один invocation превысил timeout.
close)Уровень: CRITICAL / MUST. Очистка sandbox привязана ИСКЛЮЧИТЕЛЬНО к явному вызову
close. В адаптерах НЕТ автоматической уборки: ниatexit, ни обработчика сигналов, ни TTL/age-sweep, ни сборки осиротевших sandbox приstart. Если агент не дошёл доclose(краш, yield, ветка ошибки/FAIL, эскалация, забывчивость) — каталог.review-sandboxes/<review_id>/вместе с full-context зеркалом источника остаётся на диске навсегда. На практике это уже приводило к десяткам осиротевших каталогов, удалённых вручную.
MUST для каждого start:
| Требование | Описание |
|-----------|----------|
| Парность start↔close | Любой start ОБЯЗАН иметь парный close в том же сеансе работы агента. start без гарантированного close запрещён |
| close во всех ветках | close вызывается на ЛЮБОМ пути завершения: PASS, FAIL, эскалация пользователю, отказ от ревью, ошибка адаптера. Не только на happy path |
| close в финализации | Перед записью final-report.md агент ОБЯЗАН убедиться, что все открытые review закрыты (см. чекпоинт ниже) |
| Отчёт о cleanup | В итоговый отчёт/контекст записывается cleanup status каждого review_id: closed или (редко) kept --keep-sandbox: <причина forensic> |
| --keep-sandbox только обоснованно | Применять ТОЛЬКО для forensic/debug с явной письменной причиной. По умолчанию — обычный close с удалением |
✅ CHECKPOINT перед завершением задачи (выполнить ОБЯЗАТЕЛЬНО):
# 1. Показать все НЕзакрытые sandbox в проекте:
ls -1 .review-sandboxes/ 2>/dev/null
# 2. Для каждого оставшегося <review_id> — закрыть:
<adapter-script> close <review_id>
# 3. Подтвердить, что каталог пуст (ожидается 0):
ls -1 .review-sandboxes/ 2>/dev/null | wc -l
Если шаг 3 вернул не 0 — задача НЕ считается завершённой по части cleanup: закрыть оставшиеся review и только потом
закрывать задачу. Непустой .review-sandboxes/ на момент финального отчёта = нарушение этого навыка.
Start:
.agents/skills/cross-provider-review/scripts/claude_opus_review.py start \
--full-context \
--task "<task>" \
--goal "<review focus>" \
--requirements "<requirements>" \
--constraints "Second-opinion review only. Do not implement fixes." \
--primary-target "<file>" \
--changed-files <file1> <file2> \
--open-concerns "<concerns>" \
--review-ask "Review this artifact as a second opinion. Order findings by severity." \
--question "Perform a second-opinion review of the current work."
Focused/free-form:
.agents/skills/cross-provider-review/scripts/claude_opus_review.py start \
--question "Review this idea and identify the strongest counterarguments." path/to/file.md
Start:
.agents/skills/cross-provider-review/scripts/codex_review.py start \
--full-context \
--task "<task>" \
--goal "<review focus>" \
--artifact-type "<code|tests|architecture|policy|prompt>" \
--requirements "<requirements>" \
--constraints "Second-opinion review only. Do not implement fixes." \
--primary-target "<file>" \
--changed-files <file1> <file2> \
--open-concerns "<concerns>" \
--review-ask "Review this artifact as a second opinion. Order findings by severity." \
--question "Perform a second-opinion review of the current work."
Focused/free-form:
.agents/skills/cross-provider-review/scripts/codex_review.py start \
--question "Review this idea and identify the strongest counterarguments." path/to/file.md
После start используй один и тот же lifecycle для обоих adapters. В примерах ниже <adapter-script> означает выбранный
по routing script:
.agents/skills/cross-provider-review/scripts/claude_opus_review.py.agents/skills/cross-provider-review/scripts/codex_review.py<adapter-script> ask REVIEW_ID --question "..."
<adapter-script> debate REVIEW_ID --issue "F-01" --finding "..." --position "..."
<adapter-script> sync REVIEW_ID
<adapter-script> status REVIEW_ID
<adapter-script> log REVIEW_ID
<adapter-script> stats REVIEW_ID
<adapter-script> show REVIEW_ID
<adapter-script> close REVIEW_ID
Используй status, пока blocking review долго выполняется. Используй sync после изменения source artifacts и перед
follow-up или delta review. Используй log, stats и show для trace/debug; это не обязательные команды каждого
happy path. close --keep-sandbox используй только для редких forensic/debug cases.
status.runtime.progress и stats включают adapter-observable activity для Claude и Codex reviews:
raw_events: количество JSON-событий CLI;event_types: счётчики событий по типам;tool_calls_total: общее число уникальных observed tool/function calls;tool_calls_by_name: счётчики tool/function calls по имени инструмента;unique_tool_call_ids: число уникальных tool/function call ids, если CLI отдаёт ids;tool_result_events: observed tool/function result events;permission_denials: observed permission-denial events;server_tool_use: provider-reported server-side tool counters, если доступны.Это runtime observability, а не замена выводам reviewer. Счётчики помогают отличить реально активное review от процесса, у которого меняется только heartbeat.
--review-id: задать стабильный ID для task traceability.--timeout-sec: изменить timeout одного reviewer invocation.--copy-mode {hardlink,copy}: способ материализации sandbox. hardlink (default) — почти мгновенно, ~0 байт на диске; copy — полный байт-копий. Hardlink автоматически падает в copy при cross-device или unsupported FS.--keep-sandbox: сохранить review files при close только для forensic/debug.--artifact-type, --skills, --reasoning-effort.--model.Для per-artifact acceptance-bound ревью (advisory-режим):
status, если review выполняется долго.F-01...), если reviewer этого не сделал.agree, partial, disagree, withdrawn или out_of_scope.C-01..., если нужно.sync перед follow-up или delta review.ask для follow-up/delta review и debate только для конкретных спорных finding IDs.log, stats или show, когда нужны trace/debug evidence.close REVIEW_ID, как только review больше не нужен (см. раздел «КРИТИЧНО: обязательная очистка sandbox»). Это не «когда удобно», а обязательный шаг закрытия: без него sandbox остаётся на диске навсегда. close вызывается даже если ревью завершилось отказом/ошибкой.closed для каждого review_id) и relevant status/log evidence. Перед закрытием задачи прогони CHECKPOINT из раздела «КРИТИЧНО»: .review-sandboxes/ должен быть пуст.Используется оркестратором один раз в конце задачи. В отличие от advisory-протокола, здесь последнее слово за reviewer'ом.
Предусловие: оркестратор обязан собрать полный evidence pack (см. references/finalization-prompt.md раздел «Входные данные»). Без одного из пунктов reviewer отвечает verdict: FAIL на первом же раунде.
Шаги:
references/finalization-prompt.md. В --constraints укажи: «Finalization gate mode. Verdict is blocking, not advisory. Use bidirectional rule compliance check.»verdict: PASS | FAIL + iteration: N of 3.verdict: PASS — задача может закрываться. Зафиксируй review_id в final-report.md в блоке cross_provider_review.verdict: FAIL — обработай findings evidence-based правками (diff, новый stdout, уточнённый лог). Используй ask для следующего раунда.iteration: 3 и приговор не PASS — reviewer выдаёт escalate_to_user: true с dispute_summary. Оркестратор обязан эскалировать пользователю, передав dispute_summary дословно. Решение пользователя — финальное.close review после задокументированного приговора PASS или user override'а (см. раздел «КРИТИЧНО: обязательная очистка sandbox»). Закрытие gate-review обязательно ВО ВСЕХ исходах, включая эскалацию после 3 раундов: после фиксации приговора/override в final-report.md sandbox должен быть удалён через close. Затем прогони CHECKPOINT: .review-sandboxes/ пуст.Запрещено:
final-report.md + отчёт пользователю «готово») без verdict: PASS или пользовательского override'а..review-sandboxes/ — каждый review_id ОБЯЗАН быть close-нут (см. CHECKPOINT в разделе «КРИТИЧНО»).sync. Сами reviewers строго read-only (см. ниже), поэтому хардлинки безопасны: запись через них невозможна..git, .venv, .review-sandboxes, node_modules, __pycache__, common build outputs, а также .claude, .codex, .cursor, .windsurf, .idea — чтобы reviewer не подхватывал hooks/permissions/MCP-конфиги реального проекта.--sandbox read-only — kernel-level sandbox блокирует любые записи независимо от того, что хочет модель.--tools=Read,Grep,Glob,LS, --permission-mode plan (plan-only mode без write/edit) и --strict-mcp-config (без --mcp-config это означает «никаких MCP-серверов вообще»). Это permission-level гарантия в три слоя.development
1C server maintenance webhooks: container restart and external component cache cleanup
development
Interactive DAP debugging of a single BSL procedure
tools
Rules for using RLM tools for project search and navigation in 1C/BSL
development
Creates web applications and routes on Winow (a web server on OneScript and Autumn). Use when working with a web server on OneScript, routing, or Winow controllers.