{"id":18737984,"url":"https://github.com/technodelight/jira","last_synced_at":"2026-02-22T03:01:29.981Z","repository":{"id":11628489,"uuid":"41413331","full_name":"technodelight/jira","owner":"technodelight","description":"Console application to manage tasks in Atlassian's Jira, written in PHP","archived":false,"fork":false,"pushed_at":"2024-11-06T16:10:22.000Z","size":3151,"stargazers_count":5,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-01T23:03:01.384Z","etag":null,"topics":["cli-app","jira","php","workflow"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/technodelight.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2015-08-26T08:15:49.000Z","updated_at":"2024-09-19T11:53:10.000Z","dependencies_parsed_at":"2023-11-21T10:28:26.636Z","dependency_job_id":"95dcae94-056c-413d-a37f-343e5b11e24e","html_url":"https://github.com/technodelight/jira","commit_stats":null,"previous_names":[],"tags_count":182,"template":false,"template_full_name":null,"purl":"pkg:github/technodelight/jira","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technodelight%2Fjira","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technodelight%2Fjira/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technodelight%2Fjira/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technodelight%2Fjira/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technodelight","download_url":"https://codeload.github.com/technodelight/jira/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technodelight%2Fjira/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29704400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T23:35:04.139Z","status":"online","status_checked_at":"2026-02-22T02:00:08.193Z","response_time":110,"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":["cli-app","jira","php","workflow"],"created_at":"2024-11-07T15:27:41.729Z","updated_at":"2026-02-22T03:01:29.958Z","avatar_url":"https://github.com/technodelight.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo](./docs/logo.png)\n\n# JIRA in command line\n\n[![Build Status](https://travis-ci.org/technodelight/jira.svg?branch=master)](https://travis-ci.org/technodelight/jira)\n\nDo you JIRA in your daily work? Are you a developer? This tool is tailored for your needs!\n\nThis command line application helps with managing issue transitions, JQL searches and time logging based by leveraging your recent git commit messages.\nAll in a highly customisable manner.\n\nThis tool evolved into it's current state over years. I wanted to create a tool which I can quickly and effectively use in my day-to-day work. It spares a lot of time with micromanagement.\n\n# Quickstart guide\n\n### 1. Get the phar\n\n  Check out the [GitHub releases page](https://github.com/technodelight/jira/releases) and grab your latest `jira.phar`.\n\n### 2. Make it executable and move to somewhere in your `$PATH`:\n\n  ```\n  chmod +x /path/to/jira.phar\n  #YMMV, please check your OS's guide for further reference\n  mv /path/to/downloads/jira.phar /usr/local/bin/jira\n  ```\n\n### 3. `cd` into your project's git-managed directory and init the configuration:\n\n  ```\n  jira init\n  ```\n  Just follow the steps and you should be good to go.\n\n### 4. Updating your tool\n\n  Once you have installed `jira` you can update by running `jira self-update`.\n\n## Alternative installation mode, A.K.A. build-your-own:\n\n  ```\n  git clone https://github.com/technodelight/jira\n  git checkout master\n  make \u0026\u0026 make install\n  ```\n  You will need several tools to build on your local system, but the build tool will guide you through the rest of the steps you need to do.\n\n# Features\n\n### Main features\n\n- render issue details in terminal (`jira show`)\n- perform any issue transition (for example, `jira workflow:start`, but you can configure commands for multiple transitions)\n- list available transitions for an issue (`jira show:transitions`) or all possible issue statuses (`jira show:statuses`)\n- create a GIT branch based on issue details (`jira branch`)\n- assign issues to Jira users (`jira assign`)\n- log new work/edit existing records against an issue (`jira log PROJ-123 1h \"worklog comment\" yesterday`)\n- add and edit comments (`jira comment`)\n- set up and remove links between issues (`jira link` / `jira unlink`, for example `jira link --relates-to PROJ-456`)\n- edit issue properties from command line (`jira edit`)\n- show properties (fields) for an issue (`jira show:fields`)\n- download attachments (`jira attachment`)\n- perform commands on a batch of issues (for example, move issues to UAT deployed based on GIT commit messages use case: `git log asdf123...123asdf | egrep '[A-Z]+-[0-9]+' -o | sort | uniq | jira + deployed-uat`)\n- search issues on-demand by using Atlassian's JQL language (`jira search '\u003cyour JQL here\u003e'`)\n- create pre-stored search queries and run them quickly by assigning a command alias (`jira search:my-issues` for example)\n- list your daily/weekly/monthly work logs in a nice manner (`jira day`, `jira week` and `jira month`)\n- open your issue by issue key in your default browser (`jira browse`) which works with github integration too (open your PR in GitHub or CI tool's result page right from your terminal)\n- filter a batch of issues using `jira filter + 'issue.status() != \"Closed\"'`\n- show details about projects (`jira show:project`)\n\nAnd other powerful features such as:\n\n- the tool works in ANSI 256 colors mode\n- supports almost every \"jira markdown\" syntax, displayed console-friendly\n- render images from issue description, comments, etc. (requires iTerm2 on OSX!)\n- can render code blocks using external tools (`highlight` and `bat` is currently supported)\n- show available local/remote branches and pull requests for an issue (you will need a github API token for this), shows CI build statuses too\n- guess issue key from your current GIT branch (works with all the commands where an issue key is required!)\n- use issue key aliases or alias a full branch name for an issue (nice use case: `jira log standup 15m \"standup\"`)\n- or be lazy and just paste the full URL (`jira show https://project.atlassian.net/browse/PROJ-123` for example)\n- assemble worklog messages from commit messages, when you log your time interactively (by typing `jira log` on the issue's branch)\n- auto-generate branch name from issue summary, auto-checkout to branch (by specifying `-b` option, ie. `jira start PROJ-123 -b`)\n- define your own branch name generation strategies by adding rules to your configuration file\n- define your custom view modes for various use cases. There are 2 different rendering \"modes\" currently, one for rendering single issues and one for rendering lists. You can add/remove/reorder fields, add custom fields on demand. For all available renderers and fields `jira show:fields` and `jira show:renderers` can help.\n- define how much work hours do you have per day, to easily track your overtime\n\nPlease bear in mind *this app is still in development* and it may have bugs. If you find one or you have a feature request/suggestion, please open an issue [here](https://github.com/technodelight/jira/issues).\n\nhttps://www.instagram.com/p/C53T1Qeyz__/?igsh=aWU3MDM1b2tsdGUx\n\n# Tips\n\n- **Add .jira.yml to your global gitignore:**\n\n  `echo .jira.yml | tee -a ~/.gitignore_global`\n\n\n# Configuration reference\n\nYou can have per-project (`/your/project/dir/.jira.yml`) and global configuration (`$HOME/.jira.yml`), which would be merged into one before being used by the application.\nFor example if you manage multiple projects on multiple jira instances, you could add your login details into the global configuration file, whilst issue aliases, transitions, searches in your per-project config file.\nInteractively initialising the configuration is as easy as running the `init` command in your project directory.\nYou could always dump the configuration sample from below file by running `jira init --sample`\n\n```yaml\n# JIRA connection credentials\ncredentials:\n\n    # JIRA's domain without protocol, like something.atlassian.net\n    domain:               ~ # Required, Example: something.atlassian.net\n\n    # Your JIRA username\n    username:             ~ # Required\n\n    # Your JIRA password\n    password:             ~ # Required\n\n# Different JIRA instances to use\ninstances:\n\n    # Prototype\n    name:\n\n        # Unique internal ID to use in command line arguments as reference (ie. --instance secondary)\n        name:                 default # Example: secondary\n\n        # JIRA's domain without protocol, like something.atlassian.net\n        domain:               something.atlassian.net # Required, Example: something.atlassian.net\n\n        # Instance JIRA username\n        username:             '\u003cyour jira username\u003e' # Required\n\n        # Instance JIRA password\n        password:             supersecretpassword # Required\n\n        # Is tempo enabled for this instance?\n        tempo:                null\n\n# Third party integration configs\nintegrations:\n\n    # GitHub credentials - used to retrieve pull request data, including webhook statuses. Visit this page to generate a token: https://github.com/settings/tokens/new?scopes=repo\u0026description=jira+cli+tool\n    github:\n        apiToken:             ~ # Required\n        owner:                null\n        repo:                 null\n\n    # GIT related configurations\n    git:\n\n        # Maximum branch name length where the tool starts complaining during automatic branch name generation (-b option for issue transition type commands). Defaults to 30\n        maxBranchNameLength:  30\n\n        # Branch name generation settings. By default, it conforms to https://nvie.com/posts/a-successful-git-branching-model/\n        branchNameGenerator:\n            patterns:\n\n                # Prototype: Branch name generation patters, depending on if issue summary matches on regex\n                expression:\n\n                    # Expression in symfony expression language format\n                    expression:           ~ # Required, Example: preg_match(\"~^Release ~\", issue.summary())\n\n                    # Pattern to use for generation, where {issueKey}, {summary} and any expression like {clean(issue.type()} can be used\n                    pattern:              ~ # Required, Example: release/{clean(substr(issue.summary(), 8))}\n\n            # Separator to use between words\n            separator:            '-'\n\n            # Keep this set of characters only when generating branch names\n            whitelist:            A-Za-z0-9./-\n\n            # Clean this set of phrases from generated names. Can be an array or a comma separated string. Defaults to \"BE,FE\"\n            remove:\n\n                # Defaults:\n                - BE\n                - FE\n\n            # Always convert of these chars into separator char. Can be an array of values or a single string. Defaults to \" :/,\"\n            replace:\n\n                # Defaults:\n                -\n                - :\n                - /\n                - ,\n\n            # Include these words into autocompleter when shortening branch name due to generated name exceeding max length. Can be an array or a list of words separated by comma.\n            autocompleteWords:\n\n                # Defaults:\n                - fix\n                - add\n                - change\n                - remove\n                - implement\n\n    # iTerm2 integration (OS X Only)\n    iterm:\n        renderImages:         true\n        thumbnailWidth:       300\n        imageCacheTtl:        5\n\n    # Editor preferences\n    editor:\n        executable:           vim\n\n    # Use application in server/client mode. Could speed things up a bit\n    daemon:\n        enabled:              false\n\n        # IP to listen on. Defaults to 0.0.0.0\n        address:              0.0.0.0\n\n        # Port to listen on. Defaults to 50200.\n        port:                 '50200'\n\n# Project specific settings\nproject:\n\n    # Using 'yesterday' means last workday on monday\n    yesterdayAsWeekday:   true\n\n    # Default worklog timestamp to use if date is omitted\n    defaultWorklogTimestamp: now\n\n    # Your work hours for a single day (valid values ie. \"7 hours 30 minutes\", 7.5 (treated as hours), 27000 (in seconds)\n    oneDay:               !!float 27000\n\n    # keep API data in caches\n    cacheTtl:             900\n\n# Issue transitions registered as commands\ntransitions:\n\n    # Prototype\n    -\n        command:              ~ # Required\n        transition:           ~\n\n# Use named issues instead of numbers. Can be used anywhere where issueKey is a command's input\naliases:\n\n    # Prototype\n    -\n        alias:                ~ # Required\n        issueKey:             ~ # Required\n\n# Custom quick filters registered as commands. See advanced search help at https://confluence.atlassian.com/jiracorecloud/advanced-searching-765593707.html\nfilters:\n\n    # Prototype\n    -\n        command:              ~ # Required\n        jql:                  ''\n        filterId:             null\n        instance:             null\n\n# Rendering setup\nrenderers:\n    preference:\n\n        # Default view mode for lists\n        list:                 short\n\n        # Default view mode for a single issue\n        view:                 full\n    modes:\n\n        # Prototype\n        name:\n            name:                 ~ # Required\n            inherit:              true\n\n            # see available fields in show:renderers command\n            fields:\n\n                # Prototype\n                -\n                    name:                 ~ # Required\n                    formatter:            default\n                    inline:               false\n                    after:                null\n                    before:               null\n                    remove:               null\n\n    # Custom formatters\n    formatters:\n\n        # Prototype\n        -\n\n            # Alias, as it will be used in renderer configs\n            name:                 ~ # Required\n\n            # Full class path with namespace\n            class:                ~ # Required\n```\n\n# Useful links\n\n- **Register GitHub api token:** https://github.com/settings/tokens/new?scopes=repo\u0026description=jira+cli+tool\n- **JQL:** https://confluence.atlassian.com/jiracloud/advanced-searching-735937166.html\n\n# License\n\nGNU GPLv3\n\nCopyright (c) 2015-2022 Zsolt Gál\nSee LICENSE.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnodelight%2Fjira","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnodelight%2Fjira","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnodelight%2Fjira/lists"}