Skills yandex-tracker-cli
CLI for Yandex Tracker (bash + curl). Queues, issues, comments, worklogs, attachments, YQL.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bkamuz/yandex-tracker-cli" ~/.claude/skills/openclaw-skills-yandex-tracker-cli && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/bkamuz/yandex-tracker-cli" ~/.openclaw/skills/openclaw-skills-yandex-tracker-cli && rm -rf "$T"
manifest:
skills/bkamuz/yandex-tracker-cli/SKILL.mdsource content
Yandex Tracker CLI Skill
Простой CLI для Yandex Tracker на чистом bash + curl. Работает напрямую через API с правильными заголовками (
X-Org-Id). Не требует внешних зависимостей кроме curl и jq.
Установка
- Скопируйте скрипт в директорию в PATH:
mkdir -p ~/bin cp yandex-tracker.sh ~/bin/yandex-tracker chmod +x ~/bin/yandex-tracker
Или создайте симлинк:
ln -s /path/to/skill/yandex-tracker.sh ~/bin/yandex-tracker
- Предоставьте credentials: нужны TOKEN и ORG_ID — либо через переменные окружения, либо через конфигурационный файл (достаточно одного способа). Скрипт обращается к файлу только если TOKEN/ORG_ID не заданы в окружении.
Вариант A — через переменные окружения (рекомендуется):
export TOKEN='y0__...' # OAuth токен (Tracker UI → Settings → Applications → OAuth) export ORG_ID='1234...' # Org ID (DevTools → Network → X-Org-Id)
Эти переменные можно добавить в
~/.bashrc или ~/.profile.
Вариант B — через конфигурационный файл: Создайте
~/.yandex-tracker-env (скрипт использует его только если TOKEN/ORG_ID не заданы в окружении). Формат — строки KEY=value (комментарии с # игнорируются). Файл читается как текст (парсятся только TOKEN и ORG_ID), без выполнения кода:
TOKEN='y0__...' ORG_ID='1234...'
Предпочтительно задавать учётные данные переменными окружения. Если используете файл — установите права
chmod 600 ~/.yandex-tracker-env.
- Убедитесь, что
установлен:jq
sudo apt install jq # Ubuntu/Debian # или brew install jq # macOS
Использование
Основные команды
| Команда | Описание |
|---|---|
| Список всех очередей (формат: ) |
| Детали очереди (JSON) |
| Все поля очереди (включая локальные) |
| Получить задачу (формат: ) |
| Создать задачу. Автоматически добавляет тег . Доп. поля через stdin (JSON) |
| Обновить задачу. Автоматически добавляет тег если отсутствует. Доп. поля через stdin (JSON) |
| Удалить задачу |
| Добавить комментарий |
| Редактировать комментарий |
| Удалить комментарий |
| Список доступных переходов статсусы (GET) |
| Выполнить переход статуса (POST, V3 endpoint) |
| Закрыть задачу (устарел, может не работать; лучше использовать с переходом ) |
| Добавить worklog (duration: ) |
| Список вложений задачи (JSON) |
| Скачать файл. Если output не указано — stdout |
| Загрузить файл в задачу. Опциональный комментарий |
| Поиск задач через YQL. Запрос JSON через stdin, например: |
| Список всех проектов (JSON) |
| Детали проекта |
| Список задач проекта |
| Список спринтов (Agile) |
| Детали спринта |
| Задачи в спринте |
| Список всех пользователей (справочник) |
| Список всех статусов задач |
| Список разрешений для закрытия задач |
| Список типов задач (bug, task, improvement) |
| Список пунктов чеклиста задачи |
| Добавить пункт в чеклист |
| Отметить пункт как выполненный |
| Удалить пункт чеклиста |
Примеры
# Список очередей yandex-tracker queues # Создать задачу с дополнительными полями echo '{"priority":"critical","description":"Подробности"}' | yandex-tracker issue-create BIMLAB "Новая задача" # Добавить комментарий yandex-tracker issue-comment BIMLAB-266 "Работаю над этим" # Добавить spent time yandex-tracker issue-worklog BIMLAB-266 PT2H "Исследование" # Получить возможные переходы (список) yandex-tracker issue-transitions BIMLAB-266 | jq . # Выполнить переход (например, «Решить») yandex-tracker issue-transition BIMLAB-266 resolve # Закрыть задачу (устарел, лучше использовать transition close) yandex-tracker issue-transition BIMLAB-266 close # Обновить задачу (очередь, исполнитель, проект — id проекта из projects-list) echo '{"queue":"RAZRABOTKA"}' | yandex-tracker issue-update BIMLAB-266 # пример echo '{"assignee":"<uid>","project":123}' | yandex-tracker issue-update BIMLAB-280 # Поиск задач через YQL echo '{"query":"Queue = BIMLAB AND Status = Open","limit":20}' | yandex-tracker issues-search | jq . # Список проектов yandex-tracker projects-list | jq . # Задачи проекта yandex-tracker project-issues 104 | jq . # Вложения (Attachments) # Список вложений yandex-tracker issue-attachments BIMLAB-266 | jq . # Скачать файл (fileId из списка вложений) в указанный путь yandex-tracker attachment-download BIMLAB-266 abc123 /tmp/downloaded.pdf # Загрузить файл в задачу (с комментарием) yandex-tracker attachment-upload BIMLAB-266 /path/to/file.pdf "Служебная записка" # Чеклист (Checklist) — API v3 (checklistItems) # Просмотреть чеклист задачи (id пунктов — строки, например "5fde5f0a1aee261d********") yandex-tracker issue-checklist BIMLAB-279 | jq . # Добавить пункт yandex-tracker checklist-add BIMLAB-279 "Подготовить презентацию" # Отметить пункт как выполненный (item-id из вывода issue-checklist) yandex-tracker checklist-complete BIMLAB-279 "5fde5f0a1aee261d********" # Удалить пункт yandex-tracker checklist-delete BIMLAB-279 "5fde5f0a1aee261d********" # Спринты (Agile) yandex-tracker sprints-list | jq . yandex-tracker sprint-issues 42 | jq . # Справочники yandex-tracker users-list | jq . yandex-tracker statuses-list | jq . yandex-tracker resolutions-list | jq . yandex-tracker issue-types-list | jq . # Редактирование и удаление комментариев yandex-tracker issue-comment-edit BIMLAB-266 12345 "Обновлённый текст" yandex-tracker issue-comment-delete BIMLAB-266 12345 # Переходы статусов # Посмотреть список доступных переходов yandex-tracker issue-transitions BIMLAB-266 | jq . # Выполнить переход (например, «Решить» или «Закрыть») yandex-tracker issue-transition BIMLAB-266 resolve yandex-tracker issue-transition BIMLAB-266 close
Примечания
- Автоматический тег
: При создании (yandex-tracker-cli
) и обновлении (issue-create
) задач скрипт автоматически добавляет тегissue-update
(если он ещё отсутствует). Это помогает фильтровать задачи, созданные через CLI. Если нужно убрать тег — удалите его вручную через интерфейс Tracker или вызовитеyandex-tracker-cli
с пустым массивомissue-update
.tags: [] - Org-ID (Яндекс 360): Найдите в DevTools Tracker → Network → любой запрос → заголовок
. Используется заголовокX-Org-ID
(обратите внимание на заглавные "ID").X-Org-ID - Cloud Org-ID (Yandex Cloud): Используйте заголовок
. В зависимости от типа организации используйте соответствующий заголовок.X-Cloud-Org-ID - Переходы статусов (transitions):
— GET-запрос к V2 endpointissue-transitions <issue-id>
(возвращает список доступных переходов)./v2/issues/{id}/transitions
— POST-запрос к V3 endpointissue-transition <issue-id> <transition-id>
для выполнения перехода. Требует заголовка/v3/issues/{id}/transitions/{transition}/_execute
илиX-Org-ID
.X-Cloud-Org-ID
- Закрытие задач: Команда
устарела и может возвращать 405 в новых конфигурациях. Для закрытия используйтеissue-close
.issue-transition <id> close - Токен можно получить в Tracker UI: Settings → Applications → OAuth → Generate new token.
- Все команды выводят JSON через
для удобной дальнейшей обработки.jq
Security (attachments)
Команды
attachment-download и attachment-upload допускают только пути внутри разрешённой директории. Это снижает риск чтения или записи произвольных файлов при использовании CLI (в т.ч. агентом).
- Первый запуск: при первом вызове
илиattachment-download
(если не заданоattachment-upload
) скрипт в интерактивном режиме спросит: использовать папку по умолчаниюYANDEX_TRACKER_ATTACHMENTS_DIR
или ввести свой путь. Выбор сохраняется в~/Downloads/YandexTrackerCLI
и больше не запрашивается.~/.yandex-tracker-attachments-dir - YANDEX_TRACKER_ATTACHMENTS_DIR — опциональная переменная окружения: базовая директория для вложений. Если задана — используется она (запрос при первом запуске не показывается). Если не задана и нет сохранённого выбора — при первом запуске запрос, иначе используется текущая директория (например, при неинтерактивном запуске).
Когда навык используется AI-агентом:
- Не предлагать и не выполнять
с путём вывода вне разрешённой директории; не использовать чувствительные пути (напримерattachment-download
,~/.ssh
,~/.env
,~/.yandex-tracker-env
, другие конфиги и секреты)./etc - Не предлагать и не выполнять
с файлом вне разрешённой директории; не загружать файлы из чувствительных расположений (тот же список).attachment-upload - Если пользователь просит скачать вложение в чувствительный путь или приложить файл из такого пути — отказать и кратко объяснить ограничение.
Проект по неполному имени (назначить задачу в проект):
Когда пользователь просит добавить задачу в проект, но указывает не полное имя (например «Common», «проект Common», «Менеджер»):
- Получить список проектов:
(илиyandex-tracker projects-list
по известному id).project-get - Найти совпадения по словам: отфильтровать проекты, у которых в названии (
), ключе (name
) или отображаемом имени (key
, если есть) встречаются введённые пользователем слова (желательно без учёта регистра).display - Если найден ровно один проект — показать пользователю: «Добавить задачу в проект «<название>» (id: <id>)?» и при согласии выполнить обновление с этим проектом.
- Если найдено несколько — перечислить их (название и id) и уточнить: «Какой из этих проектов имеется в виду?»
- Если ничего не найдено — сообщить об этом и предложить вызвать
и выбрать вручную.projects-list - Для обновления задачи использовать
: в API v2 в теле PATCH передаётся числовой идентификатор проекта в полеissue-update
:project
. Использовать значениеecho '{"project":<id>}' | yandex-tracker issue-update <issue-id>
из ответа списка/детали проекта (в v2 это shortId/числовой id).id
Структура
skills/yandex-tracker-cli/ ├── yandex-tracker # Исполняемый скрипт ├── SKILL.md # Эта документация ├── ~/.yandex-tracker-env # (опционально, не в репо) Конфиг с TOKEN и ORG_ID └── ~/.yandex-tracker-attachments-dir # (опционально) Сохранённая папка для вложений после первого запроса
Limitations
- Нет пагинации (т. первые 100 элементов)
- Нет продвинутого поиска (
можно добавить)issues_find - Простая валидация аргументов
License
MIT