{"id":48970880,"url":"https://github.com/mulhamna/jira-commands","last_synced_at":"2026-05-16T08:20:57.930Z","repository":{"id":351491849,"uuid":"1211052896","full_name":"mulhamna/jira-commands","owner":"mulhamna","description":"Jira toolkit for terminals, coding assistants, and bots.","archived":false,"fork":false,"pushed_at":"2026-05-11T08:45:51.000Z","size":1916,"stargazers_count":37,"open_issues_count":0,"forks_count":11,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T09:14:07.140Z","etag":null,"topics":["atlassian","atlassian-jira","crates","jira","rust","tui"],"latest_commit_sha":null,"homepage":"http://jirac.keton.id/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mulhamna.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-15T02:49:35.000Z","updated_at":"2026-05-11T08:45:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mulhamna/jira-commands","commit_stats":null,"previous_names":["mulhamna/jira-commands"],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/mulhamna/jira-commands","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulhamna%2Fjira-commands","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulhamna%2Fjira-commands/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulhamna%2Fjira-commands/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulhamna%2Fjira-commands/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mulhamna","download_url":"https://codeload.github.com/mulhamna/jira-commands/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mulhamna%2Fjira-commands/sbom","scorecard":{"id":1246494,"data":{"date":"2026-04-25T00:14:09Z","repo":{"name":"github.com/mulhamna/jira-commands","commit":"b148c86b98d40f040a40ad0cf6bfdeff9c0fa75b"},"scorecard":{"version":"v5.3.0","commit":"c22063e786c11f9dd714d777a687ff7c4599b600"},"score":5.5,"checks":[{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#security-policy"}},{"name":"Code-Review","score":0,"reason":"Found 1/23 approved changesets -- score normalized to 0","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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#code-review"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#binary-artifacts"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dependency-update-tool"}},{"name":"Maintained","score":0,"reason":"project was created within the last 90 days. Please review its contents carefully","details":["Warn: Repository was created within the last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/pr-automerge.yml:20","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-please.yml:47","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-recover.yml:23","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-recover.yml:63","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-recover.yml:178","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-recover.yml:227","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-recover.yml:259","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-recover.yml:375","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-tag.yml:35","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-tag.yml:99","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-tag.yml:238","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-tag.yml:306","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-tag.yml:354","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-tag.yml:512","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release-tag.yml:579","Info: jobLevel 'actions' permission set to 'read': .github/workflows/security.yml:25","Info: jobLevel 'contents' permission set to 'read': .github/workflows/security.yml:26","Info: jobLevel 'contents' permission set to 'read': .github/workflows/security.yml:53","Info: jobLevel 'contents' permission set to 'read': .github/workflows/security.yml:74","Info: jobLevel 'contents' permission set to 'read': .github/workflows/security.yml:93","Info: jobLevel 'contents' permission set to 'read': .github/workflows/winget-submit.yml:32","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/clawhub-publish-jirac.yml:14","Info: found token with 'none' permissions: .github/workflows/pr-automerge.yml:1","Info: found token with 'none' permissions: .github/workflows/release-please.yml:1","Info: found token with 'none' permissions: .github/workflows/release-recover.yml:1","Info: found token with 'none' permissions: .github/workflows/release-tag.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/security.yml:16","Info: topLevel 'contents' permission set to 'read': .github/workflows/winget-submit.yml:15"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#token-permissions"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":9,"reason":"dependency not pinned by hash detected -- score normalized to 9","details":["Warn: npmCommand not pinned by hash: .github/workflows/clawhub-publish-jirac.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/release-recover.yml:112","Warn: pipCommand not pinned by hash: .github/workflows/release-tag.yml:149","Info:  41 out of  41 GitHub-owned GitHubAction dependencies pinned","Info:  28 out of  28 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of   2 pipCommand 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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#pinned-dependencies"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#license"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#cii-best-practices"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/ci.yml:108"],"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#packaging"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2025-0141","Warn: Project is vulnerable to: RUSTSEC-2025-0057","Warn: Project is vulnerable to: RUSTSEC-2026-0002 / GHSA-rhfx-m35p-ff5j","Warn: Project is vulnerable to: RUSTSEC-2025-0119","Warn: Project is vulnerable to: RUSTSEC-2024-0436","Warn: Project is vulnerable to: RUSTSEC-2024-0320"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 7 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#sast"}},{"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/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.17.1 not signed: https://api.github.com/repos/mulhamna/jira-commands/releases/313477919","Warn: release artifact v0.17.0 not signed: https://api.github.com/repos/mulhamna/jira-commands/releases/313305297","Warn: release artifact v0.16.5 not signed: https://api.github.com/repos/mulhamna/jira-commands/releases/313075555","Warn: release artifact v0.16.4 not signed: https://api.github.com/repos/mulhamna/jira-commands/releases/313016532","Warn: release artifact v0.16.3 not signed: https://api.github.com/repos/mulhamna/jira-commands/releases/313005083","Warn: release artifact v0.17.1 does not have provenance: https://api.github.com/repos/mulhamna/jira-commands/releases/313477919","Warn: release artifact v0.17.0 does not have provenance: https://api.github.com/repos/mulhamna/jira-commands/releases/313305297","Warn: release artifact v0.16.5 does not have provenance: https://api.github.com/repos/mulhamna/jira-commands/releases/313075555","Warn: release artifact v0.16.4 does not have provenance: https://api.github.com/repos/mulhamna/jira-commands/releases/313016532","Warn: release artifact v0.16.3 does not have provenance: https://api.github.com/repos/mulhamna/jira-commands/releases/313005083"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#branch-protection"}},{"name":"Contributors","score":0,"reason":"project has 0 contributing companies or organizations -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#contributors"}},{"name":"CI-Tests","score":9,"reason":"27 out of 30 merged PRs checked by a CI test -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#ci-tests"}}]},"last_synced_at":"2026-04-25T02:41:17.037Z","repository_id":351491849,"created_at":"2026-04-25T02:41:17.037Z","updated_at":"2026-04-25T02:41:17.037Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33053150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"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","atlassian-jira","crates","jira","rust","tui"],"created_at":"2026-04-18T07:05:11.437Z","updated_at":"2026-05-16T08:20:57.924Z","avatar_url":"https://github.com/mulhamna.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jirac\n\nJira on the command line.\n\n[![CI](https://github.com/mulhamna/jira-commands/actions/workflows/ci.yml/badge.svg)](https://github.com/mulhamna/jira-commands/actions/workflows/ci.yml)\n[![Crates.io](https://img.shields.io/crates/v/jira-commands.svg)](https://crates.io/crates/jira-commands)\n[![npm](https://img.shields.io/npm/v/%40mulham28%2Fjirac)](https://www.npmjs.com/package/@mulham28/jirac)\n\n[![Homebrew](https://img.shields.io/badge/homebrew-v0.38.1-orange)](https://github.com/mulhamna/homebrew-tap)\n[![Winget](https://img.shields.io/winget/v/mulhamna.jirac)](https://github.com/mulhamna/winget-pkgs/tree/main/manifests/m/mulhamna/jirac)\n[![Chocolatey](https://img.shields.io/chocolatey/v/jirac)](https://community.chocolatey.org/packages/jirac)\n[![Scoop](https://img.shields.io/badge/dynamic/json?label=scoop\u0026query=%24.version\u0026url=https%3A%2F%2Fraw.githubusercontent.com%2Fmulhamna%2Fscoop-bucket%2Fmain%2Fbucket%2Fjirac.json\u0026color=00b4ff)](https://github.com/mulhamna/scoop-bucket)\n\n[![License: MIT + Apache-2.0](https://img.shields.io/badge/license-MIT%20%2B%20Apache--2.0-blue.svg)](LICENSE-MIT)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/12742/badge)](https://www.bestpractices.dev/projects/12742)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n\n`jirac` is a Jira command-line client written in Rust. It ships as a single binary with no runtime dependencies and runs on macOS, Linux, and Windows. It supports Jira Cloud and Jira Data Center, stores multiple login profiles, and discovers custom fields at runtime so there is little to configure beyond your credentials.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" align=\"center\"\u003e\n      \u003cimg src=\"assets/readme/sample_tui.jpeg\" alt=\"jirac TUI issue list preview\" /\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cstrong\u003eTUI issue list\u003c/strong\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" align=\"center\"\u003e\n      \u003cimg src=\"assets/readme/sample_tui_split.jpeg\" alt=\"jirac split master-detail TUI preview\" /\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cstrong\u003eSplit master-detail\u003c/strong\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" align=\"center\"\u003e\n      \u003cimg src=\"assets/readme/sample-jql.jpeg\" alt=\"jirac interactive JQL builder preview\" /\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cstrong\u003eInteractive JQL builder\u003c/strong\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Highlights\n\n- **Interactive TUI** — browse, search, create, edit, change type, move between projects, transition, assign, comment, bulk-comment, worklog, upload, and inspect issues without leaving the terminal\n- **Split master-detail UI** — keep the issue list visible while opening summary, comments, worklog, attachments, subtasks, and links\n- **Saved query and theme preferences** — reuse saved JQLs, persist visible columns, and switch TUI themes (including GitHub Light)\n- **Multi-profile auth** — store and switch between multiple Jira accounts or deployments\n- **Custom fields** — discovered at runtime via the API, not hardcoded\n- **Attachments** — upload files to any issue from the CLI\n- **Worklogs** — add, list, and delete time entries\n- **Bulk operations** — comment, transition, update, archive, or create many issues from JQL, explicit issue keys, or JSON manifests\n- **JQL builder** — interactive prompt that helps you construct queries\n- **Raw API passthrough** — call any Jira REST endpoint directly\n- **MCP server** — expose Jira as typed tools for editors and AI agents ([docs](crates/jira-mcp/README.md))\n\n## Comparison\n\n| Feature                           |      **jirac**      | [jira-cli](https://github.com/ankitpokhrel/jira-cli) (Go) | [jira-cmd](https://github.com/palashkulsh/jira-cmd) (Node) |\n| --------------------------------- | :-----------------: | :-------------------------------------------------------: | :--------------------------------------------------------: |\n| Single binary, no runtime deps    |          ✅          |                             ✅                             |                          ❌ (npm)                           |\n| Interactive TUI                   |          ✅          |                             ✅                             |                             ❌                              |\n| Jira REST API version             |       v2 / v3       |                          v2 / v3                          |                             v2                             |\n| Custom fields (runtime discovery) |          ✅          |                  Partial (config-based)                   |                    Partial (field IDs)                     |\n| Attachment upload                 |          ✅          |                             ❌                             |                             ❌                              |\n| Worklogs (add / list / delete)    |          ✅          |                             ❌                             |                      Add / list only                       |\n| Bulk transition                   |          ✅          |                             ❌                             |                             ❌                              |\n| Bulk update                       |          ✅          |                             ❌                             |                             ❌                              |\n| Bulk create / batch manifests     |          ✅          |                             ❌                             |                             ❌                              |\n| Issue archive                     |          ✅          |                             ❌                             |                             ❌                              |\n| JQL builder (interactive)         |          ✅          |                             ❌                             |                             ❌                              |\n| Raw API passthrough               |          ✅          |                             ❌                             |                             ❌                              |\n| Cursor-based pagination           |          ✅          |                        ❌ (offset)                         |                         ❌ (offset)                         |\n| MCP server                        |          ✅          |                             ❌                             |                             ❌                              |\n| Scoop                             |          ✅          |                             ❌                             |                             ❌                              |\n| Multi login / saved profiles      |          ✅          |                             ❌                             |                             ❌                              |\n| macOS / Linux / Windows           |      ✅ / ✅ / ✅      |                      ✅ / ✅ / Partial                      |                         ✅ / ✅ / ✅                          |\n| Jira Data Center / self-managed   | Cloud + Data Center |                   Cloud + self-managed                    |                    Cloud + self-managed                    |\n\n## Install\n\n```bash\n# Homebrew (macOS / Linux)\nbrew tap mulhamna/tap\nbrew install jira-commands\n\n# Optional MCP server\nbrew install jira-mcp\n\n# Cargo\ncargo install jira-commands\n\n# Windows (Scoop)\nscoop bucket add mulhamna https://github.com/mulhamna/scoop-bucket\nscoop install mulhamna/jirac\n\n# Windows (winget)\nwinget install mulhamna.jirac\n\n# Windows (Chocolatey)\nchoco install jirac\n```\n\nMore methods (install script, PowerShell, GitHub Releases): [INSTALL.md](INSTALL.md)\n## Quick start\n\n```bash\n# Authenticate\njirac auth login\n\n# List your assigned issues\njirac issue list\n\n# View an issue\njirac issue view PROJ-123\njirac issue view PROJ-123 --versions\n\n# Browse or manage project fix versions\njirac issue versions -p PROJ --version \"v1.2.0\"\njirac issue versions -p PROJ --version \"v1.2.0\" --set-release-date 2026-05-30 --released\njirac issue versions -p PROJ --create --version \"v1.3.0\" --description \"June release\"\n\n# Create an issue (interactive)\njirac issue create -p PROJ\n\n# Transition an issue\njirac issue transition PROJ-123 --to \"In Progress\"\n\n# Launch the TUI\njirac tui -p PROJ\n```\n\n## Usage\n\n### Issues\n\n```bash\njirac issue list                                    # assigned to you\njirac issue list -p PROJ                            # by project\njirac issue list --jql \"status = 'In Progress'\"     # custom JQL\njirac issue standup                                  # daily standup summary\njirac issue sprint-summary -p PROJ                   # current sprint summary\n\njirac issue view PROJ-123                           # view detail\njirac issue view PROJ-123 --versions                # include fix-version backlog preview\njirac issue versions -p PROJ                        # list project fix versions\njirac issue versions -p PROJ --version \"v1.2.0\"    # preview backlog for one fix version\njirac issue versions -p PROJ --version \"v1.2.0\" --set-start-date 2026-05-20\njirac issue versions -p PROJ --version \"v1.2.0\" --set-release-date 2026-05-30 --released\njirac issue versions -p PROJ --version \"v1.2.0\" --set-name \"June 2026\"\njirac issue versions -p PROJ --create --version \"v1.3.0\" --description \"June release\"\njirac issue create -p PROJ                          # create (interactive)\njirac issue create -p PROJ --type Bug --summary \"Login fails on Safari\"\njirac issue render --input desc.md                  # preview Markdown -\u003e ADF JSON\njirac issue render --input desc.md --output text    # preview rendered plain text\n\njirac issue update PROJ-123 --summary \"New title\"\njirac issue update PROJ-123 --assignee user@co.com\n\njirac issue transition PROJ-123                     # interactive picker\njirac issue transition PROJ-123 --to \"In Progress\"\n\njirac issue attach PROJ-123 ./screenshot.png\njirac issue bulk-comment --jql 'project = PROJ AND status = \"In Progress\"' --body \"QA is reviewing this now\"\njirac issue bulk-comment --keys PROJ-123 PROJ-456 --file note.md\njirac issue delete PROJ-123\njirac issue change-type PROJ-123 Story\njirac issue move PROJ-123 OTHER\njirac issue clone PROJ-123\n\njirac issue link list-types                          # list available link types\njirac issue link add PROJ-123 PROJ-456 --type Blocks # link two issues\njirac issue link delete 10000                        # delete link by ID\n\njirac issue batch --manifest ops.json\njirac issue bulk-create --manifest issues.json\n```\n\n### Worklogs\n\n```bash\njirac issue worklog list PROJ-123\njirac issue worklog add PROJ-123 --time 2h --comment \"Fixed auth bug\"\njirac issue worklog add PROJ-123 --time 2h --date 2026-04-21 --start 09:30 --comment \"Backfilled worklog\"\njirac issue worklog add PROJ-123 --time 2h --from 2026-04-21 --to 2026-04-25 --exclude-weekends --comment \"Backfill week\"\njirac issue worklog delete PROJ-123 --id 10234\n```\n\n`jirac issue worklog add` also supports optional `--date YYYY-MM-DD` and `--start HH:MM[:SS]` flags to set the Jira worklog `started` timestamp explicitly. For backfills across multiple days, use `--from YYYY-MM-DD --to YYYY-MM-DD`, plus `--exclude-weekends` if Saturdays/Sundays should be skipped. In the TUI, pressing `w` opens the single-worklog modal, while `b` opens a bulk worklog modal for date ranges with weekend exclusion and a submit-confirm step.\n\n### Bulk operations\n\n```bash\njirac issue bulk-comment --jql 'project = PROJ AND sprint = openSprints()' --body 'Please post status before standup'\njirac issue bulk-comment --keys PROJ-123 PROJ-456 --file note.md\njirac issue bulk-transition --jql 'project = PROJ AND status = \"To Do\"' --to \"In Progress\"\njirac issue bulk-update --jql 'project = PROJ AND assignee = EMPTY' --assignee me\njirac issue archive --jql 'project = PROJ AND status = Done AND updated \u003c -90d'\njirac issue bulk-create --manifest issues.json\njirac issue batch --manifest ops.json\n```\n\nIn the TUI, press `:` to open a bulk-comment modal. It supports the current JQL view or an explicit issue-key list, then asks for one more `Ctrl+S` confirmation before posting.\n\n### JQL builder\n\n```bash\njirac issue jql    # interactive query builder\n```\n\n### Raw API passthrough\n\n```bash\njirac api get /rest/api/3/serverInfo\njirac api post /rest/api/3/issue --body '{\"fields\":{...}}'\n```\n\n### Plans (Jira Premium)\n\n```bash\njirac plan list\n```\n\n### Auth management\n\n```bash\njirac auth login\njirac auth profiles\njirac auth use work-cloud\njirac auth status\njirac auth update --profile client-dc --token NEW_SECRET\njirac auth logout --profile client-dc\n```\n\n### Multi-profile examples\n\n```bash\n# Jira Cloud\njirac auth login --profile work-cloud\n\n# Jira Data Center with PAT\njirac auth login --profile client-dc\n\n# Switch active account\njirac auth use client-dc\n```\n\n## Interactive TUI\n\nThe TUI is a full-screen terminal interface for browsing and managing issues. Recent builds include a split master-detail layout, a project-level fix-version browser (`V`) with backlog preview plus in-place version creation (`n`) and metadata editing (`e`), saved JQL picker, theme picker, server summary, config summary overlays, in-TUI modals for native issue type changes and project moves, and both single (`w`) and bulk (`b`) worklog flows. Press `?` inside the TUI for a complete shortcut reference.\n\n```bash\njirac tui -p PROJ\n```\n\nFull keybinding reference: [TUI.md](TUI.md)\n\n## Configuration\n\nConfig file: `~/.config/jira/config.toml`\n\n```toml\ncurrent_profile = \"work-cloud\"\n\n[profiles.work-cloud]\nbase_url = \"https://yourcompany.atlassian.net\"\nemail = \"you@example.com\"\ntoken = \"your_api_token\"\nproject = \"PROJ\"\ntimeout_secs = 30\ndeployment = \"cloud\"\nauth_type = \"cloud_api_token\"\napi_version = 3\n\n[profiles.client-dc]\nbase_url = \"https://jira.company.internal\"\nemail = \"ops-user\"\ntoken = \"your_pat\"\nproject = \"OPS\"\ntimeout_secs = 30\ndeployment = \"data_center\"\nauth_type = \"datacenter_pat\"\napi_version = 2\n```\n\nEnvironment variables override the active profile:\n\n```bash\nexport JIRA_PROFILE=work-cloud\nexport JIRA_URL=https://yourcompany.atlassian.net\nexport JIRA_EMAIL=you@example.com\nexport JIRA_TOKEN=your_api_token\n```\n\n## MCP server\n\n`jirac-mcp` exposes Jira as typed [Model Context Protocol](https://modelcontextprotocol.io) tools for editors, agents, and desktop apps. See the [jirac-mcp README](crates/jira-mcp/README.md) for setup and available tools.\n\n### MCP install helpers\n\nUse `jirac mcp install --client \u003ctarget\u003e` to register `jirac-mcp` with supported clients, or `jirac mcp doctor` to check prerequisites.\n\nSupported helpers include Claude Code, Claude Desktop, Cursor, Gemini CLI, Codex, OpenCode, generic JSON snippets, and Zed. Zed uses the official `Jira` marketplace extension from \u003chttps://github.com/mulhamna/jirac-ext\u003e, while `jirac mcp install --client zed` seeds `context_servers.jira.settings` in `settings.json`.\n\nSee [INSTALL.md](INSTALL.md) for the supported target matrix, client-specific notes, and recommended install flow.\n\n## Using jira-core as a library\n\nThe `jira-core` crate can be used independently:\n\n```toml\n[dependencies]\njira-core = \"0.12\"\n```\n\n```rust\nuse jira_core::{JiraClient, config::JiraConfig};\n\n#[tokio::main]\nasync fn main() -\u003e anyhow::Result\u003c()\u003e {\n    let config = JiraConfig::load()?;\n    let client = JiraClient::new(config);\n\n    let results = client.search_issues(\"project = PROJ\", None, Some(10)).await?;\n    for issue in results.issues {\n        println!(\"{}: {}\", issue.key, issue.summary);\n    }\n    Ok(())\n}\n```\n\nSee [jira-core on crates.io](https://crates.io/crates/jira-core) for full API documentation.\n\n## Building from source\n\n```bash\ngit clone https://github.com/mulhamna/jira-commands\ncd jira-commands\nmake build       # or: cargo build --all\nmake test        # or: cargo test --all\nmake smoke       # fmt-check + clippy + test + build (CI gate)\nmake help        # list all targets\n```\n\n### Workspace layout\n\n```text\ncrates/\n  jira-core/   # shared client, models, config, auth\n  jira/        # CLI app\n  jira-mcp/    # MCP server\n  zed-jira/    # Source-of-truth wrapper code mirrored into github.com/mulhamna/jirac-ext\nassets/        # screenshots and images\npackaging/     # release/install packaging\n```\n\n\u003c!-- contributors:start --\u003e\n## Contributors\n\nThanks to everyone helping shape `jirac`. This footer is refreshed automatically during the release lane.\n\n| \u003ca href=\"https://github.com/mulhamna\" title=\"@mulhamna\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/97831705?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"mulhamna\" /\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/apps/github-actions\" title=\"@github-actions[bot]\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/in/15368?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"github-actions[bot]\" /\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/badrus123\" title=\"@badrus123\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/21188155?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"badrus123\" /\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/chmdznr\" title=\"@chmdznr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6890365?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"chmdznr\" /\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/EnrikoAviyantoPutra\" title=\"@EnrikoAviyantoPutra\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/71826526?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"EnrikoAviyantoPutra\" /\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/apps/dependabot\" title=\"@dependabot[bot]\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/in/29110?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"dependabot[bot]\" /\u003e\u003c/a\u003e |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| \u003ca href=\"https://github.com/resincode\" title=\"@resincode\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5574999?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"resincode\" /\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/ekacahya21\" title=\"@ekacahya21\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/15162377?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"ekacahya21\" /\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/wahyuakbarwibowo\" title=\"@wahyuakbarwibowo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/25057573?v=4\u0026s=72\" width=\"36\" height=\"36\" alt=\"wahyuakbarwibowo\" /\u003e\u003c/a\u003e |   |   |   |\n\u003c!-- contributors:end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmulhamna%2Fjira-commands","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmulhamna%2Fjira-commands","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmulhamna%2Fjira-commands/lists"}