{"id":23055591,"url":"https://github.com/vlazic/git-task-analyzer","last_synced_at":"2026-05-17T15:32:14.171Z","repository":{"id":199282723,"uuid":"702186174","full_name":"vlazic/git-task-analyzer","owner":"vlazic","description":"Intelligent git commit analyzer: Turning commit logs into detailed tasks with estimated timelines.","archived":false,"fork":false,"pushed_at":"2023-10-09T14:10:19.000Z","size":33,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-13T13:37:40.796Z","etag":null,"topics":["cli","code-analysis-tool","git-analysis","gpt","gpt-4","openai","productivity","task-tracker","tasks"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vlazic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-10-08T18:35:56.000Z","updated_at":"2025-01-31T20:01:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"f4a86fa8-e014-4d4e-9613-33749780ed61","html_url":"https://github.com/vlazic/git-task-analyzer","commit_stats":null,"previous_names":["vlazic/git-task-analyzer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vlazic/git-task-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlazic%2Fgit-task-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlazic%2Fgit-task-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlazic%2Fgit-task-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlazic%2Fgit-task-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vlazic","download_url":"https://codeload.github.com/vlazic/git-task-analyzer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlazic%2Fgit-task-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015351,"owners_count":26085684,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"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","code-analysis-tool","git-analysis","gpt","gpt-4","openai","productivity","task-tracker","tasks"],"created_at":"2024-12-16T01:12:44.318Z","updated_at":"2025-10-13T13:37:41.665Z","avatar_url":"https://github.com/vlazic.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# git-task-analyzer\n\n## Overview\n\nThe `git-task-analyzer` is a Command-Line Interface (CLI) tool designed to analyze git repositories within a specified time frame. It extracts commit information, processes these commits using AI, and creates detailed, human-readable task descriptions suitable for project management or client invoicing.\n\n## Features\n\n- Interactive commit grouping\n- Extraction of git commits within a specified date range\n- Analysis of commits using OpenAI\n- Generation of detailed task descriptions\n- Computation of estimated time for task completion\n\n## Installation\n\nTo get started with `git-task-analyzer`, you need to have Node.js and npm installed on your system. Once you have them:\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/vlazic/git-task-analyzer.git\n   cd git-task-analyzer\n   ```\n\n2. Install the dependencies:\n\n   ```bash\n   npm install\n   ```\n\n3. Link the CLI for global usage:\n   ```bash\n   npm link\n   ```\n\n## Usage\n\nTo run the `git-task-analyzer`:\n\n```bash\ngit-task-analyzer [options]\n```\n\n### Options\n\n- `-u, --user \u003cuser\u003e`: Specify the user for commit analysis. If not provided, commits from all authors will be considered.\n\n- `-r, --repo \u003cpath\u003e`: Specify the repository path. If not provided, the tool will analyze the repository in the current directory.\n\n- `-s, --sort \u003corder\u003e`: Sort results in ascending (`asc`) or descending (`desc`) order. By default, results are sorted in ascending order.\n\n- `-o, --output \u003cfile\u003e`: Specify the file where tasks should be saved. If this option is not provided, tasks will be displayed on the screen.\n\n- `-e, --exclude \u003cfiles\u003e`: Exclude specified files from the analysis. Provide a comma-separated list of files or patterns, e.g. `'package-lock.json,yarn.lock'`. By default, typical lock files and other common noise files like `.DS_Store`, `*.log`, etc., are excluded.\n\n- `--debug`: Display debug logs.\n\n### Sample Usage\n\n- Analyze commits from user \"john.doe\" in the repository located at `./my-project`, and sort the results in descending order:\n\n  ```bash\n  git-task-analyzer --user john.doe --repo ./my-project --sort desc\n  ```\n\n- Analyze commits in the repository located at `./my-project`, save the results to `tasks.json`, and exclude `yarn.lock` and `package-lock.json`:\n\n  ```bash\n  git-task-analyzer -r ./my-project -o tasks.json --exclude yarn.lock,package-lock.json\n  ```\n\n- Analyze commits from the repository in the current directory and exclude `*.log` files:\n  ```bash\n  git-task-analyzer --exclude *.log\n  ```\n\n### Workflow\n\n1. Specify the start and end dates for the analysis.\n2. Group commits interactively or process individual ones.\n3. Review the groups and commits before sending them to AI for analysis.\n4. Obtain a detailed task list after AI processing.\n5. Review total time estimates for all tasks.\n\n## Dependencies\n\nThe project uses various libraries including:\n\n- `chalk`: For colorful console logs.\n- `commander`: To handle CLI input.\n- `inquirer` and `inquirer-date-prompt`: For interactive prompts.\n- `openai`: For OpenAI API interactions.\n\nGot it! I've made the modifications based on your clarifications. Here's the revised `TODO` section for your `README.md`:\n\n## TODO\n\nAs we continue to develop and enhance `git-task-analyzer`, here are some planned features and improvements:\n\n1. **Implement Local LLM Models**: Integrate local LLM models via [LocalAi](https://localai.io/basics/getting_started/).\n\n2. **Stream AI Responses**: Once local LLM implementation is complete, consider a feature to display streaming responses from the AI, especially if there's a delay in getting the results.\n\n3. **Parallelize OpenAI Calls**: Speed up the processing by making concurrent calls to OpenAI.\n\n4. **Token Count Warning**: For OpenAI calls, count the number of tokens in the request and issue a warning if it exceeds 16,000 tokens.\n\n5. **Dynamic OpenAI Model Selection**:\n\n   - Allow users to specify the OpenAI model via a CLI flag.\n   - Implement logic to choose the OpenAI model dynamically based on the number of tokens in the request.\n\n6. **Data Export**: Implement CSV/TSV export functionality with options to customize column names and their order.\n\n7. **Packaging as an NPM Library and CLI**:\n\n   - Package the tool for NPM to be used both as a CLI and as a library for those who want to integrate it into their applications.\n\n8. **CLI Flags for System Prompts**:\n\n   - `--prompt`: Allow users to specify a custom system prompt that is sent to the AI.\n   - `--show-prompt`: Display the current system prompt to the user.\n\n9. **Commit Exclusion**: Allow users to exclude specific commits or tasks from the list.\n\n10. **Date Input via Flags**: Add flags to directly input the start and end dates for analysis, bypassing the prompts.\n\n11. **Loading Indicators**: Display spinners or other visual indicators during API calls to signal ongoing processing.\n\n12. **Utilize OpenAI \"Functions\"**: Incorporate the use of \"functions\" in OpenAI calls to ensure we receive the desired structured response.\n\n## Author\n\nVladimir Lazić - [contact@vlazic.com](mailto:contact@vlazic.com) | [https://vlazic.com/](https://vlazic.com/)\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlazic%2Fgit-task-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvlazic%2Fgit-task-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlazic%2Fgit-task-analyzer/lists"}