bug-report · diff

git:20261010.bdccdd9 to git:20261019.10080fd

4 added, 2 removed. Audit A to A.

---
name: bug-report
description: Быстрый баг-репорт в Jira. Вызывай по /bug-report. Собирает данные, показывает превью, создает дефект в Jira после подтверждения.
disable-model-invocation: true
allowed-tools:
- AskUserQuestion
- mcp__atlassian__jira_create_issue
- mcp__atlassian__jira_update_issue
- mcp__atlassian__jira_search_fields
- mcp__atlassian__jira_get_field_options
- mcp__atlassian__jira_get_issue
---
Ты помогаешь быстро завести баг в Jira. Работай по этому алгоритму:
## 0. Конфигурация проекта (заполните под свой Jira)
Значения ниже — пример; адаптируйте под свой инстанс (прямо здесь или в `CLAUDE.md` проекта):
- **Проект по умолчанию:** `PROJ`
- **Тип задачи для дефекта:** `Bug` (проверьте точное имя типа в своём проекте — в русскоязычных инстансах часто «Дефект»)
- **Значения приоритета:** как в вашем Jira (напр. Highest / High / Medium / Low — или локализованные)
- **Обязательные кастомные поля:** во многих проектах создание тикета падает без них. Пример формата:
- `customfield_XXXXX` (Team): `"..."`
- `customfield_XXXXX` (Среда обнаружения): `{"value": "Test"}`; для бага, найденного на проде — `{"value": "Prod"}`
Свои поля и допустимые значения найдите через `jira_search_fields` и `jira_get_field_options`, либо посмотрите заполненные поля свежего дефекта коллег через `jira_get_issue`.
Две частые ловушки. Первая: форма записи не совпадает с формой чтения - часть полей принимает только строку и отвечает ошибкой «не найдено значение» на объект `{"value": ...}`, хотя при чтении того же поля возвращается именно объект; не копируйте прочитанное обратно в запись вслепую. Вторая: уровень безопасности (`security`) в закрытых проектах обязателен, но в сообщении об ошибке называется не всегда. Собрав рабочий набор один раз, зафиксируйте его в локальном скилле или памяти проекта - иначе каждое заведение дефекта начинается с доисследования.
## 1. Сбор данных
Если пользователь передал описание бага в аргументах - используй его.
Если нет - задай вопросы через AskUserQuestion:
Обязательные данные:
- Что произошло (фактический результат)
- Что ожидалось (ожидаемый результат)
- Шаги воспроизведения
- Окружение (стенд, браузер, устройство)
+ - Место: URL, блок или элемент (видимым признаком), где воспроизводится и где нет (другие страницы того же типа, браузеры, вьюпорты). Обобщение «везде» - только после проверки каждого места, иначе «проверено на A и B». В описании место идёт в шаги (URL) и фактический результат (блок, где есть и где нет)
Опциональные:
- Проект (по умолчанию — из конфигурации)
- Приоритет (если не задан, выводится из масштаба, см. раздел 2)
- Assignee
## 2. Формат тикета
Тип и приоритет — по конфигурации (раздел 0).
**Приоритет - из масштаба.** Агент склонен раздувать находку: раз дефект настоящий, значит «критично». Поэтому перед превью ответить фактами из прогона:
- кого задевает сейчас: всех пользователей страницы / один вьюпорт или браузер / одно состояние или сценарий; прод или только стенд (если функция на проде еще не выкачена или выключена, это стенд);
- что теряет пользователь: не может выполнить действие (отправить заявку, оплатить, войти) / выполняет его с обходом / видит визуальное расхождение, которое на действие не влияет.
Приоритет по ответам (уровни - из раздела 0): ключевое действие не выполняется на проде или в задаче, которая идет в релиз - High; действие выполняется с обходом или задет узкий срез - Medium; визуальное расхождение - Low. Если масштаб установить не удалось (нет доступа к проду, непонятно, кого задевает), так и написать, указать, что нужно для установки, а приоритет пометить «на решение пользователя». Если пользователь задал приоритет сам, ставить его, но масштаб все равно показать.
Заголовок (summary): краткое описание проблемы, без префиксов [BUG] и т.п.
Структура description - plain text с bold-заголовками:
```
**Шаги воспроизведения:**
1. Шаг 1
2. Шаг 2
**Фактический результат:**
Описание того, что происходит.
**Ожидаемый результат:**
Описание того, что должно происходить.
**Окружение:**
Стенд/браузер/устройство.
```
- Если нужны предусловия - добавить блок **Предусловия:** перед шагами.
- Если есть полезный контекст - добавить блок **Дополнительно:** в конце.
+ Блок **Предусловия:** (перед шагами) добавлять ТОЛЬКО когда без него баг не воспроизвести: конкретная роль или учётка, состояние данных (заполненная корзина, оформленный заказ), включённый фиче-флаг, пройденный предыдущий шаг флоу. Формальные фразы вида «блок выкачен на стенд», «страница доступна», «браузер открыт» - мусор, их не писать: если предусловие следует из первого шага или из самого факта тестирования, блока быть не должно.
+ Блок **Дополнительно:** (в конце) - только по явному запросу пользователя. Служебный контекст прогона (номер тест-цикла, ключи ТК, номера находок из отчёта) в тикет не выносить.
## 3. Правила текста
- Не использовать markdown-заголовки (##), только **bold** — Jira рендерит description не как markdown; проверьте рендеринг на своём инстансе
- Не использовать таблицы в description
- Не использовать обратные кавычки (inline code) в description и комментариях: пути API, эндпоинты, методы, значения полей писать обычным текстом. В зависимости от трекера они выходят моноширинными «кодовыми» кусками посреди фразы или буквальными кавычками. Перед превью и перед create/update вычитать текст на наличие обратных кавычек
- Язык — принятый в вашем трекере
- Названия браузеров писать в пользовательском виде: Chrome (не Chromium), Safari (не WebKit). Это касается и движка тестирования (прогон в Chromium → пишем «Chrome», в WebKit → «Safari»)
+ - Не упоминать в description имена файлов, которые не приложены к тикету: имена картинок из CMS, ассетов, скриншотов из рабочей папки прогона, логов. Читатель принимает их за вложения и идёт искать несуществующее. Отличать элемент по видимому признаку (подпись, заголовок, позиция), а не по имени файла; если имя файла реально нужно разработчику - приложить сам файл или дать ссылку на него
- Не линковать созданный баг с другими тикетами автоматически — только по явной просьбе пользователя
## 4. Превью перед созданием
ОБЯЗАТЕЛЬНО показать пользователю полный текст тикета и дождаться подтверждения перед вызовом mcp__atlassian__jira_create_issue. Формат превью:
```
**Тип:** Bug
**Приоритет:** Medium
**Масштаб:** <кого задевает сейчас>; <что теряет пользователь> → <почему такой приоритет> (только в превью, в Jira не уходит)
**Assignee:** (если указан)
**Проект:** PROJ
**Заголовок:** ...
**Описание:**
(полный текст description)
```
Только после явного подтверждения ("да", "ок", "создавай") - вызывать API создания.
## 5. После создания
Вывести ключ и ссылку на созданный тикет. Если assignee не назначился - предупредить.
**Скриншоты:** если в сессии есть скриншоты бага (пути к файлам) - после создания прикрепить их через `mcp__atlassian__jira_update_issue` (параметр `attachments`, пути через запятую). Скрин должен быть точечным (проблемный элемент крупно), не fullPage всей страницы. Если подходящего скрина нет - предложить пользователю снять и приложить.