{"id":44570260,"url":"https://github.com/dgouron/review-flow","last_synced_at":"2026-05-24T01:01:25.297Z","repository":{"id":337056145,"uuid":"1146165246","full_name":"DGouron/review-flow","owner":"DGouron","description":"Automated AI code reviews powered — webhook-driven, real-time dashboard, MCP integration, smart queue with deduplication, multi-agent audits, and iterative follow-up reviews for GitLab MRs and GitHub PRs","archived":false,"fork":false,"pushed_at":"2026-05-20T06:20:49.000Z","size":2463,"stargazers_count":37,"open_issues_count":3,"forks_count":8,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-20T08:53:04.464Z","etag":null,"topics":["ai","automation","claude","clean-architecture","code-review","dashboard","github","gitlab","mcp","merge-request","model-context-protocol","pull-request","real-time","typescript","webhook"],"latest_commit_sha":null,"homepage":"https://dgouron.github.io/review-flow","language":"TypeScript","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/DGouron.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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-01-30T17:55:19.000Z","updated_at":"2026-05-20T06:20:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DGouron/review-flow","commit_stats":null,"previous_names":["dgouron/claude-review-automation","dgouron/review-flow"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/DGouron/review-flow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGouron%2Freview-flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGouron%2Freview-flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGouron%2Freview-flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGouron%2Freview-flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DGouron","download_url":"https://codeload.github.com/DGouron/review-flow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGouron%2Freview-flow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33417489,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: 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":["ai","automation","claude","clean-architecture","code-review","dashboard","github","gitlab","mcp","merge-request","model-context-protocol","pull-request","real-time","typescript","webhook"],"created_at":"2026-02-14T02:21:03.932Z","updated_at":"2026-05-24T01:01:25.291Z","avatar_url":"https://github.com/DGouron.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/dgouron-review-flow-badge.png)](https://mseep.ai/app/dgouron-review-flow)\n\n# Reviewflow\n\n[![CI](https://github.com/DGouron/review-flow/actions/workflows/ci.yml/badge.svg)](https://github.com/DGouron/review-flow/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D20-green.svg)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.8-blue.svg)](https://www.typescriptlang.org/)\n[![Documentation](https://img.shields.io/badge/Docs-VitePress-646cff.svg)](https://dgouron.github.io/review-flow/)\n\nAutomated AI code reviews powered by [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Assign a reviewer on your merge request — Claude reviews the code, tracks progress in real time, and follows up when you push fixes.\n\nWorks with **GitLab** and **GitHub** out of the box.\n\n---\n\n## How It Works\n\n```\nDeveloper pushes code\n       │\n       ▼\nGitLab/GitHub webhook ──► Review server receives event\n                                    │\n                                    ▼\n                          Queue deduplicates \u0026 schedules\n                                    │\n                                    ▼\n                          Claude Code runs review skill\n                                    │\n                          ┌─────────┼─────────┐\n                          ▼         ▼         ▼\n                     Agent 1   Agent 2   Agent N\n                   (Archi)    (Tests)   (Quality)\n                          │         │         │\n                          └─────────┼─────────┘\n                                    ▼\n                          MCP server reports progress\n                                    │\n                                    ▼\n                          Dashboard shows live status\n                                    │\n                                    ▼\n                          Review posted on MR/PR\n                                    │\n                                    ▼\n                          Dev pushes fixes ──► Auto follow-up\n```\n\n---\n\n## Key Features\n\n### Multi-Agent Reviews\n\nEach review runs a configurable set of specialized audit agents — Clean Architecture, SOLID, Testing, DDD, Code Quality, and more. Define your own agents per project to match your team's standards.\n\n```json\n{\n  \"agents\": [\n    { \"name\": \"clean-architecture\", \"displayName\": \"Clean Archi\" },\n    { \"name\": \"security\", \"displayName\": \"Security\" },\n    { \"name\": \"testing\", \"displayName\": \"Testing\" }\n  ]\n}\n```\n\n### MCP Integration\n\nA built-in [Model Context Protocol](https://modelcontextprotocol.io/) server gives Claude structured tools to report progress, manage review phases, and queue actions on discussion threads — replacing fragile text-marker parsing with typed tool calls.\n\n| MCP Tool | Purpose |\n|----------|---------|\n| `get_workflow` | Read current review state and agent list |\n| `start_agent` / `complete_agent` | Track per-agent progress |\n| `set_phase` | Advance review phases |\n| `get_threads` | Fetch MR/PR discussion threads |\n| `add_action` | Queue thread actions (resolve, reply, comment) |\n\n### Smart Queue\n\nPowered by [p-queue](https://github.com/sindresorhus/p-queue) with:\n\n- **Concurrency control** — limit parallel reviews (default: 2)\n- **Deduplication** — prevents duplicate reviews within a configurable time window\n- **Graceful cancellation** — abort running reviews via dashboard or API\n- **Memory guard** — auto-kills if RSS exceeds 4 GB\n- **Retry on failure** — failed jobs clear deduplication so they can be re-triggered immediately\n\n### Real-Time Dashboard\n\nA WebSocket-powered dashboard shows live review progress:\n\n- Phase and agent-level progress bars\n- Running / queued / completed review counts\n- Review history with duration, scores, and error details\n- **Team tab** with developer cards, insights, and AI analysis\n- **Stats section** with canvas charts, score trends, and animated counters\n- Log stream for debugging\n- Auto-reconnection with exponential backoff\n\n### Developer \u0026 Team Insights\n\nThe dashboard computes performance insights from your review history — no configuration needed.\n\n**Per-developer analysis** across 4 categories:\n\n| Category | What it measures |\n|----------|-----------------|\n| Quality | Average score, blocking issues ratio |\n| Responsiveness | Review turnaround time vs team average |\n| Code Volume | Additions/deletions per review |\n| Iteration | First-pass quality rate (reviews without blocking issues) |\n\nEach developer gets a **level** (beginner → expert), a **trend** (improving / stable / declining), identified **strengths and weaknesses**, and a title based on their strongest category (Architect, Firefighter, Workhorse, Sentinel, or Balanced).\n\n**Team-level analysis** shows top performer, most improved developer, and actionable tips.\n\n**AI-powered narrative** (optional): click \"Generate AI Insights\" to have Claude produce a written analysis with per-developer and team recommendations.\n\nInsights are computed from the first 5 reviews onward and persist across sessions.\n\n### Follow-Up Reviews\n\nWhen a developer pushes fixes after a review, Claude automatically:\n\n1. Re-reads the discussion threads\n2. Checks if blocking issues are resolved\n3. Resolves threads on GitLab/GitHub\n4. Posts a follow-up summary with updated score\n\nThis creates an iterative review loop, not just a one-shot check.\n\n### Multi-Platform Support\n\n| Feature | GitLab | GitHub |\n|---------|--------|--------|\n| Webhook trigger | Reviewer assigned | Review requested or `needs-review` label |\n| Thread actions | Resolve, reply, comment | Resolve, reply, comment |\n| Auto-followup | On MR push | On PR push |\n| Authentication | `glab` CLI (OAuth) | `gh` CLI (OAuth) |\n\nNo API tokens needed — both platforms use secure CLI-based OAuth.\n\n### Customizable Review Skills\n\nReview behavior is defined by [Claude Code skills](https://docs.anthropic.com/en/docs/claude-code/skills) — Markdown files in your project that tell Claude what to audit and how. Templates included for frontend, backend, and API reviews in English and French.\n\n---\n\n## Quick Start\n\n### 1. Install\n\n```bash\nnpm install -g reviewflow\n```\n\n### 2. Initialize\n\n```bash\nreviewflow init\n```\n\nThe interactive wizard will:\n- Configure server port and usernames\n- Generate webhook secrets\n- Scan your filesystem for git repositories\n- Set up MCP server integration with Claude Code\n\nFor non-interactive setup: `reviewflow init --yes`\n\n### 3. Start\n\n```bash\nreviewflow start\n# Dashboard at http://localhost:3847\n```\n\nThen [configure a webhook](https://dgouron.github.io/review-flow/guide/quick-start) on your GitLab/GitHub project pointing to your server.\n\n### Validate your setup\n\n```bash\nreviewflow validate\n```\n\nFor detailed setup, see the **[Quick Start Guide](https://dgouron.github.io/review-flow/guide/quick-start)**.\n\n---\n\n## CLI Reference\n\n| Command | Description |\n|---------|-------------|\n| `reviewflow init` | Interactive setup wizard |\n| `reviewflow start` | Start the review server |\n| `reviewflow stop` | Stop the running daemon |\n| `reviewflow status` | Show server status |\n| `reviewflow logs` | Show daemon logs |\n| `reviewflow validate` | Validate configuration |\n\n| Init Flag | Description |\n|-----------|-------------|\n| `-y, --yes` | Accept all defaults (non-interactive) |\n| `--skip-mcp` | Skip MCP server configuration |\n| `--show-secrets` | Display full webhook secrets |\n| `--scan-path \u003cpath\u003e` | Custom scan path (repeatable) |\n\n---\n\n## Documentation\n\n| Topic | Link |\n|-------|------|\n| Quick Start | [guide/quick-start](https://dgouron.github.io/review-flow/guide/quick-start) |\n| Configuration Reference | [reference/config](https://dgouron.github.io/review-flow/reference/config) |\n| Project Configuration | [guide/project-config](https://dgouron.github.io/review-flow/guide/project-config) |\n| Review Skills Guide | [guide/review-skills](https://dgouron.github.io/review-flow/guide/review-skills) |\n| MCP Tools Reference | [reference/mcp-tools](https://dgouron.github.io/review-flow/reference/mcp-tools) |\n| Architecture | [architecture](https://dgouron.github.io/review-flow/architecture/) |\n| Deployment | [deployment](https://dgouron.github.io/review-flow/deployment/) |\n| Troubleshooting | [guide/troubleshooting](https://dgouron.github.io/review-flow/guide/troubleshooting) |\n\n---\n\n## API\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/dashboard/` | GET | Web dashboard |\n| `/health` | GET | Health check |\n| `/status` | GET | Queue status |\n| `/webhooks/gitlab` | POST | GitLab webhook receiver |\n| `/webhooks/github` | POST | GitHub webhook receiver |\n| `/api/reviews` | GET | List reviews |\n| `/api/reviews/cancel/:jobId` | POST | Cancel a running review |\n| `/api/insights?path=` | GET | Developer \u0026 team insights |\n| `/api/insights/generate` | POST | Generate AI-powered insights via Claude |\n| `/api/stats/recalculate` | POST | Recalculate stats with optional diff backfill |\n| `/api/version/check` | GET | Check for updates |\n| `/api/version/update` | POST | Trigger self-update |\n| `/ws` | WS | Real-time progress updates |\n\n---\n\n## Development\n\n```bash\nnpm run dev          # Dev server with hot reload\nnpm test             # Tests in watch mode\nnpm run test:ci      # Tests (CI mode)\nnpm run typecheck    # TypeScript validation\nnpm run lint         # Biome linting\nnpm run verify       # All checks (typecheck + lint + test)\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## License\n\n[MIT](LICENSE) — Damien Gouron\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgouron%2Freview-flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdgouron%2Freview-flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgouron%2Freview-flow/lists"}