OotbDevteam.YoutrackConsole
1.1.0
dotnet tool install --global OotbDevteam.YoutrackConsole --version 1.1.0
dotnet new tool-manifest
dotnet tool install --local OotbDevteam.YoutrackConsole --version 1.1.0
#tool dotnet:?package=OotbDevteam.YoutrackConsole&version=1.1.0
nuke :add-package OotbDevteam.YoutrackConsole --version 1.1.0
OotbDevteam.YoutrackConsole
Global CLI for the YouTrack REST API. Issue lifecycle, search, comments, attachments, boards, sprints, projects, tags, and activity history — built for scripts and AI agent workflows.
Command name: youtrack
Publisher: Ootb Devteam
Install
Requires .NET 10.
dotnet tool install --global OotbDevteam.YoutrackConsole
dotnet tool update --global OotbDevteam.YoutrackConsole
dotnet tool uninstall --global OotbDevteam.YoutrackConsole
Environment variables
All configuration is via environment variables. There are no config files and no token files.
| Variable | Required | Default | Purpose |
|---|---|---|---|
YOUTRACK_TOKEN |
Yes | — | Permanent YouTrack bearer token |
YOUTRACK_BASE_URL |
No | https://youtrack.example.org/ |
Instance URL (trailing slash optional) |
YOUTRACK_BUILD |
No | 2025.3.100000 |
YouTrack server build (REST API header) |
YOUTRACK_PAGE_SIZE |
No | 20 |
Default page size for list/search (1–1000) |
YOUTRACK_OUTPUT_FORMAT |
No | text |
Default output when --format omitted: text or json |
Legacy .NET config keys (YouTrack__BaseUrl, etc.) also work if already set.
Setup example:
$env:YOUTRACK_TOKEN = "<permanent-token>"
$env:YOUTRACK_BASE_URL = "https://youtrack.example.org/"
youtrack user me --verbose
Create a token in YouTrack: Profile → Authentication → New token (YouTrack scope).
Global options
Every command accepts:
| Option | Description |
|---|---|
--format text\|json\|csv |
Output format. csv only for issue search. Overrides YOUTRACK_OUTPUT_FORMAT. |
--verbose |
API URLs and HTTP status to stderr. |
--json <string\|-> |
Parameters as JSON literal or stdin. ASCII-only. |
--json-file <path> |
UTF-8 JSON parameters file. Use for non-ASCII text. |
Exit codes: 0 success, 1 error (message on stderr).
JSON input
CLI flags take precedence over JSON. Keys are camelCase.
| Command | JSON keys |
|---|---|
issue get |
issueId |
issue create |
project, summary, description |
issue update |
issueId, field, value |
issue delete |
issueId |
issue search |
query, limit |
issue command |
issueIds (string or array), command |
issue history |
issueId |
issue attach |
issueId, file |
issue attachments download |
issueId, name, output |
comment add/update |
issueId, text, commentId (update only) |
issue link add/remove |
issueId, type, target |
board sprints |
boardId, latest |
board issues |
boardId, currentSprintOnly |
user tickets |
status |
youtrack issue get --json "{\"issueId\":\"ACME-1444\"}"
youtrack comment add ACME-1444 --json-file comment.json
On Windows PowerShell, use --json-file for any payload with diacritics, emoji, or special Unicode.
JSON output (--format json)
Use --format json for agent and script consumption.
issue get
{
"idReadable": "ACME-1444",
"summary": "...",
"description": "...",
"updated": 1700000000000,
"customFields": [
{ "name": "State", "value": { "name": "In Progress" } },
{ "name": "Assignee", "value": { "login": "user", "name": "..." } }
],
"links": [
{
"direction": "OUTWARD",
"linkType": { "name": "Depend", "sourceToTarget": "is required for" },
"issues": [{ "idReadable": "ACME-100", "summary": "..." }]
}
]
}
Read compliance fields from customFields (State, Priority, Assignee, Type, Sprints, Subsystem, etc.).
comment list
JSON array of { "id", "author", "created", "text" }.
issue history
JSON array of activity entries: { "timestamp", "author", "field", "added", "removed", "category" }. Use for audit trails (state changes, assignee changes, tags).
issue search
JSON array of issue summaries, or --format csv with columns: Id, Summary, State, Priority, Assignee, Subsystem, Type.
board issues / user tickets
JSON arrays of issues with sprint/board context.
Mutating commands
Many write commands print text confirmation on success. Use --format json where supported; on failure, exit code 1 and error on stderr.
Commands
youtrack issue get <id> [--format json]
youtrack issue create --project <short> --summary "..." [--description "..."]
youtrack issue update <id> --field State --value "In Progress"
youtrack issue delete <id>
youtrack issue search --query "project: {ACME Platform} State: Backlog" [--format csv]
youtrack issue command <id>[,<id>] --command "tag refinement-required"
youtrack issue history <id>
youtrack comment add <id> --text "..."
youtrack comment list <id>
youtrack issue attach <id> --file ./file.pdf
youtrack issue attachments list <id>
youtrack issue attachments download <id> --name file.pdf --output ./file.pdf
youtrack issue link add <id> --type "depends on" --target OTHER-1
youtrack board sprints <board-id> [--latest]
youtrack board issues <board-id> [--current-sprint-only]
youtrack user me
youtrack user tickets [--status "In Progress"]
youtrack project list
youtrack tag list
Discover board IDs: youtrack user tickets --verbose (board names/IDs on stderr).
Cursor CLI
"permissions": { "allow": ["Shell(youtrack)"], "deny": [] }
Ensure YOUTRACK_TOKEN is set in the environment the agent uses.
Agent skill (Cursor)
The CLI ships via NuGet; the agent skill lives in this repo as SKILL.md.
Copy into your personal skills folder:
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.cursor\skills\youtrack-console"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/ognjenkatic/ootb-devteam/main/youtrack/SKILL.md" -OutFile "$env:USERPROFILE\.cursor\skills\youtrack-console\SKILL.md"
Or download SKILL.md from GitHub and place it at ~/.cursor/skills/youtrack-console/SKILL.md.
Source
https://github.com/ognjenkatic/ootb-devteam/tree/main/youtrack — see DEVELOPMENT.md for building from source.
License
MIT — see LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 84 | 5/25/2026 |