yt это CLI для работы с TailDay YouTrack и базой знаний. Инструмент в первую очередь сделан для ИИ-агентов, которые должны безопасно и предсказуемо читать задачи, строить дерево подзадач, менять статусы, оставлять комментарии, искать задачи и работать со статьями knowledge base.
Обычному пользователю не нужно глубоко разбираться в том, как внутри устроен API-слой. Практически все, что важно для запуска, это:
- установить CLI;
- настроить доступ к YouTrack;
- установить Codex skill для этого инструмента.
Если ваша цель именно использовать yt из Codex, основной фокус должен быть на установке и конфигурации. Внутреннее устройство api/ имеет смысл изучать только если вы собираетесь дорабатывать сам инструмент.
Готовый skill для Codex лежит в репозитории здесь:
skills-codex/yt
Отдельную корневую папку yt/ в этом репозитории сделать нельзя, потому что имя yt уже занято исполняемым CLI-файлом в корне проекта.
Установка CLI:
brew install TailDayDev/tap/ytСоздание токена YouTrack:
- В левом нижнем углу YouTrack нажмите на свой профиль и откройте
Профиль. - Перейдите в раздел
Безопасность аккаунта. - В блоке
ТокенынажмитеНовый токен.... - Создайте постоянный токен с доступом к
YouTrack. - Скопируйте полученное значение
perm-...и сохраните его. Дальше этот токен нужен для командыyt config set token ....
Подсказка по интерфейсу:
- Переход в профиль:
Screenshot 2026-04-06 at 10.31.05.png - Раздел безопасности и токены:
Screenshot 2026-04-06 at 10.31.36.png
Настройка доступа:
yt config set token "perm-..."
yt config set base-url "https://underogat.youtrack.cloud"
yt config set project "TailDay"
yt config resolvedУстановка skill в Codex:
mkdir -p ~/.codex/skills
cp -R /opt/homebrew/opt/yt/libexec/skills-codex/yt ~/.codex/skills/ytЕсли вы работаете не из brew, можно взять skill прямо из репозитория:
mkdir -p ~/.codex/skills
cp -R skills-codex/yt ~/.codex/skills/ytПосле этого Codex сможет использовать yt как специализированный skill для работы с TailDay YouTrack.
Standalone TailDay YouTrack CLI distributed as the yt command.
.
├── yt
├── api
├── config
├── skills-codex
├── tests
├── yt_params_schema.js
└── README.md
Здесь yt в корне это исполняемый CLI-файл, а Codex skill лежит в skills-codex/yt.
YOUTRACK_BASE_URLcan be provided from env. If omitted, the CLI falls back tohttps://underogat.youtrack.cloud.YOUTRACK_BEARER_TOKENis required unlessYT_BEARER_TOKENis set.- Optional:
YOUTRACK_LOG_LEVEL=debugYOUTRACK_TIMEOUT_MS=20000YOUTRACK_MAX_RETRIES=4
Persistent CLI config:
yt config set token "perm-..."
yt config set base-url "https://underogat.youtrack.cloud"
yt config set project "TailDay"
yt config listExample:
export YOUTRACK_BASE_URL="https://your-instance.youtrack.cloud"
export YOUTRACK_BEARER_TOKEN="perm-..."
yt get TAILDAY-802Homebrew install:
brew install TailDayDev/tap/yt- Transport uses
Authorization: Bearer <token>. - Precedence is: command flags -> shell env -> user config file -> defaults.
YOUTRACK_BEARER_TOKENis read from env first, thenYT_BEARER_TOKEN, thenyt configstorage.- The base URL is read from env first and then falls back to
yt configorconfig/index.js. - User config is stored at
~/.config/tailday/yt.jsonunlessXDG_CONFIG_HOMEis set.
Primary entrypoint:
yt get ISSUE
yt subtasks ISSUE
yt create-subtask ISSUE --summary "Title" --description "Body"
yt status ISSUE
yt status ISSUE "In Progress"
yt comment ISSUE "Text"
yt search "project: TailDay #Unresolved"
yt scenario TAILDAY-802Global overrides:
yt --token "perm-..." --base-url "https://underogat.youtrack.cloud" get TAILDAY-802
yt --project TailDay --timeout-ms 30000 search "#Unresolved"Config commands:
yt config path
yt config list
yt config resolved
yt config get token
yt config set token "perm-..."
yt config set base-url "https://underogat.youtrack.cloud"
yt config unset token
yt config init --token "perm-..." --base-url "https://underogat.youtrack.cloud" --project TailDayCommand notes:
getprints a normalized issue payload.subtasksprints the subtask tree and the raw normalized structure.create-subtaskcreates a new issue inTailDay, applies default custom fields, then links it as a subtask.statuswithout a second argument reads the current status. With a second argument it updates the status.commentadds a plain-text comment.searchruns a YouTrack query and returns normalized issues.scenarioexecutes theTAILDAY-802integration flow and accepts--cleanup.
Homebrew:
brew tap TailDayDev/tap
brew install ytLocal development:
git clone [email protected]:TailDayDev/yt.git
cd yt
./yt helpВ репозитории skill лежит в Codex-совместимом виде:
skills-codex/yt/SKILL.md
Если вы хотите, чтобы агент автоматически подхватывал этот workflow, проще копировать сразу всю папку:
mkdir -p ~/.codex/skills
cp -R skills-codex/yt ~/.codex/skills/ytconfigresolves env, token, and runtime defaults.api/client.jshandles retries, request logging, rate-limit backoff, and error normalization.api/youtrack-api.jsexposes the main wrapper functions:getIssuelistSubtaskscreateSubtaskupdateStatusaddCommentsearchIssues
api/types.d.tsprovides typed response contracts for editor and TypeScript consumers.yt_params_schema.jsis the local TailDay schema source.
tests/scenario.js automates the requested TAILDAY-802 flow:
- Reads issue title, description, status, and assignee.
- Reads subtask hierarchy.
- Creates subtask
Тест Таск. - Applies the default status flow
Open -> In Progress -> Done. - Adds the comment
Test automation complete.
TailDay-specific note:
- The real
Stagebundle in YouTrack is not a literalOpen -> In Progress -> Donechain. - The CLI/API resolves aliases against the actual project states. For example, in the current TailDay project
Openresolves toBacklog.
Run it with:
yt scenario TAILDAY-802
yt scenario TAILDAY-802 --cleanuptests/yt.integration.test.js runs a live integration sequence and verifies:
- issue exists
- subtask created
- status changed
- comment added
- cleanup removed the created subtask
The test suite only runs when YOUTRACK_RUN_LIVE_TESTS=1 is present and the resolved config has a base URL.
Example:
YOUTRACK_RUN_LIVE_TESTS=1 npx -y [email protected] tests/yt.integration.test.js --runInBand --config '{"testEnvironment":"node","transform":{}}'yt versionCurrent extension hooks are intentionally lightweight and live in api/hooks.js.
Planned hooks already have stable attachment points for:
- webhook support
- event-driven mode
- git integration
- AI planning layer
- batch migration tool
Add new adapters around those factories instead of rewriting the API layer.
skills-codex/yt/SKILL.md defines the Codex skill for this CLI. Use it when a Codex agent should manipulate issues, inspect hierarchies, work with knowledge base articles, or run regression-style task orchestration against YouTrack.