mcpField
J
Jira CLI

Jira CLI

github.com開発ツール6.0kjira2 週間前に更新
リポジトリ公式サイト

Jira CLI について

Jira インスタンスと対話するためのコミュニティ製のコマンドラインツールです。接続の初期化、課題の一覧表示と検索、チケットの作成と編集、ステータス遷移、コメントの追加に対応しています。

主な機能

  1. 01Jira 接続を初期化し認証情報を管理する
  2. 02プロジェクト内の課題を一覧表示・検索する
  3. 03コマンドラインから Jira チケットを作成・編集する
  4. 04課題ステータスの遷移とワークフロー操作を実行する
  5. 05コメントを追加し課題フィールドを更新する

活用シーン

  1. 01開発ワークフロー内で Jira チケットを素早く作成・更新する
  2. 02スクリプトと自動化ツールから課題追跡を管理する
  3. 03CI/CD パイプラインに Jira 操作を統合する
  4. 04ブラウザを開かずにターミナルから課題を閲覧・フィルタリングする

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install ankitpokhrel/jira-cli/jira-cli

インストール後にjira --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
jira init
02
jira issue list
03
jira issue create

詳細

JiraCLI

ビルド ソフトウェアライセンス ダウンロード数 資金提供者

多機能なインタラクティブ Jira コマンドラインツール

JiraCLI のデモ

個人および企業スポンサーからの資金援助により、ツールの継続的な開発が支えられています。
あなたやあなたの会社が JiraCLI を利用している場合は、プロジェクトへのスポンサーをご検討ください。


jira-cli の Open Collective バッジ

サポーター

Atlassian のロゴ
JetBrains のロゴ

JiraCLI は、Atlassian Jira のインタラクティブなコマンドラインツールです。Jira UI を使う機会をある程度減らすのに役立ちます。この ツールですべての操作ができるわけではありませんが、Jira を使った日々のワークフローを改善するために必要な基本機能をすべて備えています。

このツールは、課題の検索や移動をできるだけ簡単にするというアイデアから始まりました。しかし、あなたのような素晴らしいサポーターの おかげで進化を続け、現在では課題の作成、複製、リンク、チケットのステータス遷移など、必要な機能をすべて備えています。

このツールは、GitHub CLIから大きな影響を受けています

対応プラットフォーム

メモ

データの性質上、Jira Cloud とオンプレミス環境では、一部の機能の動作が多少異なる場合があります。 ただし、できる限り同じように使えるよう努めています。

プラットフォームLinuxmacOSFreeBSDNetBSDWindows
JiraJira CloudJira Server

SKILL.md ← エージェント向け

JiraCLI は、Claude Code、Codex、OpenCode などの LLM 搭載コマンドラインツールや、シェルベースの自動化とよく連携します。

インストール

jira-cli は、リリースページから Linux、macOS、Windows 向けのダウンロード可能なパッケージ済みバイナリとして入手できます。

Docker を使えば、jira-cli をすぐに試せます。

docker run -it --rm ghcr.io/ankitpokhrel/jira-cli:latest

Homebrew、Nix などのその他のインストール方法については、インストールガイドをご覧ください。

パッケージ状況

はじめに

Cloud サーバー
  1. Jira API トークンを取得し、シェルで JIRA_API_TOKEN 変数としてエクスポートします。たとえば $HOME/.bashrc などのシェル設定ファイルに追加すると、変数を常に利用できます。代わりに、.netrc ファイルまたは keychain を使ってトークンを設定することもできます。詳しくはこちらをご覧ください。
  2. jira init を実行し、インストールタイプとして Cloud を選択して、ツールに必要な設定ファイルを生成するための情報を入力します。
