{"id":37076261,"url":"https://github.com/jarry3369/groupit","last_synced_at":"2026-01-14T08:58:23.018Z","repository":{"id":314054049,"uuid":"1052874398","full_name":"jarry3369/groupit","owner":"jarry3369","description":"AI-powered Git commit grouping tool for semantic code organization","archived":false,"fork":false,"pushed_at":"2026-01-14T01:49:13.000Z","size":152,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-14T05:34:08.842Z","etag":null,"topics":["agent","ai","cli","commit","git-commits"],"latest_commit_sha":null,"homepage":"","language":"Python","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/jarry3369.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":null,"dco":null,"cla":null}},"created_at":"2025-09-08T17:06:52.000Z","updated_at":"2026-01-14T01:49:16.000Z","dependencies_parsed_at":"2025-09-10T10:45:57.309Z","dependency_job_id":"10646f28-92fa-4aa6-aca7-09e5e42ada32","html_url":"https://github.com/jarry3369/groupit","commit_stats":null,"previous_names":["jarry3369/groupit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jarry3369/groupit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarry3369%2Fgroupit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarry3369%2Fgroupit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarry3369%2Fgroupit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarry3369%2Fgroupit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jarry3369","download_url":"https://codeload.github.com/jarry3369/groupit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jarry3369%2Fgroupit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414729,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["agent","ai","cli","commit","git-commits"],"created_at":"2026-01-14T08:58:22.460Z","updated_at":"2026-01-14T08:58:23.013Z","avatar_url":"https://github.com/jarry3369.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧠 GroupIt\n\n**AI-powered Git commit grouping tool for semantic code organization**\n\nGroupIt revolutionizes how you manage Git commits by intelligently analyzing your code changes and automatically grouping related modifications into logical, semantic commits. Using advanced AI models and structural analysis, it transforms chaotic development workflows into clean, meaningful commit histories that tell the story of your code evolution.\n\n[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub Issues](https://img.shields.io/github/issues/jarry3369/groupit)](https://github.com/jarry3369/groupit/issues)\n\n## 🚀 Features\n\n- **🎯 Intelligent Grouping**: AI-powered semantic analysis groups related changes across multiple files\n- **🔍 Multi-Language Support**: Comprehensive support for 50+ programming languages and file types\n- **🤖 LLM Integration**: Compatible with OpenAI GPT-4, Google Gemini, and local Ollama models\n- **📊 Structural Analysis**: DBSCAN clustering with architectural pattern recognition\n- **💬 Conventional Commits**: Automatic generation of conventional commit messages\n- **🌊 4-Stage Pipeline**: Primary grouping → Summary generation → Semantic grouping → Message generation\n- **🎨 Beautiful CLI**: Rich terminal interface with colored output and progress indicators\n- **⚡ Performance Optimized**: Caching, parallel processing, and batch operations\n\n## 🛠️ Installation\n\nfrom [PyPI](https://pypi.org/project/groupit/)\n\n```bash\npip install groupit\n```\n\n## 🔧 Configuration\n\n### LLM Provider Setup\n\nGroupIt supports multiple LLM providers. Choose one based on your needs:\n\n#### OpenAI (Recommended)\n```bash\nexport OPENAI_API_KEY=\"your-api-key-here\"\n```\n\n#### Google Gemini\n```bash\nexport GEMINI_API_KEY=\"your-api-key-here\"\n```\n\n#### Ollama (Local/Free)\n```bash\n# Install Ollama first: https://ollama.ai\nollama pull llama3.2  # or your preferred model\n# No API key required for local models\n```\n\n### Environment Variables\n\n```bash\n# LLM Configuration\nexport GROUPIT_LLM_PROVIDER=\"openai\"  # openai, gemini, ollama\nexport GROUPIT_LLM_TEMPERATURE=\"0.3\"\n\n# Clustering Parameters\nexport GROUPIT_CLUSTERING_EPS=\"0.35\"\nexport GROUPIT_CLUSTERING_MIN_SAMPLES=\"2\"\n\n# Performance Settings\nexport GROUPIT_ENABLE_CACHING=\"true\"\nexport GROUPIT_MAX_WORKERS=\"4\"\n\n# Logging\nexport GROUPIT_LOG_LEVEL=\"INFO\"\nexport GROUPIT_DEBUG=\"false\"\n```\n\n## 📖 Usage\n\n### Quick Start\n\n```bash\n# Analyze staged changes with OpenAI\ngroupit analyze --staged --llm openai\n\n# Analyze working directory with Gemini\ngroupit analyze --llm gemini --output results.json\n\n# Use local Ollama (no API key needed)\ngroupit analyze --llm ollama --model llama3.2\n\n# Create commits from analysis results\ngroupit commit results.json --execute\n```\n\n### Command Reference\n\n#### Analyze Changes\n```bash\ngroupit analyze [OPTIONS]\n\nOptions:\n  --staged              Analyze only staged changes\n  --llm PROVIDER        LLM provider (openai, gemini, ollama)\n  --api-key KEY         API key for LLM provider\n  --model MODEL         Specific model to use\n  --temperature TEMP    LLM temperature (0.0-2.0)\n  --eps FLOAT           DBSCAN clustering epsilon\n  --min-samples INT     DBSCAN minimum samples\n  --output FILE         Save results to JSON file\n  --verbose, -v         Enable verbose output\n  --quiet, -q           Suppress non-essential output\n```\n\n#### Create Commits\n```bash\ngroupit commit results.json [OPTIONS]\n\nOptions:\n  --execute             Actually create commits (default: dry-run)\n  --auto-confirm        Don't ask for confirmation\n  --force               Force creation even if repo is dirty\n```\n\n#### Check Status\n```bash\ngroupit status [OPTIONS]\n\nOptions:\n  --json                Output in JSON format\n  --detailed            Show detailed information\n```\n\n#### Validate Configuration\n```bash\ngroupit validate [OPTIONS]\n\nOptions:\n  --llm-provider PROVIDER  Validate specific provider\n  --api-key KEY           API key to validate\n  --fix                   Attempt to fix issues\n```\n\n## 🔄 How It Works\n\nGroupIt uses a sophisticated 4-stage pipeline to transform your messy code changes into clean, semantic commits:\n\n```mermaid\ngraph TB\n    A[Code Changes] --\u003e B[Stage 1: Primary Grouping]\n    B --\u003e C[Stage 2: Summary Generation]\n    C --\u003e D[Stage 3: Semantic Grouping]\n    D --\u003e E[Stage 4: Message Generation]\n    E --\u003e F[Final Commit Groups]\n\n    B1[DBSCAN Clustering\u003cbr/\u003e+ Structural Analysis\u003cbr/\u003e+ Graph-based Similarity]\n    C1[LLM-generated\u003cbr/\u003eNatural Language\u003cbr/\u003eSummaries]\n    D1[AI-powered Semantic\u003cbr/\u003eAnalysis \u0026 Merging\u003cbr/\u003eData Flow Detection]\n    E1[Conventional Commit\u003cbr/\u003eMessage Generation\u003cbr/\u003ewith Scope \u0026 Type]\n\n    B -.-\u003e B1\n    C -.-\u003e C1\n    D -.-\u003e D1\n    E -.-\u003e E1\n\n    style A fill:#e1f5fe\n    style F fill:#e8f5e8\n    style B fill:#fff3e0\n    style C fill:#f3e5f5\n    style D fill:#e0f2f1\n    style E fill:#fce4ec\n```\n\n### Stage 1: Primary Grouping\n- **DBSCAN clustering** on code similarity vectors\n- **Structural analysis** of file relationships and imports\n- **Architectural pattern** recognition (page-component relationships, data flow)\n- **Graph-based similarity** using NetworkX for dependency analysis\n\n### Stage 2: Summary Generation\n- **Natural language summaries** of each group using LLM\n- **Context extraction** from file types, directories, and patterns\n- **Fallback heuristics** for robust operation without LLM\n\n### Stage 3: Semantic Grouping\n- **Advanced LLM analysis** for data flow patterns\n- **Cross-group relationship** detection\n- **User journey mapping** to identify related features\n- **Intelligent merging** of semantically related groups\n\n### Stage 4: Message Generation\n- **Conventional commit** message generation\n- **Automatic scope detection** from file paths and types\n- **Type classification** (feat, fix, refactor, docs, etc.)\n- **Multi-line messages** with detailed descriptions\n\n## 📁 Language Support\n\nGroupIt supports 50+ programming languages and file types:\n\n| Category | Languages/Types |\n|----------|-----------------|\n| **Frontend** | JavaScript, TypeScript, React (JSX/TSX), Vue, Svelte, HTML, CSS, SCSS/Sass |\n| **Backend** | Python, Java, Kotlin, Scala, C/C++, C#, Go, Rust, PHP, Ruby, Swift |\n| **Mobile** | iOS (Swift, Objective-C), Android (Java, Kotlin), React Native, Flutter |\n| **Infrastructure** | Docker, Kubernetes, Terraform, CI/CD (GitHub Actions, GitLab CI) |\n| **Data \u0026 Config** | JSON, YAML, TOML, XML, SQL, CSV, Environment files |\n| **Build Systems** | Maven, Gradle, npm/yarn, pip, Cargo, CMake, Makefile |\n| **Game Development** | Unity (C#), Unreal Engine, Godot (GDScript) |\n| **Blockchain** | Solidity, Vyper |\n\n## 🎯 Examples\n\n### Example 1: Feature Development\n```bash\n# You've been working on a user authentication feature\n# Modified: login.tsx, auth.service.ts, user.model.ts, auth.test.ts\n\ngroupit analyze --staged --llm openai\n```\n\n**Result:**\n```\nGroup 1: feat(auth): implement user login functionality\n├── login.tsx - Login form component\n├── auth.service.ts - Authentication service\n└── user.model.ts - User data model\n\nGroup 2: test(auth): add authentication tests\n└── auth.test.ts - Test suite for auth functionality\n```\n\n### Example 2: Refactoring\n```bash\n# Refactored database layer across multiple files\ngroupit analyze --llm gemini --temperature 0.2\n```\n\n**Result:**\n```\nGroup 1: refactor(database): modernize connection handling\n├── db/connection.py - Connection pool implementation\n├── db/models.py - Model base classes\n└── config/database.yml - Database configuration\n\nGroup 2: refactor(database): optimize query performance\n├── repositories/user_repo.py - User queries\n└── repositories/product_repo.py - Product queries\n```\n\n## 🔧 Advanced Configuration\n\n### Configuration File\n\nCreate `groupit.json` in your project root:\n\n```json\n{\n  \"llm\": {\n    \"provider\": \"openai\",\n    \"model\": \"gpt-4\",\n    \"temperature\": 0.3,\n    \"timeout\": 30\n  },\n  \"clustering\": {\n    \"eps\": 0.35,\n    \"min_samples\": 2,\n    \"alpha\": 0.4,\n    \"max_iterations\": 2\n  },\n  \"performance\": {\n    \"enable_caching\": true,\n    \"max_workers\": 4,\n    \"batch_size\": 5\n  },\n  \"logging\": {\n    \"level\": \"INFO\",\n    \"enable_file\": false\n  }\n}\n```\n\nUse with:\n```bash\ngroupit analyze --config groupit.json\n```\n\n### Performance Tuning\n\nFor large repositories:\n```bash\n# Increase batch size for better throughput\ngroupit analyze --batch-size 10 --max-workers 8\n\n# Reduce clustering sensitivity for fewer groups\ngroupit analyze --eps 0.5 --min-samples 3\n\n# Use caching for repeated analysis\ngroupit analyze --no-caching=false\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n```bash\ngit clone https://github.com/jarry3369/groupit.git\ncd groupit\nuv sync --dev\nuv run pytest\n```\n\n### Running Tests\n\n```bash\n# Run all tests\nuv run pytest\n\n# Run with coverage\nuv run pytest --cov=groupit --cov-report=html\n\n# Run specific test category\nuv run pytest tests/unit/\nuv run pytest tests/integration/\n```\n\n## 📊 Performance\n\nGroupIt is optimized for real-world development workflows:\n\n- **Processing Speed**: ~100-500 changes per minute\n- **Memory Usage**: \u003c 512MB for typical repositories\n- **API Efficiency**: Batch processing minimizes LLM API calls\n- **Caching**: Intelligent caching reduces repeated analysis\n\nBenchmarks on common scenarios:\n- Small changes (1-10 files): \u003c 10 seconds\n- Medium refactoring (10-50 files): 30-60 seconds  \n- Large feature (50+ files): 2-5 minutes\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n**LLM API Key Issues:**\n```bash\n# Verify your API key is set\ngroupit validate --llm-provider openai\n\n# Test with a different provider\ngroupit analyze --llm ollama  # No API key needed\n```\n\n**Clustering Problems:**\n```bash\n# Adjust clustering sensitivity\ngroupit analyze --eps 0.5 --min-samples 1\n\n# Enable debug mode for detailed logs\ngroupit analyze --debug\n```\n\n**Performance Issues:**\n```bash\n# Disable caching temporarily\ngroupit analyze --no-caching\n\n# Reduce batch size\ngroupit analyze --batch-size 2\n```\n\n### Getting Help\n\n- 📖 [Documentation](https://github.com/jarry3369/groupit/blob/main/README.md)\n- 🐛 [Issues](https://github.com/jarry3369/groupit/issues)\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n**Made with ❤️ by [jarry3369](https://github.com/jarry3369)**\n\n*Transform your commit history from chaos to clarity with GroupIt.*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjarry3369%2Fgroupit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjarry3369%2Fgroupit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjarry3369%2Fgroupit/lists"}