Download the PHP package visualbuilder/youtrack-cli without Composer
On this page you can find all versions of the php package visualbuilder/youtrack-cli. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download visualbuilder/youtrack-cli
More information about visualbuilder/youtrack-cli
Files in visualbuilder/youtrack-cli
Package youtrack-cli
Short Description Laravel artisan commands for YouTrack workflow automation — extracted so dev-agent and any consumer Laravel project share one source of truth.
License GPL-2.0-or-later
Homepage https://github.com/visualbuilder/youtrack-cli
Informations about the package youtrack-cli
YouTrack CLI
Laravel artisan commands, MCP tools, and a webhook receiver for driving YouTrack issue workflows from terminals, scripts, and AI agents.
20 commands, 20 MCP tools, structured-error JSON envelopes, multi-instance config, signed-webhook receiver. Designed to be the source of truth any consumer (coding agent, CI pipeline, developer's terminal, MCP-aware IDE, slash command) can call.
Install
The service provider auto-registers; no manual wiring needed. Optionally publish the config to override workflow state names:
If you drive YouTrack with Claude Code, install the bundled slash-command skill into your host's .claude/commands/:
/youtrack then gives Claude the full command surface, lifecycle walkthrough, and project-setup pointers as context.
Configure
Set in your host .env:
Workflow-state names default to a sensible 10-step lifecycle (Ready for Dev → In Progress → Code Review → … → Done) and are env-overridable via config/youtrack.php.
Custom priority and type vocabularies
Hosts that don't use the stock Bug / Feature / Task types or P1–P5 priority grades configure their own under youtrack.priorities and youtrack.types:
The values arrays drive the CreateIssue MCP tool's JSON-schema enums, so AI agents see exactly which values your YouTrack project accepts. Leave a list empty to disable the constraint and fall back to "anything goes".
Multi-workspace
Talking to more than one YouTrack workspace? Add another entry under youtrack.connections:
Every artisan command accepts --instance=NAME; programmatic callers use (new YouTrackService())->on('support') or app(IssueService::class)->on('support'). Single-workspace hosts only need the default entry.
MCP server (optional)
When laravel/mcp is installed, the package registers a youtrack MCP server exposing every artisan command as an agent-callable tool. Disable via YOUTRACK_MCP_ENABLED=false if you want CLI-only.
Webhook receiver
Inbound YouTrack webhooks land at POST /youtrack/webhook. Configure the same secret in your YouTrack project's webhook settings and in .env:
Subscribe to Visualbuilder\YoutrackCli\Events\YoutrackWebhookReceived from the host's EventServiceProvider to react to deliveries. The package itself ships zero default behaviour — what to do with an event is a host concern. Idempotent on X-YouTrack-Delivery-Id for 24h.
YouTrack project setup
The CLI reads YouTrack custom fields by exact name. Two configurable buckets:
Required fields (stock YouTrack defaults)
The CLI cannot do useful work without these. They're shipped with every YouTrack project — nothing to configure unless your project has been customised.
| What we call it | YouTrack custom field | YouTrack type | Used by |
|---|---|---|---|
| state | Status |
state (single) | every list-by-state command, update-state, normalised state key |
| priority | Priority |
enum (single) | create-issue --priority=P3, normalised priority key |
| type | Type |
enum (single) | create-issue --type=Bug, normalised type key |
"state" vs "Status" — we picked state as the public-surface name (it's the standard term in workflow engines), but on the wire the package reads/writes YouTrack's
Statuscustom field. They mean the same thing: the column a ticket sits in on your kanban board.
If your project diverges (some YouTrack tenants enforce additional required fields), extend the list:
Recommended fields (host-specific)
Empty by default — populate with whatever fields your workflow expects beyond the stock trio. Examples from the agentic ecosystem this package was extracted from:
| Example field | YouTrack type | What it'd be for |
|---|---|---|
PR URL |
string | a dev-agent saving the GitHub PR URL after opening it |
Error Count |
integer | a log monitor storing occurrence counts per error fingerprint |
System Area |
enum (single) | routing tickets to subsystems |
Add these in Project Settings → Fields in the YouTrack UI. They're optional — youtrack:check-project reports them as recommended.missing rather than failing.
Anything else
Custom fields not in either list still work transparently — get-issue returns the full untouched custom_fields map, and set-field writes any field by exact name:
Verifying your setup
Run the doctor command after configuring the project — it returns exit code 0 when every required field is present and 1 when something's missing.
Recommended state vocabulary
The package's default state names match a ten-step development lifecycle. If your YouTrack project's Status enum values are different, override them in config/youtrack.php (or via env in your service provider) — every list/update command resolves through that map, no hard-coded strings in command bodies.
| Config key | Default value |
|---|---|
youtrack.states.ready |
Ready for Dev |
youtrack.states.plan_review |
Plan Review |
youtrack.states.in_progress |
In Progress |
youtrack.states.code_review |
Code Review |
youtrack.states.developer_approved |
Developer Approved |
youtrack.states.ready_for_qa |
Ready for QA |
youtrack.states.ready_for_staging |
Ready for Staging |
youtrack.states.staging_review |
Staging Review |
youtrack.states.ready_for_production |
Ready for Production |
youtrack.states.done |
Done |
Adding new states is a config-only change; the CLI never hard-codes a value beyond what config('youtrack.states.*') returns.
Commands
Every command writes a JSON document to stdout — friendly for jq, AI agents, and shell pipelines.
Listing tickets by state
Inspecting one ticket
Returns full details: summary, description, state, priority, type, custom fields (PR URL, assignee, etc.), and every comment.
Searching
Free-text search over summaries and descriptions.
Creating a ticket
Defaults: --type=Bug, --priority=P3 (valid: P0 highest — P5 lowest, types: Bug, Enhancement, Feature, …).
Moving workflow state
Pass the human-readable state name exactly as it appears on your board.
Custom fields
Common one — saves a PR link as a custom field on the ticket.
Comments
Markdown supported.
Bulk fingerprint search
Hits multiple error-fingerprint hashes in a single API call — used by error-monitoring pipelines to dedupe before opening new tickets.
Checking project setup
Audits the project's custom fields against tier 1 (required) and tier 2 (recommended). Exit code 0 when ready, 1 when a tier-1 field is missing or the project doesn't exist. See YouTrack project setup below.
Programmatic use
Inject the service classes:
IssueService wraps every command's logic; YouTrackService is the underlying HTTP client.
License
GPL-2.0-or-later.
All versions of youtrack-cli with dependencies
illuminate/console Version ^11.0 || ^12.0
illuminate/http Version ^11.0 || ^12.0
illuminate/support Version ^11.0 || ^12.0
spatie/laravel-package-tools Version ^1.16