{"id":23974631,"url":"https://github.com/kiwamizamurai/ghif","last_synced_at":"2026-07-10T11:30:17.804Z","repository":{"id":270928640,"uuid":"911874852","full_name":"kiwamizamurai/ghif","owner":"kiwamizamurai","description":"A CLI tool that converts GitHub issues into LLM-ready structured files for AI-powered development workflows","archived":false,"fork":false,"pushed_at":"2025-01-04T04:56:39.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-04T05:25:42.384Z","etag":null,"topics":["ai","cli","developer-tools","github","issues","llm"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/kiwamizamurai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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},"funding":{"github":"kiwamizamurai","buy_me_a_coffee":"kiwamizamurai","open_collective":"kiwamizamurai","ko_fi":"kiwamizamurai","patreon":"kiwamizamurai","liberapay":"kiwamizamurai"}},"created_at":"2025-01-04T04:32:03.000Z","updated_at":"2025-01-04T04:56:42.000Z","dependencies_parsed_at":"2025-01-04T05:25:46.666Z","dependency_job_id":"f68f2449-42af-4a59-aacc-dff0feaad190","html_url":"https://github.com/kiwamizamurai/ghif","commit_stats":null,"previous_names":["kiwamizamurai/ghif"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwamizamurai%2Fghif","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwamizamurai%2Fghif/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwamizamurai%2Fghif/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwamizamurai%2Fghif/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kiwamizamurai","download_url":"https://codeload.github.com/kiwamizamurai/ghif/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240515562,"owners_count":19813871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ai","cli","developer-tools","github","issues","llm"],"created_at":"2025-01-07T05:47:41.493Z","updated_at":"2026-07-10T11:30:17.721Z","avatar_url":"https://github.com/kiwamizamurai.png","language":"Rust","funding_links":["https://github.com/sponsors/kiwamizamurai","https://buymeacoffee.com/kiwamizamurai","https://opencollective.com/kiwamizamurai","https://ko-fi.com/kiwamizamurai","https://patreon.com/kiwamizamurai","https://liberapay.com/kiwamizamurai"],"categories":[],"sub_categories":[],"readme":"# ghif\n\nA CLI tool that bridges GitHub issues and LLM-powered development by converting issues into structured files, enabling seamless integration with AI development workflows.\n\n![Demo](demo.gif)\n\n## Why ghif?\n\n- **LLM-Ready Format**: Issues are converted to structured formats (Markdown/XML) that are optimized for LLM processing\n- **Context-Rich Development**: Feed your LLM with real project context from issues and discussions\n- **Efficient Workflows**: Integrate with your favorite AI tools to analyze issues, generate code, or get development insights\n- **Local Knowledge Base**: Build a searchable archive of project issues for offline access and AI processing\n\n## Features\n\n- Automatically detects GitHub repository from current directory\n- Fetches all issues from the repository\n- Includes issue comments with author and timestamp\n- Shows progress with a nice progress bar\n- Supports multiple output formats (Markdown, XML) for different use cases\n- Saves issues as structured files in `/issues` directory\n- Skips existing files by default to prevent overwriting\n\n## Installation\n\n### macOS\n\nUsing Homebrew:\n```shell\nbrew tap kiwamizamurai/tap\nbrew install ghif\n```\n\n\u003e [!NOTE]\n\u003e The released binaries are built with Link Time Optimization (LTO) and maximum optimizations enabled for best performance.\n\nOr download the binary directly from [GitHub Releases](https://github.com/kiwamizamurai/ghif/releases) and add it to your PATH.\n\n## Integration with LLM Workflows\n\nHere are some ways to leverage ghif with LLMs:\n\n1. **Issue Analysis**\n   - Feed issues to your LLM to identify patterns and common problems\n   - Get AI-powered issue summaries and categorization\n   - Generate task breakdowns and implementation plans\n\n2. **Code Generation**\n   - Use issue context to generate relevant code snippets\n   - Let LLMs propose solutions based on similar issues\n   - Generate tests based on issue descriptions\n\n3. **Knowledge Management**\n   - Build a local knowledge base of project issues\n   - Enable semantic search across issue history\n   - Train custom models on your project's issue data\n\n## Usage\n\n\u003e [!WARNING]\n\u003e Running without `--skip-existing=false` will preserve existing issue files. Use the flag to overwrite them.\n\n```shell\n# In your GitHub repository directory\nghif\n\n# Specify repository (required when not in a git repository)\nghif --repository owner/repo\nghif -r owner/repo\n\n# Specify custom output directory\nghif --output custom/path\n\n# Fetch specific issue numbers\nghif --issues 1,2,3\n\n# Fetch only open/closed issues\nghif --state open\nghif --state closed\n\n# Choose output format (markdown/xml)\nghif --format markdown  # default\nghif --format xml\n\n# Force overwrite existing issue files\nghif --skip-existing=false\n\n# Specify batch size for API requests\nghif --batch-size 20\n\n# Combine options\nghif --format xml --skip-existing=false --batch-size 20 --state open\n```\n\n## Command Options\n\n| Option | Description |\n|--------|-------------|\n| `-o, --output` | Output directory for issue files (default: \"./issues\") |\n| `-r, --repository` | Repository URL or owner/repo format (e.g., \"owner/repo\"). Required when not in a git repository |\n| `-i, --issues` | Comma-separated list of issue numbers to fetch |\n| `-s, --state` | Filter issues by state (open/closed) |\n| `-f, --format` | Output format (markdown/xml) |\n| `--batch-size` | Number of issues to fetch in each batch |\n| `--skip-existing` | Skip existing files |\n\n## Output Format\n\n\u003e [!NOTE]\n\u003e The tool supports both Markdown and XML formats. Choose based on your needs:\n\u003e - **Markdown**: Better for human readability and documentation\n\u003e - **XML**: Better for automated processing and parsing\n\nThe tool supports multiple output formats to accommodate different use cases:\n\n### Markdown Format (Default)\n```markdown\n# Issue #123: Issue Title\n\n**State:** open\n**Created:** 2024-01-04T12:34:56Z\n**Updated:** 2024-01-04T12:34:56Z\n**Labels:** bug, enhancement\n**Assignees:** username1, username2\n**User:** reporter\n\n## Description\n\nIssue description here...\n\n## Comments\n\n### @commenter (2024-01-04T13:45:67Z)\n\nComment content here...\n```\n\n### XML Format\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cissue\u003e\n    \u003cnumber\u003e123\u003c/number\u003e\n    \u003ctitle\u003e\u003c![CDATA[Issue Title]]\u003e\u003c/title\u003e\n    \u003cstate\u003eopen\u003c/state\u003e\n    \u003ccreated_at\u003e2024-01-04T12:34:56Z\u003c/created_at\u003e\n    \u003cupdated_at\u003e2024-01-04T12:34:56Z\u003c/updated_at\u003e\n    \u003clabels\u003e\n        \u003clabel\u003ebug\u003c/label\u003e\n        \u003clabel\u003eenhancement\u003c/label\u003e\n    \u003c/labels\u003e\n    \u003cassignees\u003e\n        \u003cassignee\u003eusername1\u003c/assignee\u003e\n        \u003cassignee\u003eusername2\u003c/assignee\u003e\n    \u003c/assignees\u003e\n    \u003cuser\u003ereporter\u003c/user\u003e\n    \u003cdescription\u003e\u003c![CDATA[\n        Issue description here...\n    ]]\u003e\u003c/description\u003e\n    \u003ccomments\u003e\n        \u003ccomment\u003e\n            \u003cuser\u003ecommenter\u003c/user\u003e\n            \u003ccreated_at\u003e2024-01-04T13:45:67Z\u003c/created_at\u003e\n            \u003cbody\u003e\u003c![CDATA[Comment content here...]]\u003e\u003c/body\u003e\n        \u003c/comment\u003e\n    \u003c/comments\u003e\n\u003c/issue\u003e\n```\n\nChoose the format that best suits your needs:\n- Use **Markdown** for human-readable format and easy integration with documentation tools\n- Use **XML** for structured data processing, parsing, and integration with XML-based tools\n\n## Authentication\n\n\u003e [!NOTE]\n\u003e A GitHub Personal Access Token is optional but recommended for higher API rate limits.\n\u003e If provided, set it in your environment:\n\u003e ```shell\n\u003e export GITHUB_TOKEN=$(gh auth token)\n\u003e ```\n\nThe tool can run without authentication, but will have restricted API rate limits. To increase these limits, you can create and use a GitHub Personal Access Token:\n\n1. Go to GitHub Settings -\u003e Developer settings -\u003e Personal access tokens -\u003e Tokens (classic)\n2. Generate new token\n3. Select at least these scopes:\n   - `repo` (Full control of private repositories)\n   - `read:org` (Read org and team membership)\n\n### Docker\n\nYou can also run ghif using Docker:\n\n1. Download the Dockerfile and build the image:\n```shell\ncurl -O https://raw.githubusercontent.com/kiwamizamurai/ghif/refs/heads/main/Dockerfile\ndocker build -t ghif .\n```\n\n2. Run the container:\n```shell\n# Using GitHub CLI for authentication\ndocker run --rm -v $(pwd)/issues:/issues -e GITHUB_TOKEN=$(gh auth token) ghif -o /issues -i 1 -r \"owner/repo\"\n\n# Or using a personal access token\ndocker run --rm -v $(pwd)/issues:/issues -e GITHUB_TOKEN=$GITHUB_TOKEN ghif -o /issues -i 1 -r \"owner/repo\"\n```\n\n\u003e [!NOTE]\n\u003e - Publication to Docker Hub is planned as an upcoming feature\n\u003e - The `-r` flag is required when running in Docker to specify the target repository\n\u003e - Mount a local directory to `/issues` to save the downloaded issues\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nMIT License#\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwamizamurai%2Fghif","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiwamizamurai%2Fghif","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwamizamurai%2Fghif/lists"}