Think github-cli but for Jira.
Modular, class-based Jira command-line tool for issue listing, searching, and management.
- List issues by project with optional filtering (status, assignee, labels)
- Search with custom JQL queries
- Find issues by text in summary/description
- View issue details with comments
- Assign issues to users
- Transition issues to new status
- Create issues with title/body/labels/assignee
- Comment on issues (plain, markdown, or ADF JSON)
- Edit issues (title/body/labels/assignee/priority/type)
- Close/Reopen issues via workflow transitions
- Multiple output formats: table, JSON, CSV, Markdown
- dotenv support: Load credentials from
.envorlocal.envin CWD or parent directories
cd colenio/tools/jira-cli
uv sync
uv run colenio-jira-cli issue --helpuvx colenio-jira-cli issue list --project PROJjira-cli remains available as a command alias for colenio-jira-cli.
Create a .env or local.env file in your working directory:
# Required
JIRA_URL=https://company.atlassian.net
JIRA_EMAIL=user@example.com
JIRA_API_TOKEN=your_api_token_here
# Optional
JIRA_PROJECT=PROJ # Default project for list/find
JIRA_PROJECT_KEY=PROJ # Backward-compatible fallback- Log in to your Jira Cloud instance
- Go to Account Settings → Security
- Click "Create API Token"
- Copy the token and save to
.env
Primary command model is issue (similar to gh issue ...).
colenio-jira-cli issue --help# Canonical
colenio-jira-cli issue list --project PROJ
# With filters
colenio-jira-cli issue list --project PROJ --status "In Progress" --assignee "john@example.com"
# With custom JQL
colenio-jira-cli issue list --project PROJ --jql 'priority = High'
# Different output formats
colenio-jira-cli issue list --project PROJ --format json
colenio-jira-cli issue list --project PROJ --format csv > issues.csv
colenio-jira-cli issue list --project PROJ --format mdcolenio-jira-cli issue search 'project = PROJ AND status = "To Do" AND assignee is EMPTY'
colenio-jira-cli issue search 'text ~ "urgent"' --format jsoncolenio-jira-cli issue find --project PROJ "database migration"
colenio-jira-cli issue find --project PROJ "performance issue" --max-results 100colenio-jira-cli issue view PROJ-123
colenio-jira-cli issue view PROJ-456 --commentscolenio-jira-cli issue assign PROJ-789 john@example.comcolenio-jira-cli issue transition PROJ-999 "In Progress" --comment "Starting work"
colenio-jira-cli issue transition PROJ-999 "Done"# Similar to gh issue create
colenio-jira-cli issue create --project PROJ --title "Access governance ticket" --body "Please define access process"
# With labels and assignee
colenio-jira-cli issue create \
--project PROJ \
--title "[ORG] GitLab Access Governance" \
--body-file ./ticket.md \
--type Task \
--label governance --label access,auditability \
--assignee user@example.com \
--priority High# Similar to gh issue comment
colenio-jira-cli issue comment PROJ-123 --body "Reviewed. Access approved."
# Markdown and ADF JSON support
colenio-jira-cli issue comment PROJ-123 --format md --body "**Update:** done"
colenio-jira-cli issue comment PROJ-123 --format adf --body-file ./comment.adf.jsoncolenio-jira-cli issue edit PROJ-123 --title "Updated title" --body "Updated description"
colenio-jira-cli issue edit PROJ-123 --add-label governance --remove-label old-label
colenio-jira-cli issue edit PROJ-123 --set-label governance,access --priority Highest# Auto-resolve transition (Done/Closed/Resolved)
colenio-jira-cli issue close PROJ-123 --comment "Completed"
# Auto-resolve transition (Reopen/Reopened/Open/To Do)
colenio-jira-cli issue reopen PROJ-123 --comment "Need follow-up"
# Explicit transition override by name or id
colenio-jira-cli issue close PROJ-123 --transition "Done"Launch an interactive k9s-style interface for managing Jira issues:
# Basic TUI launch
colenio-jira-cli tui --project PROJ
# TUI will load default project from JIRA_PROJECT env if available
colenio-jira-cli tuiKeyboard Shortcuts in TUI:
| Key | Action |
|---|---|
↑ / ↓ |
Navigate issues up/down |
o |
Open selected issue in browser |
p |
Reset source to project |
f |
Find by text (summary/description) |
j |
Run custom JQL query |
t |
Transition selected issue |
a |
Assign selected issue |
c |
Add comment (plain/md/adf) |
n |
Next comment on selected issue |
b |
Previous comment on selected issue |
u |
Drill up to parent issue |
d |
Drill down to child issues |
Enter |
Execute active query/input |
r |
Refresh issue list |
/ |
Focus live filter |
Esc |
Close input or reset source |
? |
Show help |
q |
Quit TUI |
Transition input format in TUI:
topens transition input for the selected issue.- Enter either transition ID or transition name.
- Optional comment:
<transition> | <comment>
Comment input format in TUI:
copens comment input for the selected issue.- Supported formats:
plain:<text>or just<text>md:<markdown>(lightweight markdown validation)adf:<json>(ADF JSON parse + structure validation)
Installation (TUI included by default):
# Install dependencies
uv sync
# Then use
uv run colenio-jira-cli tui --project PROJOr via uvx:
uvx --python 3.11 colenio-jira-cli tui --project PROJYou can run the CLI and TUI without uvx in two common ways.
cd colenio/tools/jira-cli
uv sync
uv run colenio-jira-cli tui --project PROJpython -m venv .venv
# Linux/macOS: source .venv/bin/activate
# Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install -U pip
python -m pip install colenio-jira-cli
colenio-jira-cli tui --project PROJUseful for locked-down environments where virtual environments are not allowed.
python -m pip install --user -U pip
python -m pip install --user colenio-jira-cli
colenio-jira-cli tui --project PROJIf the command is not found on Windows, ensure your user Scripts path is in PATH:
$scripts = Join-Path (py -m site --user-base) "Scripts"
$env:PATH += ";$scripts"
# Or restart the terminal after updating PATH permanently# Install dev dependencies
uv sync --extra dev --extra local-dev
# Run tests
uv run pytest
# Format and lint
uv run black jira_cli
uv run ruff check jira_cli
# Run standardized local QA scripts
uv run jira-cli-ruff
uv run jira-cli-radon
uv run jira-cli-pylint
uv run jira-cli-check
uv run jira-cli-qaAdd to $PROFILE (e.g., via dotfiles/aliases.ps1):
function jira-cli {
uvx colenio-jira-cli @args
}
# Or use directly
alias jira = 'uvx colenio-jira-cli'Then:
jira list --project PROJMIT