Greek Developer
| #cli #dotnet #automation

jira-cli

Read and write Jira Cloud issues from the command line, without opening a browser tab.

What it's for

jira reads and writes issues in Jira Cloud from a terminal. It exists for the moments when you already know what you want to record and opening a browser, waiting for a board to load and clicking through a form is the slowest part of the job — jira issue list to see what is assigned to you, jira issue create -p ABC -s "Fix the thing" to file something before you lose the thought, jira issue transition ABC-123 "In Progress" to move it along without a page reload.

Filters for project, label, assignee and raw JQL all AND together, and jira issue tree draws the same query as a parent/epic hierarchy instead of a flat list — handy for seeing how a pile of tickets ladders up to the epic they belong to. Anything run often can be saved by name: jira query add mine -q "..." turns a JQL string into jira issue list --query mine, and jira template add bug-report -p ABC -t Bug ... turns a pile of issue create flags into jira issue create -s "..." --template bug-report. Reassigning (jira issue assign ABC-123) and opening an issue in the browser (jira issue open ABC-123) round out the write side.

Commands follow a noun verb shape (jira issue list, jira issue create, jira query add), so the tool is explorable with jira --help rather than memorized.

Use cases

What jira actually gets reached for changes with the shape of the day — heads-down delivery reaches for different commands than coordinating across several teams. Here's what that looks like at each level.

Inside the team

Engineer — heads-down delivery: pick up work, keep status honest, ship

Want to… Run
Check what's mine, across every project jira issue list --assigned
Read full context before starting jira issue show ABC-123
Move it and leave a trail jira issue transition ABC-123 "In Review" -c "PR #42"
Flag a blocker without changing status jira issue comment ABC-123 "Blocked on staging deploy"
File a bug found mid-task, without losing flow jira issue create -p ABC -s "…" -t Bug --parent ABC-100
Drop into the browser only to attach a screenshot jira issue open ABC-123

Product Owner — keep the backlog true, the sprint scoped, stakeholders informed

Want to… Run
See what's actually in the current sprint jira sprint show ABC
See a feature's whole shape before grooming jira issue tree --parent EPIC-1
Spin up consistently-shaped stories jira issue create --template story -s "…"
Reprioritize on the spot jira issue update ABC-123 --priority High
Check what's blocking, before promising a date jira issue show ABC-123
Cut scope on the spot jira issue transition ABC-140 "Won't Do" -c "Superseded"

Team Leader — keep the team unblocked and the process honest

Want to… Run
Check one teammate's board by hand jira issue list --jql "assignee='mara@co.com'"
See who's actually carrying what jira issue stats --project ABC
Work out how long a ticket has really been stuck jira issue history ABC-9
Move a whole batch after standup jira issue transition ABC-1,ABC-2,ABC-3 "In Progress"
Standardize how the team files tickets jira template add bug -t Bug -l needs-triage
Pull retro input: what actually shipped this week jira issue list --jql "status=Done AND resolved>=-7d"

Around the teams

Product Manager — own the roadmap across every team that touches it

Want to… Run
Track a theme across teams, no single project holds it jira issue list --label roadmap-q3
See a cross-team initiative's shape jira issue tree --parent EPIC-9
Get real numbers for a status update, not a paragraph jira issue stats --label roadmap-q3 --json
Confirm a dependency before a stakeholder update jira issue show ABC-77
Kick off a cross-team feature, same shape every time jira issue create --template kickoff -p ABC -s "…"
Save a standing check-in, once per initiative jira query add initiative-x --query "labels=init-x"

Technology Manager — delivery health and technical risk, across every team

Want to… Run
Spot-check any team's project instantly jira issue list --project TEAMX
Find what's fallen through the cracks, org-wide jira issue list --jql "assignee is EMPTY"
Pull estimation off the actual field, not a guess jira issue show ABC-123 --field "Story Points"
Enforce one ticket shape across every team jira template add incident -t Bug -l sev2
Cover for a short-staffed team jira issue assign ABC-31 covering.eng
Check a vendor's Jira without switching machines JIRA_PROFILE=vendor jira issue list --project X

Principal Engineer — technical coherence across teams: debt, architecture, standards

Want to… Run
Track tech debt as one cross-team backlog jira query add debt --query "labels=tech-debt"
Review an architecture epic before a design review jira issue tree --parent EPIC-ARCH
Formalize a real dependency, not just a comment jira issue link ABC-1 blocks ABC-2
Leave a technical ruling directly on the ticket jira issue transition ABC-5 "Needs Rework" -c "See ADR-14"
Seed every team with the same spike template jira template add spike -t Spike
Pull up a ticket's related work mid-discussion jira issue show ABC-5

query and template are the two nouns every one of these reaches for sooner or later — turning a JQL string or an issue create preset into a name is what makes the rest of the table repeatable instead of retyped.

Install

dotnet tool install --global grdev.jira-cli

Published on NuGet as grdev.jira-cli.

Setup

Jira connections live in named profiles, not one flat config. jira profile add work --host https://your-site.atlassian.net --email you@example.com creates the first one — it becomes active automatically — then jira config edit opens config.json to fill in its ApiToken, generated from Atlassian account security. jira config path prints where the file lives. Add another profile for a second Jira site and switch with jira profile use <name>, or set JIRA_PROFILE=<name> to target one for a single command without changing what's active. Each profile keeps its own saved queries and templates.

Source

github.com/greek-developer/jira-cli — currently a private repository.