OotbDevteam.YoutrackConsole 1.1.0

dotnet tool install --global OotbDevteam.YoutrackConsole --version 1.1.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local OotbDevteam.YoutrackConsole --version 1.1.0
                    
This package contains a .NET tool you can call from the shell/command line.
#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).

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.1.0 84 5/25/2026