DEV Community

ayush gupta
ayush gupta

Posted on

I kept forgetting to move my Jira tickets, so I built a CLI that does it for me

Every day looked the same for me. Open Jira, find my ticket, copy the ID. Switch to terminal. git checkout main, git pull. Create a branch — but first, try to remember what naming convention the team agreed on three months ago in a Slack thread I can never find again.

Then I'd actually do the work. Commit. Half the time I'd forget to put the ticket ID in the message, or type it wrong. Push. Switch back to Jira. Find the ticket again (it's a different tab now, obviously). Drag the card to the right column.

None of this is hard. It's just a lot of small manual steps, and every one of them is easy to skip when you're actually focused on writing code. Multiply that by 5-10 tickets a week and it adds up to a surprising amount of context switching for something that should honestly be automatic.

So a few months ago I built Jitly — a small CLI that sits between Jira and git and handles the connective part for you.

What it actually does
Two commands cover most of a normal day:

jitly start ABC-123 # pulls base, creates branch, moves ticket → In Progress
jitly done # commits, pushes, moves ticket → Done (or whatever status you pick)

jitly start ABC-123 does the boring part: checks if you have uncommitted changes and asks what to do about them (stash, push, or discard), switches to your base branch and pulls the latest, creates a branch using your team's naming convention, and moves the Jira ticket to In Progress — automatically, using whatever transition your team's actual Jira workflow has configured (nothing hardcoded).

jitly done commits your changes with a message built from a template, pushes, and lets you pick the ticket's next status from the transitions Jira actually offers — fetched live, so it never gets out of sync if someone customizes the workflow.

There's also jitly standup, which pulls your git commits from the last 24 hours and gives you a copy-paste-ready standup update:

*Yesterday:*
• ABC-123: Add login page
• ABC-124: Fix null pointer on dashboard
*Today:*
• Working on ABC-125: Add dark mode
*Blockers:*
• None

It's not smart, it's just accurate — pulled from what you actually did, not what you remember doing at 9:45am before standup.

The part I actually care about
The branch naming and commit templates are configurable per project ({ticket}, {ticket_lower}, {desc} as tokens), so it doesn't force a convention on your team, it just automates whatever convention you already agreed on. And because ticket transitions are fetched live from Jira's API instead of hardcoded, it works regardless of how your team's workflow is set up.

Installing it:
pip install jitly

On Mac I'd actually recommend:
pipx install jitly

Works on macOS, Windows, and Linux, needs Python 3.9+.

Demo
Here's a short walkthrough if you want to see it in action: watch it here

I built this mostly to fix my own daily annoyance, so I'd genuinely like to hear if your team has a branch-naming convention or Jira workflow that doesn't fit the usual mold — that's exactly the kind of edge case I want to make sure it handles well. Feedback, bug reports, and "this doesn't work for my setup" comments are all welcome.

Blog: https://jitly.ayushgupta.co/blog/best-way-to-use-git-and-jira

Top comments (0)