{"id":48469425,"url":"https://github.com/justinmklam/tira","last_synced_at":"2026-05-29T01:04:48.283Z","repository":{"id":346275065,"uuid":"1185856473","full_name":"justinmklam/tira","owner":"justinmklam","description":"A blazing fast terminal interface for Jira, written in Go.","archived":false,"fork":false,"pushed_at":"2026-04-07T01:51:27.000Z","size":9819,"stargazers_count":6,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-07T03:23:51.019Z","etag":null,"topics":["charm","golang","jira","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/justinmklam.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-19T02:25:46.000Z","updated_at":"2026-04-07T01:31:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/justinmklam/tira","commit_stats":null,"previous_names":["justinmklam/tira"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/justinmklam/tira","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinmklam%2Ftira","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinmklam%2Ftira/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinmklam%2Ftira/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinmklam%2Ftira/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justinmklam","download_url":"https://codeload.github.com/justinmklam/tira/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinmklam%2Ftira/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31501903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["charm","golang","jira","tui"],"created_at":"2026-04-07T06:01:18.305Z","updated_at":"2026-05-29T01:04:48.249Z","avatar_url":"https://github.com/justinmklam.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tira\n\n![Go Version](https://img.shields.io/badge/Go-1.25-blue)\n[![Go Report Card](https://goreportcard.com/badge/github.com/justinmklam/tira)](https://goreportcard.com/report/github.com/justinmklam/tira)\n![License](https://img.shields.io/badge/License-MIT-green)\n\nA terminal interface for Jira. Fast, keyboard-driven, and built for people who find the web UI insufferable.\n\n![backlog](./docs/screenshots/backlog.png)\n\n![kanban](./docs/screenshots/kanban.png)\n\nDemo:\n\u003cvideo src=\"https://github.com/user-attachments/assets/65dfa774-d51a-4980-a965-76393f43c00f\" width=\"320\" height=\"240\" controls\u003e\u003c/video\u003e\n\n## Features\n\n- Create and edit issues\n- Organize issues across sprints\n- Set issue status, assignee, story points, epics, and more\n- Fuzzy search picker for setting assignees and parent issues\n- Copy issue links to clipboard, or open them directly in your browser\n- Vim-inspired keybindings\n- Optimized for speed and responsiveness - no more fighting with the Jira web ui!\n\n## Getting Started\n\n### Installation\n\nInstall the tool with curl:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/justinmklam/tira/main/bin/install.sh | bash\n```\n\nOr with go:\n\n```sh\ngo install github.com/justinmklam/tira/cmd/tira@latest\n```\n\nThen create `~/.config/tira/config.yaml` and add a default profile:\n\n```yaml\nprofiles:\n  default:\n    jira_url: https://yourorg.atlassian.net\n    email: you@example.com\n    # token can also be set via JIRA_TOKEN or JIRA_API_TOKEN env vars (recommended)\n    token: your_api_token_here\n    project: MYPROJ\n    board_id: 42\n    classic_project: true   # Optional, set to true for company-managed (classic) projects\n```\n\nAlternatively, set values via environment variables (takes precedence over the config file):\n\n```bash\nexport JIRA_TOKEN=\"your_api_token_here\"\n# or\nexport JIRA_API_TOKEN=\"your_api_token_here\"\n# Full overrides:\nexport TIRA_JIRA_URL=\"https://myorg.atlassian.net\"\nexport TIRA_EMAIL=\"me@myorg.com\"\nexport TIRA_TOKEN=\"my-token\"\nexport TIRA_PROJECT=\"MYPROJ\"\n```\n\nFor clipboard support, install `xclip` (e.g. `sudo apt install xclip`) for Linux. macOS uses `pbcopy`, which is built in to the OS.\n\n### Usage\n\n#### Board TUI\n\nLaunch the interactive board TUI:\n\n```sh\n# Start in backlog view\ntira backlog\n\n# Start in kanban view\ntira kanban\n```\n\n**Common keybindings:**\n\n| Key | Action |\n|-----|--------|\n| `Tab` | Toggle between backlog and kanban |\n| `j`/`k` | Move cursor to next/prev issue |\n| `J`/`K` | Move cursor to next/prev sprint |\n| `Enter` | Open issue detail in fullscreen / Toggle sprint collapse |\n| `e` | Edit issue |\n| `c` | Add comment |\n| `s` | Set status |\n| `A` | Set assignee |\n| `S` | Set story points |\n| `P` | Set parent |\n| `f\u003cnum\u003e` | Jump to issue by number |\n| `/\u003ckeyword\u003e` | Filter issues by keyword |\n| `F` | Open parent issue picker to filter issues by parent |\n| `Space` | Select issue |\n| `v` | Visual mode (multi-select) |\n| `x` / `p` | Cut / Paste selected issue(s) |\n| \u003c / \u003e | Move selected issue(s) to prev/next sprint |\n| `R` | Refresh from Jira |\n| `?` | Show help |\n| `q` | Quit |\n\nSee [Keybindings](docs/keybindings-backlog.md) for the complete reference.\n\n#### CLI Commands\n\n**View an issue:**\n\n```sh\ntira get MP-101\n```\n\n**Edit an issue in your editor:**\n\n```sh\ntira get MP-101 --edit\n```\n\n**Create a new issue:**\n\n```sh\n# Interactive with defaults\ntira create\n\n# Specify project and type\ntira create --project DEV --type Bug\n```\n\n## Build \u0026 Development\n\nClone the repository and build the CLI:\n\n```sh\nmake check        # Run all checks (fmt, vet, lint, test)\nmake build        # Compile the binary\nmake run          # Run the tui using your default profile\n```\n\nFor development, a second `dev` profile can be added to your `~/.config/tira.yaml`:\n\n```yaml\nprofiles:\n  ...\n  dev:\n    jira_url: https://dev-domain.atlassian.net\n    email: dev@example.com\n    token: dev_token_here\n    project: DEVPROJ\n    board_id: 43\n```\n\nOther useful commands:\n\n```sh\nmake run-dev      # Run the tui using your dev profile, with debug enabled\nmake test         # Run all tests\nmake test-race    # Run tests with race detector\nmake fmt          # Format code in-place\nmake vet          # Run go vet\nmake lint         # Run golangci-lint (requires golangci-lint installation)\n```\n\n### Releasing\n\nTo cut a new release, bump the version and push a tag — GoReleaser runs automatically via GitHub Actions:\n\n```sh\nbin/release.sh patch   # 1.2.3 → 1.2.4\nbin/release.sh minor   # 1.2.3 → 1.3.0\nbin/release.sh major   # 1.2.3 → 2.0.0\n```\n\nThe script will show the commits going into the release and ask for confirmation before tagging.\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [Architecture](docs/architecture.md) | System architecture and package structure |\n| [CLI Commands](docs/cli-commands.md) | Detailed CLI command documentation |\n| [Configuration](docs/configuration.md) | Configuration system details |\n| [TUI Architecture](docs/tui-architecture.md) | TUI model architecture |\n| [API Client](docs/api-client.md) | API client implementation |\n| [Keybindings](docs/keybindings-backlog.md) | Complete keybinding reference |\n| [Glossary](docs/glossary.md) | Glossary and key types |\n\n## AI Agent Skill\n\nA skill file is included at [`skills/tira.md`](skills/tira.md) for use with AI coding agents (GitHub Copilot CLI, Claude, Cursor, etc.). It teaches the agent how to create and read Jira tickets using the `tira` CLI — including the correct template format, heredoc piping patterns, and a confirm-before-create workflow.\n\n**GitHub Copilot CLI** — install to your user skills directory:\n\n```bash\nmkdir -p ~/.copilot/skills/tira\ncp skills/tira.md ~/.copilot/skills/tira/SKILL.md\n```\n\n**Claude / other agents** — reference the file directly in your system prompt or agent context, or copy its contents into your project's `CLAUDE.md` / `AGENTS.md`.\n\n## Acknowledgements\n\nThis project was built with the excellent [bubbletea](https://github.com/charmbracelet/bubbletea) framework by [Charm](https://github.com/charmbracelet).\n\nInspiration for this tool was taken from:\n\n- [lazygit](https://github.com/jesseduffield/lazygit)\n- [gh-dash](https://github.com/dlvhdr/gh-dash)\n- [k9s](https://github.com/derailed/k9s)\n- [oxker](https://github.com/mrjackwills/oxker)\n\nDeveloped with the help of [Claude](https://claude.ai/) and [Qwen](https://github.com/QwenLM/qwen-code). Thanks pals.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinmklam%2Ftira","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustinmklam%2Ftira","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinmklam%2Ftira/lists"}