オンプレミスへのインストール
  1. 必要な環境変数をエクスポートします。
    • ベーシック認証を使用する場合は、Jira へのログインに使用する password を JIRA_API_TOKEN 変数としてエクスポートします。
    • パーソナルアクセストークン(PAT)を使用する場合は、Jira プロフィールから token を取得し、JIRA_API_TOKEN 変数としてエクスポートします。さらに、JIRA_AUTH_TYPE 環境変数を bearer に設定します。
    • これらの環境変数を $HOME/.bashrc などのシェル設定ファイルに追加すると、常に使用できるようになります。
    • または、.netrc ファイルや keychain を使用してトークンを設定することもできます。詳しくはこちらをご覧ください。
  2. jira init を実行し、インストールの種類として Local を選択して、ツールに必要な設定ファイルを生成するための詳細を入力します。
    • オンプレミス環境のインストールで最も一般的な認証タイプは basic です。Jira のログイン認証情報(ユーザー名とパスワード)を使用する場合は、basic 認証タイプを選択します。
    • mtls(クライアント証明書)を使用する場合は、認証タイプとして mtls を選択し、CA 証明書、クライアントキー、クライアント証明書を指定します。

重要

オンプレミスの Jira インストールで English 以外の言語を使用している場合、古いバージョンの Jira API は issuetypes の翻訳前の名前を返さないため、課題やエピックの作成が機能しない可能性があります。その場合、期待どおりに動作させるには、生成された設定の epic.name、epic.link、および issue.types.*.handle フィールドを手動で入力する必要があります。

よくある質問については、FAQをご覧ください。

認証タイプ

このツールは、basic、bearer(パーソナルアクセストークン)、および mtls(クライアント証明書)の認証タイプをサポートしています。デフォルトではベーシック認証が使用されます。

  • PAT を使用する場合は、JIRA_AUTH_TYPE を bearer に設定する必要があります。
  • mtls を使用する場合は、jira init を実行します。インストールの種類として Local を選択し、認証タイプとして mtls を選択します。
    • JIRA_API_TOKEN 変数が設定されている場合は、mtls と併せて使用されます。
シェル補完

Bash/Zsh のシェル補完の設定方法について詳しくは、jira completion --help を確認してください。

複数のプロジェクト

--config/-c フラグを使って特定の設定ファイルを読み込むか、JIRA_CONFIG_FILE 環境変数を設定してファイルの場所を指定できます。

$ JIRA_CONFIG_FILE=./local_jira_config.yaml jira issue list

# Alternatively, use the `--config/-c` flag
$ jira issue list -c ./local_jira_config.yaml

使用方法

このツールには現在、課題、エピック、スプリントのエクスプローラーが用意されています。フラグはPOSIX 準拠です。 使用可能なフラグは任意の順序で組み合わせて、独自のクエリを作成できます。たとえば、以下のコマンドを実行すると、今月作成された優先度が高く、ステータスが To Do で、自分に割り当てられ、ラベル backend が付いた課題が表示されます。

jira issue list -yHigh -s"To Do" --created month -lbackend -a$(jira me)
ナビゲーション

リストはデフォルトでインタラクティブな UI に表示されます。

  • 矢印キーまたは j, k, h, l の文字を使ってリストを移動します。
  • g と G を使うと、それぞれリストの先頭と末尾にすばやく移動できます。
  • CTRL + f を押すと、ページを下方向にスクロールします。
  • CTRL + b を押すと、ページを上方向にスクロールします。
  • v を押すと、選択した課題の詳細を表示します。
  • m を押すと、選択した課題のステータスを遷移させます。
  • CTRL + r または F5 を押すと、課題リストを更新します。
  • ENTER を押すと、選択した課題をブラウザーで開きます。
  • c を押すと、課題の URL をシステムのクリップボードにコピーします。Linux では xclip または xsel が必要です。
  • CTRL + k を押すと、課題キーをシステムのクリップボードにコピーします。
  • エクスプローラー画面で w または TAB を押すと、サイドバーとコンテンツ画面のフォーカスを切り替えます。
  • q/ESC/CTRL + c を押すと終了します。
  • ? を押すと、ヘルプウィンドウを開きます。
リソース

コマンド

課題

課題は、デフォルトでインタラクティブなテーブルビューに表示されます。--plain フラグを使うと、結果をプレーンビューで出力できます。

一覧表示

list コマンドでは、課題を検索して移動できます。デフォルトでは、課題は created フィールドの降順で並べ替えられます。

# List recent issues
$ jira issue list

# List issues created in last 7 days
$ jira issue list --created -7d

# List issues in status "To Do"
$ jira issue list -s"To Do"

# List recent issues in plain mode
$ jira issue list --plain

# List recent issues in raw JSON format
$ jira issue list --raw

# List recent issues in csv format
$ jira issue list --csv

