youtrack-digisal
Interact with YouTrack project management system via REST API.
Installation
npx clawhub@latest install youtrack-digisalView the full skill documentation and source below.
Documentation
YouTrack
YouTrack integration for project management, time tracking, and knowledge base.
Quick Start
Authentication
To generate a permanent token:
export YOUTRACK_TOKEN=your-permanent-token-here
Important: Configure your hourly rate (default $100/hour) by passing --rate to invoice_generator.py or updating hourly_rate parameter in your code.
Then use any YouTrack script:
# List all projects
python3 scripts/youtrack_api.py --url --list-projects
# List issues in a project
python3 scripts/youtrack_api.py --url --list-issues "project: MyProject"
# Generate invoice for a project
python3 scripts/invoice_generator.py --url --project MyProject --month "January 2026" --from-date "2026-01-01"
Python Scripts
scripts/youtrack_api.py
Core API client for all YouTrack operations.
In your Python code:
from youtrack_api import YouTrackAPI
api = YouTrackAPI('', token='your-token')
# Projects
projects = api.get_projects()
project = api.get_project('project-id')
# Issues
issues = api.get_issues(query='project: MyProject')
issue = api.get_issue('issue-id')
# Create issue
api.create_issue('project-id', 'Summary', 'Description')
# Work items (time tracking)
work_items = api.get_work_items('issue-id')
issue_with_time = api.get_issue_with_work_items('issue-id')
# Knowledge base
articles = api.get_articles()
article = api.get_article('article-id')
api.create_article('project-id', 'Title', 'Content')
CLI usage:
python3 scripts/youtrack_api.py --url \
--token YOUR_TOKEN \
--list-projects
python3 scripts/youtrack_api.py --url \
--get-issue ABC-123
python3 scripts/youtrack_api.py --url \
--get-articles
scripts/invoice_generator.py
Generate client invoices from time tracking data.
In your Python code:
from youtrack_api import YouTrackAPI
from invoice_generator import InvoiceGenerator
api = YouTrackAPI('', token='your-token')
generator = InvoiceGenerator(api, hourly_rate=100.0)
# Get time data for a project
project_data = generator.get_project_time_data('project-id', from_date='2026-01-01')
# Generate invoice
invoice_text = generator.generate_invoice_text(project_data, month='January 2026')
print(invoice_text)
CLI usage:
python3 scripts/invoice_generator.py \
--url \
--project MyProject \
--from-date 2026-01-01 \
--month "January 2026" \
--rate 100 \
--format text
Save the text output and print to PDF for clients.
Common Workflows
1. List All Projects
python3 scripts/youtrack_api.py --url --list-projects
2. Find Issues in a Project
# All issues in a project
python3 scripts/youtrack_api.py --url --list-issues "project: MyProject"
# Issues updated since a date
python3 scripts/youtrack_api.py --url --list-issues "project: MyProject updated >= 2026-01-01"
# Issues assigned to you
python3 scripts/youtrack_api.py --url --list-issues "assignee: me"
3. Create a New Issue
from youtrack_api import YouTrackAPI
api = YouTrackAPI('')
api.create_issue(
project_id='MyProject',
summary='Task title',
description='Task description'
)
4. Generate Monthly Invoice
# Generate invoice for January 2026
python3 scripts/invoice_generator.py \
--url \
--project ClientProject \
--from-date 2026-01-01 \
--month "January 2026" \
--rate 100 \
--format text > invoice.txt
Save the text output and print to PDF for clients.
5. Read Knowledge Base
from youtrack_api import YouTrackAPI
api = YouTrackAPI('')
# All articles
articles = api.get_articles()
# Articles for specific project
articles = api.get_articles(project_id='MyProject')
# Get specific article
article = api.get_article('article-id')
Billing Logic
Invoice generator uses this calculation:
Examples:
- 15 minutes → $50 (30 min minimum)
- 35 minutes → $100 (rounded to 60 min)
- 60 minutes → $100
- 67 minutes → $150 (rounded to 90 min)
Environment Variables
YOUTRACK_TOKEN: Your permanent API token (recommended over passing as argument)- Set with
export YOUTRACK_TOKEN=your-token
API Details
See REFERENCES.md for:
- Complete API endpoint documentation
- Query language examples
- Field IDs and structures
Error Handling
Scripts will raise errors for:
- Missing or invalid token
- Network issues
- API errors (404, 403, etc.)
Check stderr for error details.