#cli #jira #atlassian

app jit-cli

A CLI for fetching JIRA issue summaries, details, and current sprint tickets

7 releases (breaking)

Uses new Rust 2024

0.7.0 Apr 22, 2026
0.6.1 Apr 22, 2026
0.5.0 Mar 12, 2026
0.4.0 Mar 10, 2026
0.2.0 Jan 29, 2026

#322 in Command line utilities

MIT license

3MB
3K SLoC

jit

Jira CLI for ticket lookup, detailed issue inspection, sprint views, and creating or editing issues from the terminal.

Crates.io License: MIT

Install · Quickstart · Agent Setup · Examples · Commands

jit demo


Quick Examples

# summary
jit ISSUE-123
Ticket:   ISSUE-123
Summary:  Fix the login button in Safari
# one-line output
jit --text ISSUE-123
ISSUE-123: Fix the login button in Safari
# json
jit --json ISSUE-123
{"ticket":"ISSUE-123","summary":"Fix the login button in Safari"}
# full table
jit --show --full ISSUE-123
TICKET DETAILS

ISSUE-123: Fix the login button in Safari

Type:       Bug                  Priority:   Medium
Status:     In Progress          Sprint:     Development Sprint 27
Assignee:   John Doe             Reporter:   Jane Smith
Created:    2023-09-15           Updated:    2023-09-16
Due Date:   2023-09-30
# current sprint
jit --my-tickets --limit 3
Current Sprint: Development Sprint 27

+-----------+----------------------------------+-------------------+
| Key       | Summary                          | Status            |
+-----------+----------------------------------+-------------------+
| PROJ-123  | Implement new login page         | In Review         |
+-----------+----------------------------------+-------------------+
| PROJ-124  | Fix responsiveness on dashboard  | In Progress       |
+-----------+----------------------------------+-------------------+
| PROJ-125  | Update API documentation         | Done              |
+-----------+----------------------------------+-------------------+

Install

cargo install jit-cli

Build from source:

git clone https://github.com/cesarferreira/jit
cd jit
cargo build --release
./target/release/jit --version

Quickstart

Create ~/.config/jit/config.toml:

mkdir -p ~/.config/jit
cat > ~/.config/jit/config.toml <<'EOF'
[jira]
base_url = "https://your-company.atlassian.net"
api_token = "your_api_token_here"
user_email = "your_email@example.com"
EOF

Then run a few common commands:

# Ticket summary
jit ISSUE-123

# Compact one-line output
jit --text ISSUE-123

# Full ticket details with comments and PRs
jit --show --full ISSUE-123

# Current sprint tickets assigned to you
jit --my-tickets

# Create a backlog ticket
jit create --project RW --summary "Improve ticket creation flow"

# Edit an existing issue
jit edit RW-123 --summary "Refine edit flow"

Agent Setup

Install the shared SKILL.md into Codex or Claude Code

The repo ships a shared agent skill in SKILL.md.

Codex

mkdir -p ~/.codex/skills/jit
wget -O ~/.codex/skills/jit/SKILL.md \
  https://raw.githubusercontent.com/cesarferreira/jit/refs/heads/main/SKILL.md
mkdir -p ~/.codex/skills/jit
curl -fsSL \
  https://raw.githubusercontent.com/cesarferreira/jit/refs/heads/main/SKILL.md \
  -o ~/.codex/skills/jit/SKILL.md

Claude Code

mkdir -p ~/.claude/skills/jit
wget -O ~/.claude/skills/jit/SKILL.md \
  https://raw.githubusercontent.com/cesarferreira/jit/refs/heads/main/SKILL.md
mkdir -p ~/.claude/skills/jit
curl -fsSL \
  https://raw.githubusercontent.com/cesarferreira/jit/refs/heads/main/SKILL.md \
  -o ~/.claude/skills/jit/SKILL.md

Examples

Ticket lookup

Default summary output:

jit ISSUE-123
jit https://your-company.atlassian.net/browse/ISSUE-123

Example output:

Ticket:   ISSUE-123
Summary:  Fix the login button in Safari

Compact output for scripts or quick scanning:

jit --text ISSUE-123

Example output:

ISSUE-123: Fix the login button in Safari

JSON output:

jit --json ISSUE-123
jit --json https://your-company.atlassian.net/browse/ISSUE-123

Example output:

{"ticket":"ISSUE-123","summary":"Fix the login button in Safari"}

Detailed issue views

Show a formatted table:

jit --show ISSUE-123
jit --show https://your-company.atlassian.net/browse/ISSUE-123

Include richer context as needed:

jit --show --include-description ISSUE-123
jit --show --include-comments ISSUE-123
jit --show --include-prs ISSUE-123
jit --show --full ISSUE-123
jit --json --full ISSUE-123

--full is the shortest path when you want description, comments, pull requests, and metadata together.

Example output:

TICKET DETAILS

ISSUE-123: Fix the login button in Safari

Type:       Bug                  Priority:   Medium
Status:     In Progress          Sprint:     Development Sprint 27
Assignee:   John Doe             Reporter:   Jane Smith
Created:    2023-09-15           Updated:    2023-09-16
Due Date:   2023-09-30

DESCRIPTION

The login button doesn't work properly in Safari browsers.
Steps to reproduce:
1. Open the login page in Safari
2. Click on the login button
3. Nothing happens

Comments, history, and linked PRs

Limit comments:

