Generate progress reports from Linear, Jira, and other project management tools.
uv syncGenerate a progress report for Linear projects:
# Single project, last 7 days (default)
tlr linear "My Project"
# Multiple projects
tlr linear "Engineering" "Infrastructure" --days 14
# Output to file
tlr linear "ENG" --days 7 --output report.mdThe Linear API key is stored in Mac Keychain. On first run, you'll be prompted to enter your API key.
Get your Linear API key from: https://linear.app/settings/api
uv syncuv run pytestuv run mypyuv run ruff check .
uv run ruff format .tlr/
├── linear/ # Linear service (API client, models)
├── reporters/ # Output formatters (markdown, json)
├── models.py # Common data structures
├── secrets.py # Credential management
└── cli.py # CLI interface
- Create service directory (e.g.,
tlr/jira/) - Implement API client functions
- Define service-specific Pydantic models
- Write
transform_to_report()function returningProjectReport - Add CLI subcommand in
cli.py
The reporting layer (reporters/markdown.py) works with any service that returns ProjectReport.
- Services are NOT interchangeable - each has unique functionality
- Composable design - reporters can combine output from multiple services
- Testing focus - comprehensive tests for reporting layer
The original tlr-linear_progress.py script has been refactored into:
tlr/linear/client.py- Linear API functionstlr/linear/models.py- Pydantic models for validationtlr/reporters/markdown.py- Report generationtlr/cli.py- CLI interface
Run the new version:
tlr linear "Project Name" --days 7