# List issue in the same order as you see in the UI
$ jira issue list --order-by rank --reverse

# You can execute raw JQL within a given project context using `--jql/-q` option.
# For instance, the following command will list issues in the current project whose
# summary has a word cli.
$ jira issue list -q "summary ~ cli"

以下の例やユースケースもご覧ください。

自分がウォッチしている課題を一覧表示する
jira issue list -w
自分に割り当てられた課題を一覧表示する
jira issue list -a$(jira me)
あるユーザーに割り当てられ、別のユーザーが報告した課題を一覧表示する
jira issue list -a"User A" -r"User B"
自分に割り当てられ、優先度が高く、オープン状態の課題を一覧表示する
jira issue list -a$(jira me) -yHigh -sopen
誰にも割り当てられておらず、今週作成された課題を一覧表示する
jira issue list -ax --created week
解決状況が「対応しない」の課題を一覧表示する
jira issue list -R"Won't do"
ステータスが完了ではなく、6 か月より前に作成され、誰かに割り当てられている課題を一覧表示する
# Tilde (~) acts as a not operator
jira issue list -s~Done --created-before -24w -a~x
1 時間以内に作成され、過去 30 分以内に更新された課題を一覧表示する :stopwatch:
jira issue list --created -1h --updated -30m
優先度が高く、進行中で、今月作成され、指定したラベルが付いた課題を表示する :fire:
jira issue list -yHigh -s"In Progress" --created month -lbackend -l"high-prio"
待って、今日の早い時間に起票したチケットは何でしたか? :tired_face:
jira issue list --history
現在のボードで、私が最初に報告した課題は何でしたか? :thinking:
jira issue list -r$(jira me) --reverse
現在のボードで、私が最初に修正したバグは何でしたか? :beetle:
jira issue list -a$(jira me) -tBug -sDone -rFixed --reverse
今週、私が報告した課題は何でしたか? :man_shrugging:
jira issue list -r$(jira me) --created week
プロジェクト XYZ でウォッチしているチケットはありますか? :monocle_face:
jira issue list -w -pXYZ
作成

create コマンドでは、課題を作成できます。

# Create an issue using an interactive prompt
$ jira issue create

# Pass required parameters and use --no-input option to skip prompt
$ jira issue create -tBug -s"New Bug" -yHigh -lbug -lurgent -b"Bug description" --fix-version v2.0 --no-input

課題の作成時にエピックを紐付けるには、-P/--parent フィールドを使います。next-gen プロジェクトではエピックの意味が変更されているため、これを親と呼んでいます。

# Create an issue of type Story and attach it to epic with key EPIC-42
$  jira issue create -tStory -s"Epic during creation" -PEPIC-42

課題を作成

--custom フラグを使うと、課題の作成時にカスタムフィールドを設定できます。詳しくはこちらの投稿をご覧ください。

説明の記述には、GitHub 形式 と Jira 形式の Markdown の両方を使用できます。--template フラグを使うと、定義済みのテンプレートを読み込めます。

# Load description from template file
$ jira issue create --template /path/to/template.tmpl

# Get description from standard input
$ jira issue create --template -

# Or, use pipe to read input directly from standard input
$ echo "Description from stdin" | jira issue create -s"Summary" -tTask

Markdown のレンダリングプレビュー

上のプレビューは、JiraCLI に渡された Markdown テンプレートと、Jira UI での表示例です。

編集

edit コマンドでは、課題を編集できます。

$ jira issue edit ISSUE-1

# Edit issue in the configured project
$ jira issue edit ISSUE-1 -s"New Bug" -yHigh -lbug -lurgent -CBackend -b"Bug description"

# Use --no-input option to disable interactive prompt
$ jira issue edit ISSUE-1 -s"New updated summary" --no-input

# Use minus (-) to remove label, component or fixVersion
# For instance, to edit issue to
#   - remove label p2, component FE, fixVersion v1.0
#   - add label p1, component BE, fixVersion v2.0
$ jira issue edit ISSUE-1 --label -p2 --label p1 --component -FE --component BE --fix-version -v1.0 --fix-version v2.0
割り当て

assign コマンドでは、ユーザーを課題に割り当てることができます。

# Assign user to an issue using an interactive prompt
$ jira issue assign

