jira-cli

module
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2026 License: MIT

README

jira

Terminal-first Jira CLI for day-to-day developer workflows.

Install

go install github.com/matcra587/jira-cli/cmd/jira@latest

Homebrew and GoReleaser release archives include release version metadata. go install github.com/matcra587/jira-cli/cmd/jira@latest builds from source and may report dev or git-derived metadata in jira version. Release archives currently target macOS and Linux.

See docs/installation.md for release archives, the one-line installer, source builds, and uninstall steps. The examples below assume jira is on PATH.

Quick start

# 1. Create profile metadata
jira config init --no-input \
  --base-url https://company.atlassian.net \
  --email dev@example.com

# 2. Store an API token and verify Jira accepts it
jira auth login
jira auth status

# 3. List your issues
jira issue list

For issue creation, editing, comments, and ADF payloads, start with docs/issues.md. For classic API tokens, auth backends, and 1Password, use docs/auth.md.

Configuration

Configuration lives in ~/.config/jira-cli/config.toml. Use metadata-only profiles; credentials belong in the OS keychain, 1Password, or environment fallbacks.

jira config init --no-input \
  --profile default \
  --base-url https://company.atlassian.net \
  --email dev@example.com

config init requires both --base-url and --email; omitting either exits before writing the config file.

Auth

jira auth status
jira auth login
jira auth token

Use token, basic, pat, or mtls for auth login. Unsupported auth types are rejected instead of being stored as fake authenticated profiles.

The 1Password backend uses the Go SDK when onepassword_account is configured for desktop-app auth or OP_SERVICE_ACCOUNT_TOKEN is present for service-account auth. macOS and Linux release archives are built without CGO, so use a CGO-enabled source build for 1Password-backed profiles.

For desktop-app auth, 1Password must be signed in and allowed to serve SDK requests before jira can read items. In the 1Password app, open Settings > Developer and enable Integrate with other apps. If you want biometric approval, also enable the OS unlock option under Settings > Security. Desktop-app SDK authorization is per account and per process, so separate jira invocations may prompt separately even when the app is unlocked. Use the system keychain backend for prompt-free day-to-day commands.

Further reading:

[[profiles]]
name = "work"
base_url = "https://company.atlassian.net"
auth_type = "token"
email = "dev@example.com"
secret_backend = "1password"
onepassword_account = "Team"
vault = "Engineering"
item = "jira-cli-work"
Token support

jira talks to Jira Cloud only; Server/Data Center are not supported. Today the CLI supports classic Atlassian API tokens. Scoped API tokens are planned for a future auth update because they require Atlassian's gateway URL (https://api.atlassian.com/ex/jira/<cloudId>/...) instead of the normal https://your-site.atlassian.net/... REST base URL.

TUI

[!WARNING] The dashboard is in alpha: actively developed, and keybindings or configuration may still change between releases. The headless CLI commands remain the stable surface for scripts and agents.

Run jira -i or jira tui in a terminal for a persistent, full-screen dashboard: tabbed JQL views with live counts, quick-filter lenses, an always-visible issue preview, single-key triage verbs with optimistic updates, multi-select bulk actions, and a JQL search workbench with autocomplete and saved-query presets. Tabs, lenses, sections, the preview dock and every keybinding are configurable under [tui] in config.toml.