jit --show --include-comments --comments-limit 3 ISSUE-123
jit --json --include-comments --comments-limit 3 ISSUE-123

Return all comments:

jit --show --include-comments --all-comments ISSUE-123
jit --json --include-comments --all-comments ISSUE-123

Filter comments by date:

jit --show --include-comments --since 2026-01-01 ISSUE-123
jit --json --include-comments --since 2026-01-01 ISSUE-123

Include linked pull requests:

jit --show --include-prs ISSUE-123
jit --json --include-prs ISSUE-123

Current sprint tickets

No arguments defaults to your current sprint tickets:

jit

Explicit forms:

jit --my-tickets
jit --my-tickets --include-prs
jit --my-tickets --limit 5

Example output:

Current Sprint: Development Sprint 27

+-----------+----------------------------------+-------------------+
| Key       | Summary                          | Status            |
+-----------+----------------------------------+-------------------+
| PROJ-123  | Implement new login page         | In Review         |
+-----------+----------------------------------+-------------------+
| PROJ-124  | Fix responsiveness on dashboard  | In Progress       |
+-----------+----------------------------------+-------------------+
| PROJ-125  | Update API documentation         | Done              |
+-----------+----------------------------------+-------------------+

Create backlog tickets

Create a basic backlog task:

jit create --project RW --summary "Improve ticket creation flow"

Create with explicit type and description:

jit create \
  --project RW \
  --type Story \
  --summary "Support backlog ticket creation" \
  --description $'Add a create command\nCover it with tests'

Create with a specific assignee:

jit create \
  --project RW \
  --type Bug \
  --assignee 5b10a2844c20165700ede21g \
  --summary "Fix backlog create validation"

Leave the ticket unassigned:

jit create \
  --project RW \
  --assignee unassigned \
  --summary "Triage backlog item without owner yet"

Return the created issue as JSON:

jit create --project RW --summary "Improve ticket creation flow" --json

By default, jit create assigns the issue to the current Jira user with --assignee me and leaves it out of a sprint, which is what puts it in the backlog on Scrum boards.

Example output:

Created:  RW-123
Project:  RW
Type:     Task
Assignee: Cesar Ferreira
Summary:  Improve ticket creation flow
Backlog:  Yes (created without sprint assignment)
URL:      https://your-company.atlassian.net/browse/RW-123

Create tickets in the current sprint

Create directly in the active sprint:

jit create \
  --project RW \
  --current-sprint \
  --summary "Deliver current sprint ticket creation"

Target a specific board:

jit create \
  --project RW \
  --current-sprint \
  --board 123 \
  --summary "Use the board's active sprint"

When --current-sprint is set, jit resolves the active sprint through Jira Software and adds the new issue after creation. If you do not pass --board, jit checks accessible Scrum boards for the project and uses the active sprint with the most recent startDate.

Edit existing tickets

Update the summary:

jit edit RW-123 --summary "Improve edit flow"

Update the description:

jit edit RW-123 --description $'First line\nSecond line'

Clear the description:

jit edit RW-123 --description ''

Change issue type and assignee:

jit edit RW-123 --type Bug --assignee 5b10a2844c20165700ede21g

Keep a task as Task while updating other fields:

jit edit RW-123 --type Task --summary "Refine task summary"

Unassign the issue:

jit edit RW-123 --assignee unassigned

Use the current Jira user as assignee:

jit edit RW-123 --assignee me

Return update results as JSON:

jit edit RW-123 --summary "Improve edit flow" --json

Example output:

Updated:  RW-123
Fields:   summary
Summary:  Improve edit flow
URL:      https://your-company.atlassian.net/browse/RW-123

jit edit updates only the fields you pass. It works for Task issues as well as other Jira issue types. --description '' clears the description, and --assignee unassigned clears the assignee.

Use a specific config file

jit --config-file /path/to/config.toml ISSUE-123
jit --config-file /path/to/config.toml --my-tickets
jit --config-file /path/to/config.toml create --project RW --summary "Improve ticket creation flow"
jit --config-file /path/to/config.toml edit RW-123 --summary "Improve edit flow"

Commands

Command What it does
jit ISSUE-123 Show ticket summary
jit --text ISSUE-123 Show one-line KEY: Summary output
jit --json ISSUE-123 Return machine-readable JSON
jit --show ISSUE-123 Show detailed ticket fields in a table
jit --show --full ISSUE-123 Include description, comments, pull requests, and metadata
jit --my-tickets List current sprint tickets assigned to you
jit create ... Create a Jira issue, backlog by default
jit create --current-sprint ... Create an issue and add it to the active sprint
jit edit ... Update summary, description, type, or assignee
jit --config-file /path/to/config.toml ... Use a specific config file

Configuration

jit looks for Jira credentials in this order:

  1. --config-file <path>
  2. config.toml in the current directory
  3. ~/.config/jit/config.toml

Example config:

[jira]
base_url = "https://your-company.atlassian.net"
api_token = "your_api_token_here"
user_email = "your_email@example.com"

Development

Run locally:

cargo run -- ISSUE-123
cargo run -- --my-tickets
cargo run -- create --project RW --summary "Improve ticket creation flow"

Build a release binary:

cargo build --release

Get an Atlassian API token:

  1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
  2. Click Create API token
  3. Name it
  4. Copy it into ~/.config/jit/config.toml under the [jira] section

License

MIT © Cesar Ferreira

Dependencies

~20–30MB
~440K SLoC