jira.nvim
July 21, 2026 ยท View on GitHub
Caution
Still in early development, will have breaking changes!
jira.nvim
A Neovim plugin for managing JIRA tasks with a beautiful UI.
Note
Disucssion: How do you want to create, edit the jira ticket in this plugin? https://github.com/letieu/jira.nvim/discussions/1
Features
- ๐ View active sprint tasks
- ๐ฅ Query tasks by custom JQL
- ๐ Read task as markdown
- ๐ Change task status
- โฑ๏ธ Log time on tasks
- ๐ค Assign tasks
- ๐จ Git integration
- ๐จ Comment
- ๐จ Create, edit task
- โฑ๏ธ Work report
Install
lazy.nvim
{
"letieu/jira.nvim",
opts = {
-- Your setup options...
jira = {
limit = 200, -- Global limit of tasks per view (default: 200)
},
},
}
Authentication
The plugin uses a command-based authentication system. Run the following command to log in:
:Jira auth login
You will be prompted for:
- Jira Base URL: (e.g.,
https://your-domain.atlassian.net) - Auth Type:
basic(default) orpat - Email: (Required for
basic) - API Token / PAT: Your Jira API token or Personal Access Token
Credentials are securely stored in your Neovim data directory (:Jira auth info to see the exact path).
Other auth commands:
:Jira auth info: Show current authentication status and file location.:Jira auth logout: Remove stored credentials.
Configuration
require('jira').setup({
-- Jira settings
jira = {
api_version = "3", -- API version: "2" or "3" (default: "3")
limit = 200, -- Global limit of tasks per view (default: 200)
logging = false, -- Enable HTTP request/response logging (default: false)
},
active_sprint_query = "project = '%s' AND sprint in openSprints() ORDER BY Rank ASC",
-- Saved JQL queries for the JQL tab
-- Use %s as a placeholder for the project key
queries = {
["Next sprint"] = "project = '%s' AND sprint in futureSprints() ORDER BY Rank ASC",
["Backlog"] = "project = '%s' AND (issuetype IN standardIssueTypes() OR issuetype = Sub-task) AND (sprint IS EMPTY OR sprint NOT IN openSprints()) AND statusCategory != Done ORDER BY Rank ASC",
["My Tasks"] = "assignee = currentUser() AND statusCategory != Done ORDER BY updated DESC",
},
-- Project-specific overrides
-- Still think about this config, maybe not good enough
projects = {
["DEV"] = {
story_point_field = "customfield_10035", -- Custom field ID for story points
custom_fields = { -- Custom field to display in markdown view
{ key = "customfield_10016", label = "Acceptance Criteria" }
},
}
}
})
Note: When
logging = true, HTTP requests/responses are logged to~/.local/state/nvim/jira_nvim.logwith sensitive auth tokens redacted.
Usage
Run the following command to open the Jira board:
" Authentication
:Jira auth login
:Jira auth info
:Jira auth logout
" Open board
:Jira <PROJECT_KEY>
" Open one task view (info)
:Jira info ISSUE_KEY
" Create new issue
:Jira create [PROJECT_KEY]
" Edit existing issue
:Jira edit ISSUE_KEY
If you don't provide a project key, you will be prompted to enter one.
Keybindings
Help
Hโ Show help
Navigation & View
<Tab>โ Toggle node (Expand / Collapse)S,J,Hโ Switch view (Sprint, JQL, Help)qโ Close boardrโ Refresh current view
Issue Actions (In board)
iโ Create issue / sub-task (under cursor)Kโ Quick issue details (popup)gdโ Read task as infogeโ Edit taskgxโ Open task in browsergsโ Update statusgaโ Change assigneegwโ Add timegbโ Checkout / create branchgoโ Show child issues (sub-tasks)
Tips
- How to get custom field list -> go to
https://your-domain.atlassian.net/rest/api/3/field
Development
Running Tests
make test
TODO
- Jira sprint board
- Config
- Expand, Collapse
- Read task (Markdown)
- Format time
- Backlog (via JQL Dashboard)
- Custom JQL & Saved Queries
- Change status
- Change assignee
- Log time
- Comment
- Create, Edit task
- Bulk actions
- Update UI when terminal size change ...
Thanks
Big thanks for gemini CLI free tier.
License
MIT ยฉ Tieu Le
Contributors โจ
Thanks goes to these wonderful people (emoji key):
Guennadi Maximov C ๐ป |
Jonas-Taha El Sesiy ๐ป |
Vivek Bheda ๐ป |
Roman Revyakin ๐ป |
benelori ๐ป |
AndromedaCLI ๐ป |
This project follows the all-contributors specification. Contributions of any kind welcome!