Core keys: j/k move, enter open, / filter, f facet, ]/[ lens, t transition, a/A assign, c comment, e edit, w worklog, space select, ctrl+o recent, ? help, q quit.

See the TUI documentation for the full tour and configuration reference. Prefer the regular CLI commands for scripts and agent workflows.

Output

Non-TTY and agent environments emit JSON without prompts. Pick a mode explicitly with --output; valid values are auto, human, json, and compact.

jira issue list --output=json
jira issue create --json-input payload.json --no-input --dry-run --output=json
jira agent schema --output=compact

Where payload.json is at minimum:

{"summary": "Fix login", "project_key": "PROJ", "issue_type": "Task"}

project_key and issue_type are required under --no-input. See the embedded agent guide (jira agent guide) for richer payload shapes including ADF descriptions and customfields.

For agent-facing contracts, use the embedded references instead of copying recipes from the README:

jira agent guide
jira agent schema --output=compact
jira agent adf-matrix --output=json
jira agent fieldtypes --output=json

TTY commands render successful results through clog rich output:

INF ℹ️ listed issues count=0 detail=false

Use --output=compact for jq-friendly data-only JSON and --output=human to force clog rich text.

Commands

Command Docs
auth, config auth.md, config.md
issue, epic issues.md, epic.md
jql, search jql.md, search.md
worklog worklog.md
cache cache.md
alias alias.md
agent agent.md
output, troubleshooting output.md, troubleshooting.md

JQL

jira issue list defaults to recently-updated issues (updated >= -365d ORDER BY updated DESC). Override with --jql or builder flags:

jira issue list
jira issue list --jql 'project = PROJ AND status = "In Progress"'
jira jql build --project PROJ --assignee me --status "In Progress"

See docs/jql.md for supported builder flags and Atlassian JQL references.

Aliases

jira alias set mine -- issue list --assignee me
jira alias set inbox "issue list --assignee me"
jira alias list
jira alias import aliases.yml
jira alias delete mine

Directories

Path Synopsis
cmd
gen-docs command
Command gen-docs renders the jira command tree into Markdown reference pages for the docs site.
Command gen-docs renders the jira command tree into Markdown reference pages for the docs site.
jira command
internal
adf
browser
Package browser builds Jira web URLs and opens them in the OS default browser.
Package browser builds Jira web URLs and opens them in the OS default browser.
cache
Package cache is a tiny per-profile JSON file store for Jira metadata (labels, epics, projects, …) that's cheap to look up — used by the `jira cache <resource>` commands and (eventually) by Cobra shell completion functions.
Package cache is a tiny per-profile JSON file store for Jira metadata (labels, epics, projects, …) that's cheap to look up — used by the `jira cache <resource>` commands and (eventually) by Cobra shell completion functions.
cli
Plain-text renderer for `jira boards list`.
Plain-text renderer for `jira boards list`.
cli/adfmode
Package adfmode resolves the strict vs best-effort ADF mode for a given CLI invocation, applying both the precedence ladder and per-path defaults.
Package adfmode resolves the strict vs best-effort ADF mode for a given CLI invocation, applying both the precedence ladder and per-path defaults.
cli/boards
`jira boards` command tree.
`jira boards` command tree.
cli/boardscope
Package boardscope resolves the `--board NAME` / `--board-id N` flag pair against the local board cache and renders the result into JQL clauses and envelope data.
Package boardscope resolves the `--board NAME` / `--board-id N` flag pair against the local board cache and renders the result into JQL clauses and envelope data.
cli/cache/registry
Package registry is the single source of truth for the cacheable Jira metadata resources: their identity, default freshness window, and fetch.
Package registry is the single source of truth for the cacheable Jira metadata resources: their identity, default freshness window, and fetch.
cli/cmdutil
Package cmdutil holds the cross-cutting helper layer shared by every jira-cli command: envelope writers, client/profile accessors, output-mode resolution, mutation gates, the credential-warning sink, and small generic value helpers.
Package cmdutil holds the cross-cutting helper layer shared by every jira-cli command: envelope writers, client/profile accessors, output-mode resolution, mutation gates, the credential-warning sink, and small generic value helpers.
cli/config
Package config implements the `jira config` cobra command tree, which manages the local configuration file, profiles, and theme settings.
Package config implements the `jira config` cobra command tree, which manages the local configuration file, profiles, and theme settings.
cli/issue
`jira issue link` command tree.
`jira issue link` command tree.
cli/runtime
Package runtime is the dependency boundary between the binary shell in cmd/jira and the command implementations.
Package runtime is the dependency boundary between the binary shell in cmd/jira and the command implementations.
cli/startup
Package startup parses jira's global flags and first subcommand out of the raw argv before cobra runs.
Package startup parses jira's global flags and first subcommand out of the raw argv before cobra runs.
cli/stdin
Package stdin is the ONLY place in the source tree allowed to read os.Stdin.
Package stdin is the ONLY place in the source tree allowed to read os.Stdin.
cli/tui
Package tui wires the `jira tui` command to the section-based dashboard.
Package tui wires the `jira tui` command to the section-based dashboard.
cli/version
Package version implements the `jira version` cobra command, which prints build and version metadata as a structured envelope.
Package version implements the `jira version` cobra command, which prints build and version metadata as a structured envelope.
docs
Package docs renders a Cobra command tree to byte-stable Markdown for the jira-cli documentation site.
Package docs renders a Cobra command tree to byte-stable Markdown for the jira-cli documentation site.
jira
Package jira — Board service for /rest/agile/1.0.
Package jira — Board service for /rest/agile/1.0.
jira/customfield
Package customfield is the Jira custom-field type registry.
Package customfield is the Jira custom-field type registry.
jql
Package jql builds and composes Jira Query Language strings from structured inputs.
Package jql builds and composes Jira Query Language strings from structured inputs.
pipeline
Package pipeline implements the deterministic 5-stage validation pipeline that gates every Jira mutation submission.
Package pipeline implements the deterministic 5-stage validation pipeline that gates every Jira mutation submission.
tui/components/action
Package action provides a single controller that collects input for the Jira verbs (transition, comment, assign, labels, worklog, edit) through one Mode-dispatched component, instead of a bespoke flow per action.
Package action provides a single controller that collects input for the Jira verbs (transition, comment, assign, labels, worklog, edit) through one Mode-dispatched component, instead of a bespoke flow per action.
tui/components/carousel
Package carousel renders a horizontal strip of labels with one active, and wraps navigation around the ends.
Package carousel renders a horizontal strip of labels with one active, and wraps navigation around the ends.
tui/components/input
Package input is the TUI's shared text-entry substrate: thin themed wrappers over bubbles/textinput and textarea, plus the external-editor hop.
Package input is the TUI's shared text-entry substrate: thin themed wrappers over bubbles/textinput and textarea, plus the external-editor hop.
tui/components/listviewport
Package listviewport is a scrollable, single-selection list of pre-rendered rows.
Package listviewport is a scrollable, single-selection list of pre-rendered rows.
tui/components/markdown
Package markdown renders GFM (produced by internal/adf) for the TUI through glamour, with a style derived from the active clib theme so issue bodies and comments match the rest of the dashboard.
Package markdown renders GFM (produced by internal/adf) for the TUI through glamour, with a style derived from the active clib theme so issue bodies and comments match the rest of the dashboard.
tui/components/modalstack
Package modalstack manages a stack of overlay layers (confirm, input, filter, help) so more than one can be open at once and they dismiss in LIFO order.
Package modalstack manages a stack of overlay layers (confirm, input, filter, help) so more than one can be open at once and they dismiss in LIFO order.
tui/components/picker
Package picker is a vertical, type-to-filter select list for modal choices (workflow transitions today; assignees, labels and facet values next).
Package picker is a vertical, type-to-filter select list for modal choices (workflow transitions today; assignees, labels and facet values next).
tui/core
Package core defines the contracts every TUI view is built on: the Section interface, the shared ProgramContext, the async task manager, the section registry and the typed message set.
Package core defines the contracts every TUI view is built on: the Section interface, the shared ProgramContext, the async task manager, the section registry and the typed message set.
tui/keys
Package keys holds the global key map for the section-based TUI and the config-driven rebinding that lets users override any binding by name.
Package keys holds the global key map for the section-based TUI and the config-driven rebinding that lets users override any binding by name.
tui/sections/issues
JQL completion engine for the search editor: a small tokenizer classifies where the cursor is in the query (field, operator, value, or connective position) and builds full-line candidates from the instance's autocomplete reference data, so the textinput's whole-line ghost suggestion completes just the token being typed.
JQL completion engine for the search editor: a small tokenizer classifies where the cursor is in the query (field, operator, value, or connective position) and builds full-line candidates from the instance's autocomplete reference data, so the textinput's whole-line ghost suggestion completes just the token being typed.
tui/sections/settings
Package settings is the dashboard's configuration view: it shows where the active config came from and what it resolved to, offers a manual reload, and watches the file (on the shared refresh heartbeat) so edits hot-apply without restarting the TUI.
Package settings is the dashboard's configuration view: it shows where the active config came from and what it resolved to, offers a manual reload, and watches the file (on the shared refresh heartbeat) so edits hot-apply without restarting the TUI.
tui/theme
Package theme defines lipgloss styles shared across the Jira TUI.
Package theme defines lipgloss styles shared across the Jira TUI.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL