{"id":46250423,"url":"https://github.com/kesensoy/gci","last_synced_at":"2026-06-01T19:00:28.030Z","repository":{"id":339223019,"uuid":"1154937277","full_name":"kesensoy/gci","owner":"kesensoy","description":"Fast CLI tool for working with JIRA issues — browse, branch, and create tickets from the terminal","archived":false,"fork":false,"pushed_at":"2026-05-29T00:17:39.000Z","size":168,"stargazers_count":2,"open_issues_count":3,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T01:11:33.803Z","etag":null,"topics":["cli","developer-tools","git","go","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/kesensoy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":null,"dco":null,"cla":null}},"created_at":"2026-02-11T00:00:56.000Z","updated_at":"2026-04-08T19:52:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kesensoy/gci","commit_stats":null,"previous_names":["kesensoy/gci"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/kesensoy/gci","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kesensoy%2Fgci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kesensoy%2Fgci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kesensoy%2Fgci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kesensoy%2Fgci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kesensoy","download_url":"https://codeload.github.com/kesensoy/gci/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kesensoy%2Fgci/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33789013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"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","developer-tools","git","go","jira","tui"],"created_at":"2026-03-03T22:06:00.196Z","updated_at":"2026-06-01T19:00:27.767Z","avatar_url":"https://github.com/kesensoy.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GCI - Git Checkout Issue\n\nA fast, single-binary CLI tool for working with JIRA issues from the terminal — browse, branch, and create tickets with an interactive Kanban board. Built in Go.\n\n## Features\n\n- **Single binary** — no runtime dependencies\n- **Secure auth** — 1Password, env var, or any token source\n- **Multi-project** — query across JIRA projects\n- **Interactive TUI** — Kanban board with fuzzy search, vim keys\n- **Reverse workflow** — `gci create` generates a JIRA ticket from your current changes\n- **Worktree + Claude integration** — optional, configurable via `gci setup`\n- **Smart branch naming** — `ISSUE-123_summary-in-kebab-case`\n- **Self-update** — `gci update`\n\n## Installation\n\n### From GitHub Releases\n\nDownload the latest binary from [Releases](../../releases), then:\n\n```bash\nchmod +x gci\nmv gci ~/.local/bin/   # or anywhere in your PATH\ngci setup              # first-time configuration\n```\n\n### Build from Source\n\nRequires Go 1.19+:\n\n```bash\ngo build -o gci .\nmv gci ~/.local/bin/\ngci setup\n```\n\n### Self-Update\n\n```bash\ngci update\n```\n\n## Usage\n\n### Browse Issues\n\n```bash\ngci                # list issues across all configured projects\ngci -a             # include unassigned issues\ngci -p MYPROJECT   # filter to one project\n```\n\n### Kanban Board\n\n```bash\ngci board\n```\n\n### Manage Configuration\n\n```bash\ngci config doctor    # check config health and connectivity\ngci config print     # display current config\ngci config path      # show config file location\ngci config get KEY   # get a specific config value\ngci config set KEY VALUE  # set a config value\ngci config migrate   # migrate config to latest schema\n```\n\n### Create a Ticket (Reverse Workflow)\n\nAlready started work and need a ticket? `gci create` analyzes your branch's changes, uses Claude to suggest a title and description, creates the JIRA issue, and renames your branch to match.\n\n```bash\ngci create                # full interactive flow\ngci create --dry-run      # preview without creating anything\ngci create -P MYPROJECT   # target a specific project\n```\n\n### Board Key Bindings\n\n| Key | Action |\n|-----|--------|\n| `hjkl` / arrows | Navigate |\n| `tab` / `shift+tab` | Switch column |\n| `/` | Filter (fuzzy search) |\n| `enter` | Interactive mode (branch, worktree, Claude — based on config) |\n| `b` | Create/checkout branch for selected issue |\n| `s` | Cycle scope |\n| `r` | Refresh |\n| `o` | Open in browser |\n| `w` | Setup wizard |\n| `?` | Toggle help |\n| `q` / `ctrl+c` | Quit |\n\n### Interactive Mode (`Enter` key)\n\nPressing `Enter` on a board issue runs the configurable workflow:\n\n| Config | Behavior |\n|--------|----------|\n| Default | Creates/checks out a branch |\n| `enable_worktrees = true` | Creates an isolated git worktree in a sibling directory |\n| `enable_claude = true` | Spawns Claude CLI with full ticket context |\n\nBoth options are auto-detected during `gci setup`. Branch naming follows `ISSUE-123_summary-in-kebab-case`.\n\n## Prerequisites\n\n- **Git** (configured with your email)\n- **JIRA account** with API token access\n- **1Password CLI** *(optional)* — for token retrieval; env var works too\n- **Claude CLI** *(optional)* — for `gci create` and Interactive Mode's Claude integration\n- **Go 1.19+** *(build from source only)*\n\n## Configuration\n\n### Quick Setup\n\n```bash\ngci setup\n```\n\nOr press `w` in the board view. The wizard walks through projects, JIRA URL, board discovery, and optional integrations (worktrees, Claude).\n\n### Configuration File\n\n`~/.config/gci/config.toml`:\n\n```toml\nschema_version = 1\nprojects = [\"MYPROJECT\", \"INFRA\"]\ndefault_scope = \"assigned_or_reported\"\njira_url = \"https://your-company.atlassian.net\"\nenable_claude = false\nenable_worktrees = true\n\n[boards]\nMYPROJECT_kanban = 123\nINFRA_scrum = 456\n```\n\nSee [`examples/gci.toml`](examples/gci.toml) for a complete annotated example.\n\n### Authentication\n\n1. **Create a JIRA API token** at [Atlassian API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens)\n2. **Provide the token** (choose one):\n   - **Environment variable:** `export JIRA_API_TOKEN=your-token`\n   - **1Password:** store it and configure the path during `gci setup`\n3. **Verify:** `gci config doctor`\n\nGCI reads your email from `git config user.email`. If your git email domain differs from JIRA, configure a mapping:\n\n```toml\n[email_domain_map]\n\"old-domain.com\" = \"jira-domain.com\"\n```\n\n## Troubleshooting\n\n### \"Failed to get git user email\"\n```bash\ngit config --global user.email \"your.email@example.com\"\n```\n\n### \"No JIRA API token found\"\nProvide a token via one of:\n1. `export JIRA_API_TOKEN=your-token`\n2. Configure `op_jira_token_path` in your config and run `op signin`\n\n### \"Command not found: gci\"\n```bash\nexport PATH=\"$HOME/.local/bin:$PATH\"\n# Add to ~/.zshrc or ~/.bashrc to make permanent\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkesensoy%2Fgci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkesensoy%2Fgci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkesensoy%2Fgci/lists"}