{"id":13560939,"url":"https://github.com/ankitpokhrel/jira-cli","last_synced_at":"2026-08-28T02:07:30.245Z","repository":{"id":37003801,"uuid":"314995099","full_name":"ankitpokhrel/jira-cli","owner":"ankitpokhrel","description":"🔥 Feature-rich interactive Jira command line.","archived":false,"fork":false,"pushed_at":"2026-08-19T11:07:22.000Z","size":86119,"stargazers_count":5914,"open_issues_count":162,"forks_count":407,"subscribers_count":35,"default_branch":"main","last_synced_at":"2026-08-26T00:28:35.912Z","etag":null,"topics":["atlassian","cli","cli-app","command-line","command-line-tool","console","go","golang","golang-cli","jira","jira-cli","made-in-nepal","productivity","productivity-tools","terminal","terminal-app","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ankitpokhrel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"custom":["https://paypal.me/pokharelankit"],"open_collective":"jira-cli"}},"created_at":"2020-11-22T08:48:39.000Z","updated_at":"2026-08-25T17:48:59.000Z","dependencies_parsed_at":"2026-08-26T00:34:15.856Z","dependency_job_id":null,"html_url":"https://github.com/ankitpokhrel/jira-cli","commit_stats":{"total_commits":426,"total_committers":39,"mean_commits":"10.923076923076923","dds":0.3356807511737089,"last_synced_commit":"34221786aaa12d5bc66039d164b6d9587b0799c7"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/ankitpokhrel/jira-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitpokhrel%2Fjira-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitpokhrel%2Fjira-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitpokhrel%2Fjira-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitpokhrel%2Fjira-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ankitpokhrel","download_url":"https://codeload.github.com/ankitpokhrel/jira-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitpokhrel%2Fjira-cli/sbom","scorecard":{"id":197278,"data":{"date":"2025-08-11","repo":{"name":"github.com/ankitpokhrel/jira-cli","commit":"adab79ff71c7191d467818e50a84874102f4c78f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.1,"checks":[{"name":"Code-Review","score":4,"reason":"Found 13/28 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker.yml:17","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/docker.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":10,"reason":"11 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker.yml:14"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.6.0 not signed: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/213472212","Warn: release artifact v1.5.2 not signed: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/176269120","Warn: release artifact v1.5.1 not signed: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/138831493","Warn: release artifact v1.5.0 not signed: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/136444295","Warn: release artifact v1.4.0 not signed: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/102305075","Warn: release artifact v1.6.0 does not have provenance: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/213472212","Warn: release artifact v1.5.2 does not have provenance: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/176269120","Warn: release artifact v1.5.1 does not have provenance: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/138831493","Warn: release artifact v1.5.0 does not have provenance: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/136444295","Warn: release artifact v1.4.0 does not have provenance: https://api.github.com/repos/ankitpokhrel/jira-cli/releases/102305075"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/ankitpokhrel/jira-cli/docker.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:5","Warn: containerImage not pinned by hash: Dockerfile:20: pin your Docker image by updating alpine:3.19 to alpine:3.19@sha256:3be987e6cde1d07e873c012bf6cfe941e6e85d16ca5fc5b8bedc675451d2de67","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T22:03:39.110Z","repository_id":37003801,"created_at":"2025-08-16T22:03:39.111Z","updated_at":"2025-08-16T22:03:39.111Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36927216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-08-26T02:00:06.703Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atlassian","cli","cli-app","command-line","command-line-tool","console","go","golang","golang-cli","jira","jira-cli","made-in-nepal","productivity","productivity-tools","terminal","terminal-app","tui"],"created_at":"2024-08-01T13:00:50.998Z","updated_at":"2026-08-28T02:07:30.232Z","avatar_url":"https://github.com/ankitpokhrel.png","language":"Go","funding_links":["https://paypal.me/pokharelankit","https://opencollective.com/jira-cli"],"categories":["Repositories","Go","cli","\u003ca name=\"online\"\u003e\u003c/a\u003eOnline search and resources","Uncategorized","User Interface"],"sub_categories":["Uncategorized","Applications and End User Tools"],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1 align=\"center\"\u003eJiraCLI\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/ankitpokhrel/jira-cli/actions?query=workflow%3Abuild+branch%3Amain\"\u003e\n            \u003cimg alt=\"Build\" src=\"https://img.shields.io/github/actions/workflow/status/ankitpokhrel/jira-cli/ci.yml?branch=main\u0026style=flat-square\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/ankitpokhrel/jira-cli/blob/main/LICENSE\"\u003e\n            \u003cimg alt=\"Software License\" src=\"https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"#\"\u003e\n            \u003cimg alt=\"Downloads\" src=\"https://img.shields.io/github/downloads/ankitpokhrel/jira-cli/total?style=flat-square\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://opencollective.com/jira-cli#backers\"\u003e\n            \u003cimg alt=\"Financial Contributors\" src=\"https://img.shields.io/opencollective/backers/jira-cli?style=flat-square\" /\u003e\n        \u003c/a\u003e\n    \u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ci\u003eFeature-rich Interactive Jira Command Line\u003c/i\u003e\n    \u003c/p\u003e\n    \u003cimg align=\"center\" alt=\"JiraCLI Demo\" src=\".github/assets/demo.gif\" /\u003e\u003cbr/\u003e\u003cbr/\u003e\n    \u003cp align=\"center\"\u003e\n         \u003csub\u003e\n            Financial support from private and corporate sponsors ensures the tool's continued development.\u003cbr/\u003e\n            Please \u003ca href=\"https://opencollective.com/jira-cli#backers\"\u003econsider sponsoring the project\u003c/a\u003e if you or your company rely on JiraCLI.\n         \u003c/sub\u003e\u003cbr/\u003e\u003cbr/\u003e\n        \u003ca href=\"https://opencollective.com/jira-cli#backers\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://opencollective.com/jira-cli/backers.svg\" alt=\"jira-cli open collective badge\"\u003e\n        \u003c/a\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv\u003e\n   \u003ch2 align=\"center\"\u003eSupporters\u003c/h2\u003e\n   \u003cp align=\"center\"\u003e\n      \u003ca href=\"https://www.atlassian.com?from=ankitpokhrel/jira-cli\" target=\"_blank\"\u003e\n         \u003cimg alt=\"Atlassian Logo\" src=\".github/assets/supporters/atlassian.png\" /\u003e\n      \u003c/a\u003e\u003cbr/\u003e\n      \u003ca href=\"https://www.jetbrains.com/?from=ankitpokhrel/jira-cli\" target=\"_blank\"\u003e\n         \u003cimg alt=\"JetBrains Logo\" src=\".github/assets/supporters/jetbrains.png\" /\u003e\n      \u003c/a\u003e\n   \u003c/p\u003e\n\u003c/div\u003e\n\nJiraCLI is an interactive command line tool for Atlassian Jira that will help you avoid using the Jira UI to some extent. This\ntool may not be able to do everything, but it has all the essential features required to improve your day-to-day workflow with Jira.\n\nThe tool started with the idea of making issue search and navigation as straightforward as possible. However, with the\nhelp of [outstanding supporters like you](#support-the-project), we evolved, and the tool now includes all necessary\nfeatures like issue creation, cloning, linking, ticket transition, and much more.\n\n\u003e This tool is heavily inspired by the [GitHub CLI](https://github.com/cli/cli)\n\n## Supported platforms\n\u003e [!NOTE]\n\u003e Some features might work slightly differently in Jira Cloud versus on-premises installations due to the\nnature of the data. Yet, we've attempted to make the experience as similar as possible.\n\n| Platform | \u003ca href=\"#\"\u003e\u003cimg alt=\"Linux\" src=\"https://img.shields.io/badge/Linux-%E2%9C%93-dark--green?logo=linux\u0026logoColor=white\u0026style=flat-square\" /\u003e\u003c/a\u003e\u003ca href=\"#\"\u003e\u003cimg alt=\"macOS\" src=\"https://img.shields.io/badge/macOS-%E2%9C%93-dark--green?logo=apple\u0026style=flat-square\" /\u003e\u003c/a\u003e\u003ca href=\"#\"\u003e\u003cimg alt=\"FreeBSD\" src=\"https://img.shields.io/badge/FreeBSD-%E2%9C%93-dark--green?logo=freebsd\u0026style=flat-square\" /\u003e\u003c/a\u003e\u003ca href=\"#\"\u003e\u003cimg alt=\"NetBSD\" src=\"https://img.shields.io/badge/NetBSD-%E2%9C%93-dark--green?logo=netbsd\u0026logoColor=white\u0026style=flat-square\" /\u003e\u003c/a\u003e\u003ca href=\"#\"\u003e\u003cimg alt=\"Windows\" src=\"https://img.shields.io/badge/Windows-partial-yellow?logo=windows\u0026style=flat-square\" /\u003e\u003c/a\u003e |\n| :------------- | :----------: |\n| **Jira**  | \u003ca href=\"#\"\u003e\u003cimg alt=\"Jira Cloud\" src=\"https://img.shields.io/badge/Jira Cloud-%E2%9C%93-dark--green?logo=jira\u0026style=flat-square\" /\u003e\u003c/a\u003e\u003ca href=\"#\"\u003e\u003cimg alt=\"Jira Server\" src=\"https://img.shields.io/badge/Jira Server-%E2%9C%93-dark--green?logo=jira\u0026style=flat-square\" /\u003e\u003c/a\u003e |\n\n## Installation\n`jira-cli` is available as a downloadable packaged binary for Linux, macOS, and Windows from the [releases page](https://github.com/ankitpokhrel/jira-cli/releases).\n\nYou can use Docker to quickly try out `jira-cli`.\n\n```sh\ndocker run -it --rm ghcr.io/ankitpokhrel/jira-cli:latest\n```\n\nFollow the [installation guide](https://github.com/ankitpokhrel/jira-cli/wiki/Installation) for other installation methods like `Homebrew`, `Nix`, etc.\n\n\u003ca href=\"https://repology.org/project/jira-cli-go/versions\"\u003e\n    \u003cimg src=\"https://repology.org/badge/vertical-allrepos/jira-cli-go.svg\" alt=\"Packaging status\"\u003e\n\u003c/a\u003e\n\n## Getting started\n\n#### Cloud server\n\n1. [Get a Jira API token](https://id.atlassian.com/manage-profile/security/api-tokens) and export it to your shell as\n   a `JIRA_API_TOKEN` variable. Add it to your shell configuration file, for instance, `$HOME/.bashrc`, so that the\n   variable is always available. Alternatively, you can also use `.netrc` file or `keychain` to set the token. Learn\n   more [here](https://github.com/ankitpokhrel/jira-cli/discussions/356).\n2. Run `jira init`, select installation type as `Cloud`, and provide required details to generate a config file required\n   for the tool.\n\n#### On-premises installation\n\n1. Export required environment variables:\n   - If you are using basic auth, export the `password` you use to login to Jira as a `JIRA_API_TOKEN` variable.\n   - If you are using personal access token (PAT), get the `token` from your Jira profile and export it as\n     a `JIRA_API_TOKEN` variable. In addition to this, set `JIRA_AUTH_TYPE` env to `bearer`.\n   - Add these ENVs to your shell configuration file, for instance, `$HOME/.bashrc`, so that they are always available.\n   - Alternatively, you can also use `.netrc` file or `keychain` to set the token. Learn\n     more [here](https://github.com/ankitpokhrel/jira-cli/discussions/356).\n2. Run `jira init`, select installation type as `Local`, and provide the required details to generate a config file required\n   for the tool.\n   - The most common auth type for an on-premises installation is `basic`. If you are using your Jira login credentials\n     (username and password), select the `basic` auth type.\n   - If you want to use `mtls` (client certificates), select auth type `mtls` and provide the CA Cert, client Key, and client cert.\n\n\u003e [!IMPORTANT]\n\u003e If your on-premises Jira installation is using a language other than `English`, then the issue/epic creation\n   may not work because the older version of Jira API doesn't return the untranslated name for `issuetypes`. In that case,\n   you will have to fill in `epic.name`, `epic.link` and `issue.types.*.handle` fields manually in the generated config\n   to get the expected behavior.\n\nSee [FAQs](https://github.com/ankitpokhrel/jira-cli/discussions/categories/faqs) for frequently asked questions.\n\n#### Authentication types\n\nThe tool supports `basic`, `bearer` (Personal Access Token), and `mtls` (Client Certificates) authentication types. Basic auth is used by\ndefault.\n\n* If you want to use PAT, you need to set `JIRA_AUTH_TYPE` as `bearer`.\n* If you want to use `mtls` run `jira init`. Select installation type `Local`, and then select authentication type as `mtls`.\n  * In case `JIRA_API_TOKEN` variable is set it will be used together with `mtls`.\n\n#### Shell completion\nCheck `jira completion --help` for more info on setting up a Bash/Zsh shell completion.\n\n#### Multiple projects\n\nYou can load a specific configuration file by using the `--config/-c` flag, or by setting the `JIRA_CONFIG_FILE` environment variable to specify the file's location.\n\n```sh\n$ JIRA_CONFIG_FILE=./local_jira_config.yaml jira issue list\n\n# Alternatively, use the `--config/-c` flag\n$ jira issue list -c ./local_jira_config.yaml\n```\n\n## Usage\nThe tool currently comes with an issue, epic, and sprint explorer. The flags are [POSIX-compliant](https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html).\nYou can combine available flags in any order to create a unique query. For example, the command below will give you high priority issues created this month\nwith status `To Do` that are assigned to you and has the label `backend`.\n```sh\njira issue list -yHigh -s\"To Do\" --created month -lbackend -a$(jira me)\n```\n\n### Navigation\nThe lists are displayed in an interactive UI by default.\n- Use arrow keys or `j, k, h, l` characters to navigate through the list.\n- Use `g` and `G` to quickly navigate to the top and bottom respectively.\n- Use `CTRL + f` to scroll through a page downwards direction.\n- Use `CTRL + b` to scroll through a page in upwards direction.\n- Press `v` to view selected issue details.\n- Press `m` to transition the selected issue.\n- Press `CTRL + r` or `F5` to refresh the issues list.\n- Hit `ENTER` to open the selected issue in the browser.\n- Press `c` to copy issue URL to the system clipboard. This requires `xclip` / `xsel` on Linux.\n- Press `CTRL + k` to copy issue key to the system clipboard.\n- In an explorer view, press `w` or `TAB` to toggle focus between the sidebar and the contents screen.\n- Press `q` / `ESC` / `CTRL + c` to quit.\n- Press `?` to open the help window.\n\n### Resources\n- [FAQs](https://github.com/ankitpokhrel/jira-cli/discussions/categories/faqs)\n- [Introduction and Motivation](https://medium.com/@ankitpokhrel/introducing-jira-cli-the-missing-command-line-tool-for-atlassian-jira-fe44982cc1de)\n- [Getting Started with JiraCLI](https://www.mslinn.com/blog/2022/08/12/jiracli.html)\n\n## Commands\n### Issue\nIssues are displayed in an interactive table view by default. You can output the results in a plain view using the `--plain` flag.\n\n#### List\nThe `list` command lets you search and navigate the issues. The issues are sorted by `created` field in descending order by default.\n\n```sh\n# List recent issues\n$ jira issue list\n\n# List issues created in last 7 days\n$ jira issue list --created -7d\n\n# List issues in status \"To Do\"\n$ jira issue list -s\"To Do\"\n\n# List recent issues in plain mode\n$ jira issue list --plain\n\n# List recent issues in raw JSON format\n$ jira issue list --raw\n\n# List recent issues in csv format\n$ jira issue list --csv\n\n# List issue in the same order as you see in the UI\n$ jira issue list --order-by rank --reverse\n\n# You can execute raw JQL within a given project context using `--jql/-q` option.\n# For instance, the following command will list issues in the current project whose\n# summary has a word cli.\n$ jira issue list -q \"summary ~ cli\"\n```\n\nCheck some more examples/use-cases below.\n\n\u003cdetails\u003e\u003csummary\u003eList issues that I am watching\u003c/summary\u003e\n\n```sh\njira issue list -w\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList issues assigned to me\u003c/summary\u003e\n\n```sh\njira issue list -a$(jira me)\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList issues assigned to a user and are reported by another user\u003c/summary\u003e\n\n```sh\njira issue list -a\"User A\" -r\"User B\"\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList issues assigned to me, is of high priority and is open\u003c/summary\u003e\n\n```sh\njira issue list -a$(jira me) -yHigh -sopen\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList issues assigned to no one and are created this week\u003c/summary\u003e\n\n```sh\njira issue list -ax --created week\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList issues with resolution won't do\u003c/summary\u003e\n\n```sh\njira issue list -R\"Won't do\"\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList issues whose status is not done and is created before 6 months and is assigned to someone\u003c/summary\u003e\n\n```sh\n# Tilde (~) acts as a not operator\njira issue list -s~Done --created-before -24w -a~x\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList issues created within an hour and updated in the last 30 minutes :stopwatch:\u003c/summary\u003e\n\n```sh\njira issue list --created -1h --updated -30m\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eGive me issues that are of high priority, are in progress, were created this month, and have given labels :fire:\u003c/summary\u003e\n\n```sh\njira issue list -yHigh -s\"In Progress\" --created month -lbackend -l\"high-prio\"\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eWait, what was that ticket I opened earlier today? :tired_face:\u003c/summary\u003e\n\n ```sh\n jira issue list --history\n ```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eWhat was the first issue I ever reported on the current board? :thinking:\u003c/summary\u003e\n\n```sh\njira issue list -r$(jira me) --reverse\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eWhat was the first bug I ever fixed in the current board? :beetle:\u003c/summary\u003e\n\n```sh\njira issue list -a$(jira me) -tBug -sDone -rFixed --reverse\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eWhat issues did I report this week? :man_shrugging:\u003c/summary\u003e\n\n```sh\njira issue list -r$(jira me) --created week\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eAm I watching any tickets in project XYZ? :monocle_face:\u003c/summary\u003e\n\n```sh\njira issue list -w -pXYZ\n```\n\u003c/details\u003e\n\n#### Create\nThe `create` command lets you create an issue.\n\n```sh\n# Create an issue using an interactive prompt\n$ jira issue create\n\n# Pass required parameters and use --no-input option to skip prompt\n$ jira issue create -tBug -s\"New Bug\" -yHigh -lbug -lurgent -b\"Bug description\" --fix-version v2.0 --no-input\n```\n\nTo attach epic to an issue on creation, you can use `-P/--parent` field. We call it parent because the semantics of epic\nhas been changed in `next-gen` project.\n\n```sh\n# Create an issue of type Story and attach it to epic with key EPIC-42\n$  jira issue create -tStory -s\"Epic during creation\" -PEPIC-42\n```\n\n![Create an issue](.github/assets/create.gif)\n\nYou can use a `--custom` flag to set custom fields while creating the issue. See [this post](https://github.com/ankitpokhrel/jira-cli/discussions/346) for more details.\n\nThe command supports both [GitHub-flavored](https://github.github.com/gfm/)\nand [Jira-flavored](https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all) Markdown for writing\ndescription. You can load pre-defined templates using `--template` flag.\n\n```sh\n# Load description from template file\n$ jira issue create --template /path/to/template.tmpl\n\n# Get description from standard input\n$ jira issue create --template -\n\n# Or, use pipe to read input directly from standard input\n$ echo \"Description from stdin\" | jira issue create -s\"Summary\" -tTask\n```\n\n![Markdown render preview](.github/assets/markdown.jpg)\n\u003e The preview above shows a Markdown template passed in JiraCLI and how it is rendered in the Jira UI.\n\n#### Edit\nThe `edit` command lets you edit an issue.\n\n```sh\n$ jira issue edit ISSUE-1\n\n# Edit issue in the configured project\n$ jira issue edit ISSUE-1 -s\"New Bug\" -yHigh -lbug -lurgent -CBackend -b\"Bug description\"\n\n# Use --no-input option to disable interactive prompt\n$ jira issue edit ISSUE-1 -s\"New updated summary\" --no-input\n\n# Use minus (-) to remove label, component or fixVersion\n# For instance, to edit issue to\n#   - remove label p2, component FE, fixVersion v1.0\n#   - add label p1, component BE, fixVersion v2.0\n$ jira issue edit ISSUE-1 --label -p2 --label p1 --component -FE --component BE --fix-version -v1.0 --fix-version v2.0\n```\n\n#### Assign\nThe `assign` command lets you assign a user to an issue.\n\n```sh\n# Assign user to an issue using an interactive prompt\n$ jira issue assign\n\n# Pass required parameters to skip prompt\n$ jira issue assign ISSUE-1 \"Jon Doe\"\n\n# Assign to self\n$ jira issue assign ISSUE-1 $(jira me)\n\n# Will prompt for selection if keyword suffix returns multiple entries\n$ jira issue assign ISSUE-1 suffix\n\n# Assign to default assignee\n$ jira issue assign ISSUE-1 default\n\n# Unassign\n$ jira issue assign ISSUE-1 x\n```\n\n![Assign issue to a user](.github/assets/assign.gif)\n\n#### Move/Transition\nThe `move` command lets you transition an issue from one state to another.\n\n```sh\n# Move an issue using an interactive prompt\n$ jira issue move\n\n# Pass required parameters to skip prompt\n$ jira issue move ISSUE-1 \"In Progress\"\n```\n\n![Move an issue](.github/assets/move.gif)\n\nIf your workflow allows to add comment, resolution or assignee while moving an issue, you can do so as shown below.\nSee [this documentation](https://confluence.atlassian.com/jirakb/how-to-add-a-comment-during-a-transition-779160682.html) on how to setup your workflow to allow these fields.\n\n```sh\n# Move an issue and add comment\n$ jira issue move ISSUE-1 \"In Progress\" --comment \"Started working on it\"\n\n# Set resolution to fixed and assign to self while moving the issue\n$ jira issue move ISSUE-1 Done -RFixed -a$(jira me)\n```\n\nTo transition the selected issue from the TUI, press `m`.\n\n#### View\nThe `view` command lets you see issue details in a terminal. Atlassian document is roughly converted to Markdown\nand is nicely displayed in the terminal.\n\nThe command uses `less` as a pager by default. To set your own pager, see https://github.com/ankitpokhrel/jira-cli/discussions/569.\n\n```sh\n$ jira issue view ISSUE-1\n```\n\n![View an issue](.github/assets/view.gif)\n\nThe view screen will display linked issues and the latest comment after the description. Note that the displayed comment may\nnot be the latest one if you for some reason have more than 5k comments in a ticket.\n\n```sh\n# Show 5 recent comments when viewing the issue\n$ jira issue view ISSUE-1 --comments 5\n```\n\n#### Link\nThe `link` command lets you link two issues.\n\n```sh\n# Link an issue using an interactive prompt\n$ jira issue link\n\n# Pass required parameters to skip prompt\n$ jira issue link ISSUE-1 ISSUE-2 Blocks\n```\n\n##### Remote\nThe `remote` command lets you add a remote web link to an issue.\n\n```sh\n# Adds a remote web link using an interactive prompt\n$ jira issue link remote\n\n# Pass required parameters to skip prompt\n$ jira issue link remote ISSUE-1 https://example.com \"Example text\"\n```\n\n#### Unlink\nThe `unlink` command lets you unlink two linked issues.\n\n```sh\n# Unlink issues using interactive prompt\n$ jira issue unlink\n\n# Pass required parameters to skip prompt\n$ jira issue unlink ISSUE-1 ISSUE-2\n```\n\n#### Clone\nThe `clone` command lets you clone an issue. You can update fields like summary, priority, assignee, labels, and\ncomponents when cloning the issue. The command also allows you to replace a part of the string (case-sensitive)\nin summary and description using `--replace/-H` option.\n\n```sh\n# Clone an issue\n$ jira issue clone ISSUE-1\n\n# Clone issue and modify the summary, priority and assignee\n$ jira issue clone ISSUE-1 -s\"Modified summary\" -yHigh -a$(jira me)\n\n# Clone issue and replace text from summary and description\n$ jira issue clone ISSUE-1 -H\"find me:replace with me\"\n```\n\n#### Delete\nThe `delete` command lets you delete an issue.\n\n```sh\n# Delete an issue using an interactive prompt\n$ jira issue delete\n\n# Pass required parameters to skip prompt\n$ jira issue delete ISSUE-1\n\n# Delete task along with all of its subtasks\n$ jira issue delete ISSUE-1 --cascade\n```\n\n#### Comment\nThe `comment` command provides a list of sub-commands to manage issue comments.\n\n##### Add\nThe `add` command lets you add a comment to an issue. The command supports both [GitHub-flavored](https://github.github.com/gfm/)\nand [Jira-flavored](https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all) Markdown for writing\ncomment. You can load pre-defined templates using `--template` flag.\n\n```sh\n# Add a comment using an interactive prompt\n$ jira issue comment add\n\n# Pass required parameters to skip prompt\n$ jira issue comment add ISSUE-1 \"My comment body\"\n\n# Same as above but as an internal comment\n$ jira issue comment add ISSUE-1 \"My comment body\" --internal\n\n# Load comment from template file\n$ jira issue comment add ISSUE-1 --template /path/to/template.tmpl\n\n# Get comment from standard input\n$ jira issue comment add ISSUE-1 --template -\n\n# Or, use pipe to read input directly from standard input\n$ echo \"Comment from stdin\" | jira issue comment add ISSUE-1\n```\n\n\u003e [!NOTE]\n\u003e For the comment body, the positional argument always takes precedence over the `--template` flag if both of them are passed. In the\nexample below, the body will be picked from positional argument instead of the template.\n```sh\njira issue comment add ISSUE-42 \"comment body positional\" --template - \u003c\u003c'EOF'\ncomment body template\nEOF\n```\n\n#### Worklog\nThe `worklog` command provides a list of sub-commands to manage issue worklog (timelog).\n\n##### Add\nThe `add` command lets you add a worklog to an issue. The command supports Markdown for worklog comments.\n\n```sh\n# Add a worklog using an interactive prompt\n$ jira issue worklog add\n\n# Pass required parameters and use --no-input to skip prompt\n$ jira issue worklog add ISSUE-1 \"2d 3h 30m\" --no-input\n\n# You can add a comment using --comment flag when adding a worklog\n$ jira issue worklog add ISSUE-1 \"10m\" --comment \"This is a comment\" --no-input\n```\n\n### Epic\nEpics are displayed in an explorer view by default. You can output the results in a table view using the `--table` flag.\nWhen viewing epic issues, you can use all filters available for the issue command.\n\nSee [usage](#navigation) to learn more about UI interaction.\n\n#### List\nYou can use all flags supported by `issue list` command here except for the issue type.\n\n```sh\n# List epics\n$ jira epic list\n\n# List epics in a table view\n$ jira epic list --table\n\n# List epics reported by me and are open\n$ jira epic list -r$(jira me) -sOpen\n\n# List issues in an epic\n$ jira epic list KEY-1\n\n# List all issue in an epic KEY-1 that is unassigned and has a high priority\n$ jira epic list KEY-1 -ax -yHigh\n\n# List high priority epics\n$ jira epic list KEY-1 -yHigh\n\n# List epic issues ordered by rank in ascending order\n$ jira epic list KEY-1 --order-by rank --reverse\n```\n\n#### Create\nCreating an epic is the same as creating the issue except you also need to provide an epic name.\n\n```sh\n# Create an issue using an interactive prompt\n$ jira epic create\n\n# Pass required parameters to skip prompt or use --no-input flag to skip prompt for non-mandatory params\n$ jira epic create -n\"Epic epic\" -s\"Everything\" -yHigh -lbug -lurgent -b\"Epic description\"\n```\n\n#### Add\nThe `add` command allows you to add issues to the epic. You can add up to 50 issues to the epic at once.\n\n```sh\n# Add issues to the epic using an interactive prompt\n$ jira epic add\n\n# Pass required parameters to skip prompt\n$ jira epic add EPIC-KEY ISSUE-1 ISSUE-2\n```\n\n#### Remove\nThe `remove` command allows you to remove issues from the epic. You can remove up to 50 issues from the epic at once.\n\n```sh\n# Remove issues to the epic using an interactive prompt\n$ jira epic remove\n\n# Pass required parameters to skip prompt\n$ jira epic remove ISSUE-1 ISSUE-2\n```\n\n### Sprint\nSprints are displayed in an explorer view by default. You can output the results in a table view using the `--table` flag.\nWhen viewing sprint issues, you can use all filters available for the issue command. The tool only shows 25 recent sprints.\n\nSee [usage](#navigation) to learn more about UI interaction.\n\n#### List\nYou can use all flags supported by `issue list` command to filter issues in the sprint.\n\n```sh\n# List sprints in an explorer view\n$ jira sprint list\n\n# List sprints in a table view\n$ jira sprint list --table\n\n# List issues in the current active sprint\n$ jira sprint list --current\n\n# List issues in the current active sprint that are assigned to me\n$ jira sprint list --current -a$(jira me)\n\n# List issues in the previous sprint\n$ jira sprint list --prev\n\n# List issues in next planned sprint\n$ jira sprint list --next\n\n# List future and active sprints\n$ jira sprint list --state future,active\n\n# List issues in a particular sprint. You can use all flags supported by issue list command here.\n# To get sprint id use `jira sprint list` or `jira sprint list --table`\n$ jira sprint list SPRINT_ID\n\n# List high priority issues in a sprint are assigned to me\n$ jira sprint list SPRINT_ID -yHigh -a$(jira me)\n\n# List sprint issues ordered by rank in ascending order\n$ jira sprint list SPRINT_ID --order-by rank --reverse\n```\n\n#### Add\nThe `add` command allows you to add issues to the sprint. You can add up to 50 issues to the sprint at once.\n\n```sh\n# Add issues to the sprint using interactive prompt\n$ jira sprint add\n\n# Pass required parameters to skip prompt\n$ jira sprint add SPRINT_ID ISSUE-1 ISSUE-2\n```\n\n### Releases\n\nInteract with releases (project versions).  \nEnsure the [feature is enabled](https://support.atlassian.com/jira-software-cloud/docs/enable-releases-and-versions/) on your instance.\n\n#### List\n\n```sh\n# List releases for default project\n$ jira release list\n\n# List releases for specific project\n$ jira release list --project 1000\n$ jira release list --project KEY\n```\n\n### Other commands\n\n\u003cdetails\u003e\u003csummary\u003eNavigate to the project\u003c/summary\u003e\n\n```sh\njira open\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eNavigate to the issue\u003c/summary\u003e\n\n```sh\njira open KEY-1\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList all projects you have access to\u003c/summary\u003e\n\n```sh\njira project list\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eList all boards in a project\u003c/summary\u003e\n\n```sh\njira board list\n```\n\u003c/details\u003e\n\n## Scripts\nOften times, you may want to use the output of the command to do something cool. However, the default interactive UI might not allow you to do that.\nThe tool comes with the `--plain` flag that displays results in a simple layout that can then be manipulated from the shell script.\n\nSome example scripts are listed below.\n\n\u003cdetails\u003e\u003csummary\u003eTickets created per day this month\u003c/summary\u003e\n\n```bash\n#!/usr/bin/env bash\n\ntickets=$(jira issue list --created month --plain --columns created --no-headers | awk '{print $2}' | awk -F'-' '{print $3}' | sort -n | uniq -c)\n\necho \"${tickets}\" | while IFS=$'\\t' read -r line; do\n  day=$(echo \"${line}\" | awk '{print $2}')\n  count=$(echo \"${line}\" | awk '{print $1}')\n\n  printf \"Day #%s: %s\\n\" \"${day}\" \"${count}\"\ndone\n\n# Output\nDay #01: 19\nDay #02: 10\nDay #03: 21\n...\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eNumber of tickets per sprint\u003c/summary\u003e\n\n```bash\n#!/usr/bin/env bash\n\nsprints=$(jira sprint list --table --plain --columns id,name --no-headers)\n\necho \"${sprints}\" | while IFS=$'\\t' read -r id name; do\n  count=$(jira sprint list \"${id}\" --plain --no-headers 2\u003e/dev/null | wc -l)\n\n  printf \"%10s: %3d\\n\" \"${name}\" $((count))\ndone\n\n# Output\nSprint 3:   55\nSprint 2:   40\nSprint 1:   30\n...\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eNumber of unique assignee per sprint\u003c/summary\u003e\n\n```bash\n#!/usr/bin/env bash\n\nsprints=$(jira sprint list --table --plain --columns id,name --no-headers)\n\necho \"${sprints}\" | while IFS=$'\\t' read -r id name; do\n  count=$(jira sprint list \"${id}\" --plain --columns assignee --no-headers 2\u003e/dev/null | awk '{print $2}' | awk NF | sort -n | uniq | wc -l)\n\n  printf \"%10s: %3d\\n\" \"${name}\" $((count))\ndone\n\n# Output\nSprint 3:   5\nSprint 2:   4\nSprint 1:   3\n```\n\u003c/details\u003e\n\n## Known Issues\n\n1. Not all [Atlassian nodes](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/#nodes) are\n   translated properly at the moment which can cause formatting issues sometimes.\n\n## Feature requests\n\nPlease [open a discussion](https://github.com/ankitpokhrel/jira-cli/discussions/categories/ideas) in `ideas` category for the proposed feature.\n\n##### How these requests are usually prioritized?\n\n- The feature that is straightforward to implement, doesn't require too much mental power, and can be done even I am lazy will be picked first.\n- If the feature is something that I am missing in my day-to-day work, it might be done first.\n- Rest of the features will be picked based on the [number of votes](https://github.com/ankitpokhrel/jira-cli/discussions/categories/ideas) on the particular feature.\n\n## Development\n1. Clone the repo.\n   ```sh\n   git clone git@github.com:ankitpokhrel/jira-cli.git\n   ```\n\n2. Optional: If you want to run a Jira instance locally, you can use the following make recipe.\n   The trial license key can be generated from the \"Licenses\" section in the [Atlassian admin](https://my.atlassian.com).\n   ```sh\n   make jira.server\n   ```\n\n3. Make changes, build the binary, and test your changes.\n   ```sh\n   make deps install\n   ```\n\n4. Run CI steps locally before submitting a PR.\n   ```sh\n   make ci\n   ```\n\n## Support the project\nYour suggestions and feedbacks are highly appreciated. Please feel free\nto [start a discussion](https://github.com/ankitpokhrel/jira-cli/discussions)\nor [create an issue](https://github.com/ankitpokhrel/jira-cli/issues/new) to share your experience with the tool or to\ndiscuss a feature/issue.\n\nIf you think this tool is useful, saves you a lot of work, and lets you sleep much better, then consider supporting the\nproject by any of the following means:\n\n- [Star the repo](https://github.com/ankitpokhrel/jira-cli/stargazers).\n- Spread the word by sharing the project on social media or with friends.\n- [Report bugs](https://github.com/ankitpokhrel/jira-cli/issues/new/choose)\n  or [propose solutions](https://github.com/ankitpokhrel/jira-cli/issues).\n- [Donate a small amount](https://opencollective.com/jira-cli#backers).\n\n\u003cdiv\u003e\n   \u003cbr/\u003e\n   \u003cp align=\"center\"\u003e\n      \u003csub\u003eMade with 💚\u003c/sub\u003e\n   \u003c/p\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankitpokhrel%2Fjira-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fankitpokhrel%2Fjira-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankitpokhrel%2Fjira-cli/lists"}