Bridge between Jira tickets and your local development workflow
Project description
⚡ Jitly
Bridge between Jira tickets and your local Git workflow.
Stop switching between Jira, terminal, and GitHub. Jitly connects them all — one command to start a ticket, one command to finish it.
jitly start ABC-123 # pulls base, creates branch, moves ticket → In Progress
jitly done # commits, pushes, moves ticket → Done
Why Jitly?
Every developer has done this manually:
- Open Jira → find ticket → copy ticket ID
git checkout main && git pullgit checkout -b feature/ABC-123-some-long-name- Do the work...
git add . && git commit -m "ABC-123: did the thing"git push --set-upstream origin feature/ABC-123-some-long-name- Go back to Jira → move ticket to Done
Jitly automates all of this. You define your team's policies once (branch naming, base branch, commit format) and Jitly enforces them automatically — for every developer on the team.
Installation
pip install jitly
Works on macOS, Windows, and Linux with Python 3.9+.
Quick Start
Step 1 — Login to Jira
jitly auth login
Choose how you want to authenticate:
| Method | Best for |
|---|---|
| SSO / OAuth2 (browser) | Jira Cloud with SSO |
| API Token | Jira Cloud (email + token) |
| PAT / Password | Jira Server or Data Center |
Step 2 — Link your repo
Inside your git project:
jitly init
Connects the repo to a Jira project. Saves config to .jitly.yaml.
Step 3 — Set your workflow policy
jitly policy setup
Answer a few questions — set once, applies forever:
? Base branch to pull from: main
? Branch name template: feature/{ticket_lower}-{desc}
? Auto-pull base before branching? Yes
? Commit message template: {ticket}: {desc}
Step 4 — Start a ticket
jitly start ABC-123
Jitly will:
- ✅ Fetch ticket details from Jira
- ✅ Handle uncommitted changes (stash / push / cancel — your choice)
- ✅ Pull latest from base branch
- ✅ Create
feature/abc-123-your-ticket-title - ✅ Move ticket to In Progress on Jira
Step 5 — Finish the ticket
jitly done
Jitly will:
- ✅ Commit all changes (auto-fills message from ticket)
- ✅ Push to remote
- ✅ Move ticket to Done / In Review / Ready for QA
Branch Name Templates
Customize how branches are named using tokens:
| Token | Output |
|---|---|
{ticket} |
ABC-123 |
{ticket_lower} |
abc-123 |
{desc} |
add-login-page (slugified summary) |
Examples:
feature/{ticket_lower}-{desc} → feature/abc-123-add-login-page
{ticket}/{desc} → ABC-123/add-login-page
bugfix/{ticket_lower} → bugfix/abc-123
Commit Message Templates
| Token | Value |
|---|---|
{ticket} |
Jira ticket ID |
{desc} |
Ticket summary |
{message} |
What you type at prompt |
Examples:
{ticket}: {desc} → ABC-123: Add login page
[{ticket}] {message} → [ABC-123] fixed null pointer issue
feat({ticket}): {desc} → feat(ABC-123): Add login page
Smart Branch Detection
If someone already started working on ABC-123 and pushed a branch — Jitly detects it automatically:
Branch feature/abc-123-add-login already exists on remote.
Someone may have already started this ticket. Fetching their work...
✓ Checked out existing branch feature/abc-123-add-login
No manual git fetch or git checkout needed. Continue right where they left off.
Uncommitted Changes Handling
Run jitly start while you have unsaved work? Jitly asks:
? You have uncommitted changes on feature/old-branch. What would you like to do?
> stash — save changes and continue to new ticket
push — commit & push current changes first
cancel — abort
All Commands
jitly auth login Login to Jira (SSO, API token, or PAT)
jitly auth logout Remove saved credentials
jitly auth whoami Show currently logged in user
jitly init Link this repo to a Jira project
jitly policy setup Interactive policy wizard
jitly policy show View current policy
jitly policy set Set a single policy value
jitly start <TICKET> Start working on a Jira ticket
jitly done Commit, push, and wrap up current ticket
jitly status Show active ticket, branch, and git state
Supported Jira Versions
| Version | Auth Method |
|---|---|
| Jira Cloud | SSO / OAuth2, API Token |
| Jira Server | PAT, Username + Password |
| Jira Data Center | PAT, Username + Password |
Configuration
Jitly stores your global config at ~/.config/jitly/config.yaml.
Per-project config is saved in .jitly.yaml (add to .gitignore if it contains sensitive info).
Environment variables:
| Variable | Default | Description |
|---|---|---|
JITLY_OAUTH_CLIENT_ID |
— | Atlassian OAuth2 client ID |
JITLY_OAUTH_CLIENT_SECRET |
— | Atlassian OAuth2 client secret |
JITLY_OAUTH_PORT |
8727 |
Local port for OAuth callback |
JITLY_BACKEND_URL |
https://p01--jitly--m27kcmkbzyf2.code.run |
Jitly backend URL |
Requirements
- Python 3.9+
- Git
Links
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jitly-0.1.4.tar.gz.
File metadata
- Download URL: jitly-0.1.4.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef0f159f15fdcbd7af1cd90a474b828737174b6a5021f4701fd1835e77a2939a
|
|
| MD5 |
b4026cfe764f9692b6272fca7044543e
|
|
| BLAKE2b-256 |
b0730f4ca8fe92dd8c05cf9799a58fab8d2d4ef21e82492a4f7a1f98bc241d25
|
File details
Details for the file jitly-0.1.4-py3-none-any.whl.
File metadata
- Download URL: jitly-0.1.4-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afaf22147721ee1326cefee4ef4ce25466c0fa6e8e26516264ff81eb6292944f
|
|
| MD5 |
00d28ebd6c0e33383d3141fb9537a83e
|
|
| BLAKE2b-256 |
0eefc54eb01775f3932e453cb0f12fc5a36c01b67b82fdcad3f95bfd7e4f85fc
|