{"id":28963730,"url":"https://github.com/strawberry-computer/berrry-committer","last_synced_at":"2025-09-02T10:37:25.731Z","repository":{"id":298219487,"uuid":"999246447","full_name":"Strawberry-Computer/berrry-committer","owner":"Strawberry-Computer","description":"AI-powered GitHub automation tool that processes issues and generates code automatically","archived":false,"fork":false,"pushed_at":"2025-06-16T10:50:21.000Z","size":117,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-24T04:12:26.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Strawberry-Computer.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}},"created_at":"2025-06-10T01:05:50.000Z","updated_at":"2025-06-16T10:50:25.000Z","dependencies_parsed_at":"2025-06-10T02:33:46.790Z","dependency_job_id":"538daf2a-ce1f-483c-8e2c-b3988f8c8914","html_url":"https://github.com/Strawberry-Computer/berrry-committer","commit_stats":null,"previous_names":["strawberry-computer/berrry-committer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Strawberry-Computer/berrry-committer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Strawberry-Computer%2Fberrry-committer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Strawberry-Computer%2Fberrry-committer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Strawberry-Computer%2Fberrry-committer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Strawberry-Computer%2Fberrry-committer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Strawberry-Computer","download_url":"https://codeload.github.com/Strawberry-Computer/berrry-committer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Strawberry-Computer%2Fberrry-committer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273272045,"owners_count":25075971,"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-09-02T02:00:09.530Z","response_time":77,"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":[],"created_at":"2025-06-24T04:12:29.108Z","updated_at":"2025-09-02T10:37:25.689Z","avatar_url":"https://github.com/Strawberry-Computer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🍓 Berrry Committer\n\nAI-powered GitHub automation tool that processes issues and generates code automatically using Claude.\n\n## ✨ Features\n\n- **Automatic Code Generation**: Responds to GitHub issues with complete code solutions\n- **Smart File Management**: Creates, updates, and organizes files based on issue context\n- **Iterative Development**: Uses evaluation scripts to refine solutions across multiple steps\n- **Safe Local Testing**: Interactive mode for local development with manual confirmations\n- **GitHub Actions Integration**: Fully automated workflow for production use\n\n## 🚀 Quick Start\n\n### GitHub Actions Setup\n\n1. **Add Repository Secrets**:\n   - `ANTHROPIC_API_KEY` or `OPENROUTER_API_KEY`\n\n2. **Create Workflow** (`.github/workflows/berrry-committer.yml`):\n```yaml\nname: Berrry Committer\non:\n  issues:\n    types: [opened, edited]\n  issue_comment:\n    types: [created]\n\njobs:\n  berrry-committer:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v4\n        with:\n          node-version: '18'\n      - name: Run Berrry Committer\n        env:\n          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: node src/main.js\n```\n\n3. **Create an Issue**: Describe your coding request to trigger Berrry Committer\n\n### Local Development\n\n```bash\n# 1. Set up environment\nexport ANTHROPIC_API_KEY=\"your-api-key\"\n\n# 2. Direct prompting mode (new!)\nberrry --prompt \"Create a login component with email/password validation\"\n\n# 3. GitHub event mode\nexport GITHUB_EVENT_PATH=\"/tmp/test_event.json\"\ncat \u003e /tmp/test_event.json \u003c\u003c 'EOF'\n{\n  \"issue\": {\n    \"number\": 1,\n    \"title\": \"Add user authentication\",\n    \"body\": \"Please create a login component with email/password validation\"\n  }\n}\nEOF\nberrry\n\n# 4. Or run in YOLO mode (auto-execute)\nberrry --yolo\n```\n\n## 🛠️ Configuration\n\n### Environment Variables\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `ANTHROPIC_API_KEY` | Yes* | - | Anthropic API key |\n| `OPENROUTER_API_KEY` | Yes* | - | OpenRouter API key (alternative) |\n| `MODEL` | No | `anthropic/claude-sonnet-4` | Main LLM model |\n| `COMMIT_MODEL` | No | `anthropic/claude-3.5-haiku` | Model for commit messages |\n| `TEST_COMMAND` | No | - | Command to run for validation |\n| `YOLO` | No | `false` | Skip confirmations (auto `true` in Actions) |\n\n*One of the API keys is required\n\n### Advanced Configuration\n\n```bash\n# Custom model configuration\nexport MODEL=\"anthropic/claude-3-opus\"\nexport COMMIT_MODEL=\"anthropic/claude-3-haiku\"\n\n# Test integration\nexport TEST_COMMAND=\"npm test \u0026\u0026 npm run lint\"\n\n# API endpoint override (for proxies)\nexport API_URL=\"https://your-proxy.com/v1/chat/completions\"\n```\n\n## 📋 How It Works\n\n1. **Issue Processing**: Parses GitHub issue/comment for coding requests\n2. **Context Gathering**: Automatically includes relevant files and repository structure\n3. **Code Generation**: Uses AI models to generate complete solutions with analysis\n4. **File Creation**: Writes files using the `=== FILENAME: path ===` format\n5. **Evaluation**: Runs bash scripts to validate and determine if more work is needed\n6. **Iteration**: Continues refining until solution is complete (max 5 steps)\n7. **PR Creation**: Automatically creates pull request with all changes\n\n### Code Generation Format\n\nThe AI outputs files in this format:\n\n```\n## CODE\n=== FILENAME: src/components/Login.tsx ===\nimport React from 'react';\n\nexport const Login = () =\u003e {\n  // Component implementation\n};\n=== END: src/components/Login.tsx ===\n\n## EVAL\n```bash\n#!/bin/bash\nset -euo pipefail\n# Validation script\nnpx tsc --noEmit || exit 1\nexit 0\n```\n\n## 🎯 Usage Examples\n\n### Simple Feature Request\n```\nTitle: Add dark mode toggle\nBody: Please add a dark mode toggle to the settings page\n```\n\n### Complex Implementation\n```\nTitle: Implement user authentication system\nBody: Need a complete auth system with:\n- Login/signup forms\n- JWT token handling  \n- Protected routes\n- User profile management\n\nSee existing code in `src/auth/` for context.\n```\n\n### Bug Fix\n```\nTitle: Fix memory leak in data processing\nBody: The data processor in `src/utils/processor.js` is causing memory leaks. \nPlease refactor to use streaming and proper cleanup.\n```\n\n## 🔒 Security \u0026 Safety\n\n- **Local Mode**: Manual confirmation for all script execution\n- **No Automatic Pushes**: Creates commits locally, manual push in local mode\n- **Script Preview**: Shows generated evaluation scripts before execution\n- **Git Safety**: Easy to reset changes with standard git commands\n- **API Key Protection**: Uses environment variables, never logged\n\n## 🛟 Troubleshooting\n\n### Common Issues\n\n**\"GITHUB_EVENT_PATH not found\"**\n```bash\n# Create mock event for local testing\nexport GITHUB_EVENT_PATH=\"/tmp/test_event.json\"\n```\n\n**\"API key required\"**\n```bash\nexport ANTHROPIC_API_KEY=\"your-key-here\"\n```\n\n**Permission denied on eval.sh**\n```bash\n# Ensure you're in a writable directory\nchmod +x eval.sh\n```\n\n### Debug Mode\n\nAdd verbose logging:\n```bash\nberrry --verbose\n```\n\n## 📖 Documentation\n\n- [CLAUDE.md](./CLAUDE.md) - Technical architecture guide for Berrry Committer\n- [dev.md](./dev.md) - Detailed local development guide\n\n## 🤖 AI-Assisted Development\n\nThis project uses itself for development! You can request AI-generated code:\n\n### Quick Start\n1. **Create an issue** describing your coding request\n2. **Berrry Committer will** analyze, code, test, and create a PR automatically\n\n### Examples\n```markdown\nAdd --version flag support\nPlease improve error handling in the parser\nAdd Docker configuration for easy deployment\n```\n\n📖 **[Full AI Development Guide](docs/ai-development.md)**\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create your feature branch (or use Berrry Committer)\n3. Test locally with `npm test`\n4. Submit a pull request\n\n## 📄 License\n\nMIT License - see LICENSE file for details.\n\n---\n\n*Made with 🍓 by Strawberry Computer*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrawberry-computer%2Fberrry-committer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrawberry-computer%2Fberrry-committer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrawberry-computer%2Fberrry-committer/lists"}