# Pass required parameters to skip prompt
$ jira issue assign ISSUE-1 "Jon Doe"

# Assign to self
$ jira issue assign ISSUE-1 $(jira me)

# Will prompt for selection if keyword suffix returns multiple entries
$ jira issue assign ISSUE-1 suffix

# Assign to default assignee
$ jira issue assign ISSUE-1 default

# Unassign
$ jira issue assign ISSUE-1 x

課題をユーザーに割り当てる

移動/トランジション

move コマンドでは、課題をある状態から別の状態へ遷移させることができます。

# Move an issue using an interactive prompt
$ jira issue move

# Pass required parameters to skip prompt
$ jira issue move ISSUE-1 "In Progress"

課題を移動する

ワークフローで、課題の移動時にコメント、解決状況、担当者を追加できる場合は、以下のように追加できます。これらのフィールドを使用できるようにワークフローを設定する方法については、こちらのドキュメントをご覧ください。

# Move an issue and add comment
$ jira issue move ISSUE-1 "In Progress" --comment "Started working on it"

# Set resolution to fixed and assign to self while moving the issue
$ jira issue move ISSUE-1 Done -RFixed -a$(jira me)

TUI から選択した課題を遷移させるには、m を押します。

表示

view コマンドを使うと、ターミナルで課題の詳細を確認できます。Atlassian のドキュメントはおおよそ Markdown に変換され、 ターミナルに見やすく表示されます。

このコマンドでは、デフォルトでページャーとして less を使用します。独自のページャーを設定するには、https://github.com/ankitpokhrel/jira-cli/discussions/569 を参照してください。

$ jira issue view ISSUE-1

課題を表示

表示画面には、説明の後にリンクされた課題と最新のコメントが表示されます。チケットに何らかの理由で 5k を超えるコメントがある場合、表示されるコメントが最新ではないことがあります。

# Show 5 recent comments when viewing the issue
$ jira issue view ISSUE-1 --comments 5
リンク

link コマンドを使うと、2 つの課題をリンクできます。

# Link an issue using an interactive prompt
$ jira issue link

# Pass required parameters to skip prompt
$ jira issue link ISSUE-1 ISSUE-2 Blocks
リモート

remote コマンドを使うと、課題にリモートの Web リンクを追加できます。

# Adds a remote web link using an interactive prompt
$ jira issue link remote

# Pass required parameters to skip prompt
$ jira issue link remote ISSUE-1 https://example.com "Example text"
リンク解除

unlink コマンドを使うと、リンクされた 2 つの課題のリンクを解除できます。

# Unlink issues using interactive prompt
$ jira issue unlink

# Pass required parameters to skip prompt
$ jira issue unlink ISSUE-1 ISSUE-2
クローン

clone コマンドを使うと、課題をクローンできます。課題をクローンする際に、要約、優先度、担当者、ラベル、コンポーネントなどのフィールドを更新できます。また、--replace/-H オプションを使うと、要約と説明内の文字列の一部を(大文字と小文字を区別して)置換できます。

# Clone an issue
$ jira issue clone ISSUE-1

# Clone issue and modify the summary, priority and assignee
$ jira issue clone ISSUE-1 -s"Modified summary" -yHigh -a$(jira me)

# Clone issue and replace text from summary and description
$ jira issue clone ISSUE-1 -H"find me:replace with me"
削除

delete コマンドを使うと、課題を削除できます。

# Delete an issue using an interactive prompt
$ jira issue delete

# Pass required parameters to skip prompt
$ jira issue delete ISSUE-1

# Delete task along with all of its subtasks
$ jira issue delete ISSUE-1 --cascade
コメント

comment コマンドは、課題のコメントを管理するためのサブコマンドを一覧表示します。

追加

add コマンドを使うと、課題にコメントを追加できます。このコマンドでは、コメントの記述に GitHub 形式 と Jira 形式 の Markdown を使用できます。 --template フラグを使うと、定義済みのテンプレートを読み込めます。

# Add a comment using an interactive prompt
$ jira issue comment add

# Pass required parameters to skip prompt
$ jira issue comment add ISSUE-1 "My comment body"

# Same as above but as an internal comment
$ jira issue comment add ISSUE-1 "My comment body" --internal

# Load comment from template file
$ jira issue comment add ISSUE-1 --template /path/to/template.tmpl

