Files
pi-kit/skills/jira-workflow/SKILL.md
T
dev 7fc16777a6 feat(jira-workflow): add GitLab create-mr.sh helper
- creates a merge request via GitLab API (curl + GITLAB_TOKEN, PRIVATE-TOKEN header)
- derives host + project path from git remote origin (or GITLAB_HOST); no hardcoded URLs
- refuses to open an MR from a protected source branch; MR_PUSH/MR_DRY_RUN toggles
- optionally attaches the MR link to a Jira ticket via link-mr.sh
- verified parsing for ssh (scp-form) and https remotes incl. nested namespaces
2026-07-16 11:34:55 +03:00

4.8 KiB
Raw Blame History

name, description
name description
jira-workflow Используй, когда нужно работать с корпоративным трекером задач (Jira) — прочитать тикет по ключу, добавить комментарий, приложить ссылку на MR, разобраться в статусах и переходах. Применяй при упоминании ключей задач, «тикет», «задача в трекере», «переведи в статус», а также в командах /bugfix и /feature.

Работа с трекером задач (Jira)

Скилл описывает, как читать и обновлять задачи в нашем трекере через REST API.

Откуда берутся адрес и токен

Никогда не хардкодь и не спрашивай их отдельно — они уже есть в окружении.

  • Базовый адрес трекера — из переменной окружения TRACKER_URL. Если она не задана, возьми адрес трекера из корпоративного контекста сессии (его инжектит расширение company-context).
  • Токен доступа — из переменной окружения JIRA_TOKEN (personal access token).
  • Токен в команды и логи не подставляй в открытом виде — скрипты читают его из окружения сами.

Для создания merge request в GitLab дополнительно нужен GITLAB_TOKEN (токен с scope api); хост и путь проекта скрипт определяет из git remote origin (или GITLAB_HOST) — адреса не хардкодятся.

Быстрая проверка окружения:

: "${TRACKER_URL:?установи TRACKER_URL или возьми адрес из корпоративного контекста}"
: "${JIRA_TOKEN:?установи JIRA_TOKEN (personal access token трекера)}"

Готовые скрипты

Все скрипты лежат в scripts/ и читают TRACKER_URL и JIRA_TOKEN из окружения:

  • ./scripts/get-issue.sh <KEY> — получить тикет (поля summary, status, description).
  • ./scripts/add-comment.sh <KEY> "<текст>" — добавить комментарий.
  • ./scripts/link-mr.sh <KEY> "<url-MR>" ["<заголовок>"] — приложить ссылку на MR (добавляется комментарием со ссылкой; при доступном remote link API — см. TODO в скрипте).
  • ./scripts/create-mr.sh "<title>" [target] [source] [jira-key] — создать merge request в GitLab (по текущей ветке), вывести его URL и, если передан jira-key и заданы TRACKER_URL/JIRA_TOKEN, автоматически приложить ссылку к тикету.

Пример:

./scripts/get-issue.sh PROJ-123
./scripts/add-comment.sh PROJ-123 "Начал работу, воспроизвёл баг"
./scripts/link-mr.sh PROJ-123 "https://<git-host>/ai/foo/-/merge_requests/42" "Fix PROJ-123"

# создать MR из текущей ветки в main и сразу привязать к тикету:
GITLAB_TOKEN=... ./scripts/create-mr.sh "Fix PROJ-123: NPE" main "" PROJ-123

Флаги окружения create-mr.sh: GITLAB_TOKEN (обязателен), GITLAB_HOST (override хоста), MR_PUSH=0 (не пушить ветку), MR_DRY_RUN=1 (показать запрос без вызова API). MR из защищённой ветки (main/master/release/*) скрипт создавать откажется.

Соглашения

  • Формат ключей задач: <!-- TODO: например PROJ-123, префиксы проектов -->
  • Статусы и переходы: <!-- TODO: рабочий процесс, напр. To Do → In Progress → In Review → Done -->
  • Кто и когда меняет статус: <!-- TODO: договорённости команды -->
  • Что писать в комментарии при старте/готовности: <!-- TODO -->

Полезное

  • ID переходов статуса можно получить через GET /rest/api/2/issue/<KEY>/transitions, выполнить переход — POST туда же с {"transition":{"id":"<id>"}}.
  • Если API возвращает 401/403 — проверь JIRA_TOKEN и права. Не логируй сам токен.