diff --git a/.opencode/skills/issue/SKILL.md b/.opencode/skills/issue/SKILL.md index f7ca7d2..fd3c688 100644 --- a/.opencode/skills/issue/SKILL.md +++ b/.opencode/skills/issue/SKILL.md @@ -38,6 +38,19 @@ Issue должно содержать всё необходимое, чтобы - `ruff check path/to/file.py` → All checks passed - `mypy path/to/file.py` → no issues +## Acceptance criteria +(явный чек-лист — что должно быть верно в результате, не команды проверки) +- [ ] Эффект A работает в случае B +- [ ] Файл C не содержит паттерн D +- [ ] Тест E покрывает ветку F +- [ ] Coverage ≥ 80% на изменённых файлах + +## Dependencies +(связи с другими issue/PR — блокировки и порядок) +- Blocked by #N (этот PR нельзя начать пока #N не смержен) +- Do not merge until #N merges (этот PR готов, но ждёт #N) +- Part of #N (подзадача родительского issue) + ## Связанные ресурсы - Ref #33 - [PR #34](https://github.com/...) @@ -59,15 +72,18 @@ Issue должно содержать всё необходимое, чтобы ## Использование subagent для создания issue -Когда получает задачу создать issue: +Issue создаёт **subagent** (general type), а не основной агент. Это сохраняет контекст основного агента — длинный body issue не попадает в его историю. +**Main agent** передаёт subagent'у только **intent summary** — короткое описание задачи (1-3 предложения: что и зачем). Subagent делает всё остальное. + +**Subagent (полная ответственность):** 1. Загрузи навык `issue` -2. Собери контекст (прочитай файлы, пойми задачу) -3. **Запусти subagent** для выполнения `gh issue create` — передай ему готовый title и body -4. Subagent создаёт issue и возвращает URL -5. Сообщи URL пользователю +2. Собери контекст — прочитай файлы из intent summary, пойми задачу, оцени объём (правило дробления ниже) +3. Составь self-contained body по шаблону (Контекст → Что сделать → Проверка → Acceptance criteria → Dependencies → Связанные ресурсы) +4. Запусти `gh issue create --title "..." --body "..."` (labels — см. guidance ниже) +5. Верни URL созданного issue основному агенту -Это нужно чтобы длинный body issue не засорял контекст основного агента. +Main agent НЕ пишет body и НЕ запускает `gh issue create` — всё через subagent. Это согласовано с `pipeline-driver` skill (Phase 0: "через subagent с `issue` skill") и `AGENTS.md` (Dev Workflow, step 2: "delegate to `task` subagent"). ## Пример хорошего issue @@ -84,6 +100,14 @@ Zoom breathing падает при включённом geometry crop — crop - `pytest tests/test_effects.py -x -q --no-cov` → all passed - `pytest tests/test_new_effects_real.py::test_geometry_crop_with_zoom_breathing_real` → passed +## Acceptance criteria +- [ ] Geometry crop использует `iw`/`ih`, не `probe.width`/`probe.height` +- [ ] Zoom breathing не падает при включённом geometry crop +- [ ] Регрессионный тест покрывает комбинацию zoom breathing + geometry crop + +## Dependencies +- Closes #33 + ## Связанные ресурсы - Closes #33 ``` @@ -103,19 +127,31 @@ Zoom breathing падает при включённом geometry crop — crop gh issue create \ --title "type(scope): description" \ --body "..." \ - --label "enhancement" + --label "