# Get comment from standard input
$ jira issue comment add ISSUE-1 --template -

# Or, use pipe to read input directly from standard input
$ echo "Comment from stdin" | jira issue comment add ISSUE-1

メモ

コメント本文については、両方が指定された場合、位置引数が常に --template フラグより優先されます。以下の例では、テンプレートではなく位置引数から本文が取得されます。

jira issue comment add ISSUE-42 "comment body positional" --template - <<'EOF'
comment body template
EOF
作業ログ

worklog コマンドは、課題の作業ログ(時間記録)を管理するためのサブコマンドを一覧表示します。

追加

add コマンドを使うと、課題に作業ログを追加できます。このコマンドでは、作業ログのコメントに Markdown を使用できます。

# Add a worklog using an interactive prompt
$ jira issue worklog add

# Pass required parameters and use --no-input to skip prompt
$ jira issue worklog add ISSUE-1 "2d 3h 30m" --no-input

# You can add a comment using --comment flag when adding a worklog
$ jira issue worklog add ISSUE-1 "10m" --comment "This is a comment" --no-input
エピック

エピックはデフォルトでエクスプローラービューに表示されます。--table フラグを使うと、結果をテーブルビューで出力できます。 エピック課題を表示する際は、課題コマンドで利用できるすべてのフィルターを使用できます。

UI の操作について詳しくは、使用方法を参照してください。

一覧

課題タイプを除き、issue list コマンドでサポートされているすべてのフラグを使用できます。

# List epics
$ jira epic list

# List epics in a table view
$ jira epic list --table

# List epics reported by me and are open
$ jira epic list -r$(jira me) -sOpen

# List issues in an epic
$ jira epic list KEY-1

# List all issue in an epic KEY-1 that is unassigned and has a high priority
$ jira epic list KEY-1 -ax -yHigh

# List high priority epics
$ jira epic list KEY-1 -yHigh

# List epic issues ordered by rank in ascending order
$ jira epic list KEY-1 --order-by rank --reverse
作成

エピックの作成方法は課題の作成と同じですが、エピック名も指定する必要があります。

# Create an issue using an interactive prompt
$ jira epic create

# Pass required parameters to skip prompt or use --no-input flag to skip prompt for non-mandatory params
$ jira epic create -n"Epic epic" -s"Everything" -yHigh -lbug -lurgent -b"Epic description"
追加

add コマンドを使うと、エピックに課題を追加できます。一度に最大 50 件の課題をエピックに追加できます。

# Add issues to the epic using an interactive prompt
$ jira epic add

# Pass required parameters to skip prompt
$ jira epic add EPIC-KEY ISSUE-1 ISSUE-2
削除

remove コマンドを使うと、エピックから課題を削除できます。一度に最大 50 件の課題をエピックから削除できます。

# Remove issues to the epic using an interactive prompt
$ jira epic remove

# Pass required parameters to skip prompt
$ jira epic remove ISSUE-1 ISSUE-2
スプリント

スプリントはデフォルトでエクスプローラービューに表示されます。--table フラグを使うと、結果をテーブルビューで出力できます。 スプリントの課題を表示する際は、課題コマンドで利用できるすべてのフィルターを使用できます。このツールでは、最近のスプリントを 25 件のみ表示します。

UI の操作について詳しくは、使用方法を参照してください。

一覧

スプリント内の課題を絞り込むには、issue list コマンドでサポートされているすべてのフラグを使用できます。

# List sprints in an explorer view
$ jira sprint list

# List sprints in a table view
$ jira sprint list --table

# List issues in the current active sprint
$ jira sprint list --current

# List issues in the current active sprint that are assigned to me
$ jira sprint list --current -a$(jira me)

# List issues in the previous sprint
$ jira sprint list --prev

# List issues in next planned sprint
$ jira sprint list --next

# List future and active sprints
$ jira sprint list --state future,active

# List issues in a particular sprint. You can use all flags supported by issue list command here.
# To get sprint id use `jira sprint list` or `jira sprint list --table`
$ jira sprint list SPRINT_ID

# List high priority issues in a sprint are assigned to me
$ jira sprint list SPRINT_ID -yHigh -a$(jira me)

