From a2666183f837240304ee51e7f07d11dd80a6f208 Mon Sep 17 00:00:00 2001 From: Sergey <93754860+slaid098@users.noreply.github.com> Date: Sat, 25 Jul 2026 18:46:16 +0300 Subject: [PATCH] fix(agents+skills): enforce tool-usage policy across prompts and skills (#63) * fix(agents): add tool usage policy to AGENTS.md * fix(skills): replace raw bash with tools in 6 skills * feat(skills): restore tunnel skill * docs(handoff): scaffold handoff and ADR for PR * docs(handoff): set PR number * docs(project-map): add tunnel skill + tool usage policy note (PR#63) --------- Co-authored-by: opencode-agent --- .opencode/skills/add-skill/SKILL.md | 10 +- .opencode/skills/issue/SKILL.md | 26 ++-- .opencode/skills/release/SKILL.md | 7 +- .opencode/skills/repo-init/SKILL.md | 7 +- .opencode/skills/run-pipeline/SKILL.md | 22 ++-- .opencode/skills/spec/SKILL.md | 8 +- .opencode/skills/tunnel/SKILL.md | 13 ++ AGENTS.md | 23 ++++ .../026-pr-63-enforce-tool-usage-policy.md | 116 ++++++++++++++++++ .../pr-63-enforce-tool-usage-policy.md | 86 +++++++++++++ docs/project-map/README.md | 3 +- 11 files changed, 294 insertions(+), 27 deletions(-) create mode 100644 .opencode/skills/tunnel/SKILL.md create mode 100644 docs/decisions/026-pr-63-enforce-tool-usage-policy.md create mode 100644 docs/handoff/pr-63-enforce-tool-usage-policy.md diff --git a/.opencode/skills/add-skill/SKILL.md b/.opencode/skills/add-skill/SKILL.md index 913434d..45c17eb 100644 --- a/.opencode/skills/add-skill/SKILL.md +++ b/.opencode/skills/add-skill/SKILL.md @@ -67,10 +67,16 @@ Implementing agent (subagent, которому делегировано созд ```bash cd "$(git rev-parse --show-toplevel)" git add .opencode/skills//SKILL.md -git commit -m "feat(skills): add skill for " -git push ``` +Затем через `commit` tool (НЕ raw `git commit` — заблокирован deny): + +``` +commit({ message: "feat(skills): add skill for " }) +``` + +Затем `git push`. + ## 5. Инструкция пользователю После push сообщить пользователю: diff --git a/.opencode/skills/issue/SKILL.md b/.opencode/skills/issue/SKILL.md index 98128c8..9475685 100644 --- a/.opencode/skills/issue/SKILL.md +++ b/.opencode/skills/issue/SKILL.md @@ -80,10 +80,10 @@ Issue создаёт **subagent** (general type), а не основной аг 1. Загрузи навык `issue` 2. Собери контекст — прочитай файлы из intent summary, пойми задачу, оцени объём (правило дробления ниже) 3. Составь self-contained body по шаблону (Контекст → Что сделать → Проверка → Acceptance criteria → Dependencies → Связанные ресурсы) -4. Запусти `gh issue create --title "..." --body "..."` (labels — см. guidance ниже) +4. Запусти `create_issue({ title: "...", body: "...", labels: ["..."] })` tool (НЕ raw `gh issue create` — заблокирован deny; tool валидирует conventional title format и headings `## Контекст`/`## Задача`/`## Критерии приемки`) 5. Верни URL созданного issue основному агенту -Main agent НЕ пишет body и НЕ запускает `gh issue create` — всё через subagent. Это согласовано с `run-pipeline` skill (Phase 0: "через subagent с `issue` skill") и `AGENTS.md` (Dev Workflow, step 2: "delegate to `task` subagent"). +Main agent НЕ пишет body и НЕ запускает `create_issue` — всё через subagent. Это согласовано с `run-pipeline` skill (Phase 0: "через subagent с `issue` skill") и `AGENTS.md` (Dev Workflow, step 2: "delegate to `task` subagent"). ## Пример хорошего issue @@ -123,12 +123,16 @@ Zoom breathing падает при включённом geometry crop — crop ## Команда создания -```bash -gh issue create \ - --title "type(scope): description" \ - --body "..." \ - --label "