# List sprint issues ordered by rank in ascending order
$ jira sprint list SPRINT_ID --order-by rank --reverse
追加

add コマンドを使うと、スプリントに課題を追加できます。一度に最大 50 件の課題をスプリントに追加できます。

# Add issues to the sprint using interactive prompt
$ jira sprint add

# Pass required parameters to skip prompt
$ jira sprint add SPRINT_ID ISSUE-1 ISSUE-2
リリース

リリース(プロジェクトのバージョン)を操作します。
ご利用のインスタンスで機能が有効になっていることを確認してください。

一覧
# List releases for default project
$ jira release list

# List releases for specific project
$ jira release list --project 1000
$ jira release list --project KEY
その他のコマンド
プロジェクトに移動
jira open
課題に移動
jira open KEY-1
アクセス可能なすべてのプロジェクトを一覧表示
jira project list
プロジェクト内のすべてのボードを一覧表示
jira board list
## スクリプト コマンドの出力を使って、何か便利なことをしたい場合がよくあります。しかし、デフォルトの対話型 UI ではそれができないことがあります。 このツールには `--plain` フラグがあり、シンプルなレイアウトで結果を表示するため、シェルスクリプトから加工できます。

以下にスクリプトの例をいくつか示します。

今月の日ごとの作成チケット数
#!/usr/bin/env bash

tickets=$(jira issue list --created month --plain --columns created --no-headers | awk '{print $2}' | awk -F'-' '{print $3}' | sort -n | uniq -c)

echo "${tickets}" | while IFS=$'\t' read -r line; do
  day=$(echo "${line}" | awk '{print $2}')
  count=$(echo "${line}" | awk '{print $1}')

  printf "Day #%s: %s\n" "${day}" "${count}"
done

# Output
Day #01: 19
Day #02: 10
Day #03: 21
...
スプリントごとのチケット数
#!/usr/bin/env bash

sprints=$(jira sprint list --table --plain --columns id,name --no-headers)

echo "${sprints}" | while IFS=$'\t' read -r id name; do
  count=$(jira sprint list "${id}" --plain --no-headers 2>/dev/null | wc -l)

  printf "%10s: %3d\n" "${name}" $((count))
done

# Output
Sprint 3:   55
Sprint 2:   40
Sprint 1:   30
...
スプリントごとの担当者数(重複なし)
#!/usr/bin/env bash

sprints=$(jira sprint list --table --plain --columns id,name --no-headers)

echo "${sprints}" | while IFS=$'\t' read -r id name; do
  count=$(jira sprint list "${id}" --plain --columns assignee --no-headers 2>/dev/null | awk '{print $2}' | awk NF | sort -n | uniq | wc -l)

  printf "%10s: %3d\n" "${name}" $((count))
done

# Output
Sprint 3:   5
Sprint 2:   4
Sprint 1:   3

既知の問題

  1. 現時点では、すべてのAtlassian ノードが 適切に変換されるわけではないため、フォーマットに問題が生じることがあります。

機能リクエスト

提案する機能については、ideas カテゴリでディスカッションを開始してください。

リクエストの優先順位はどのように決まりますか?
  • 実装が簡単で、それほど頭を使わずに済み、私が怠けていても対応できる機能が最初に選ばれます。
  • 日々の作業で必要としている機能であれば、優先的に実装されることがあります。
  • それ以外の機能は、該当機能への投票数に基づいて選ばれます。

開発

  1. リポジトリをクローンします。

    git clone [email protected]:ankitpokhrel/jira-cli.git
    
  2. 任意:Jira インスタンスをローカルで実行したい場合は、以下の make レシピを使用できます。 トライアルライセンスキーは、Atlassian 管理画面の「Licenses」セクションで生成できます。

    make jira.server
    
  3. 変更を加え、バイナリをビルドして、変更をテストします。

    make deps install
    
  4. PR を提出する前に、CI の手順をローカルで実行します。

    make ci
    

プロジェクトを支援する

ご提案やフィードバックをお待ちしています。ツールの使用感を共有したり、機能や問題について話し合ったりするには、 お気軽にディスカッションを開始 するか、issue を作成してください。

このツールが役立ち、多くの作業を省けて、より安心して眠れるようになったと思われたら、以下の方法でプロジェクトをご支援ください。


💚を込めて作成

コメント