{"id":29824181,"url":"https://github.com/planeshifter/pr-review-extractor","last_synced_at":"2025-10-06T22:56:32.975Z","repository":{"id":296491191,"uuid":"993570126","full_name":"Planeshifter/pr-review-extractor","owner":"Planeshifter","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-31T03:33:37.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-31T15:07:18.558Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/Planeshifter.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-05-31T03:32:25.000Z","updated_at":"2025-05-31T03:33:40.000Z","dependencies_parsed_at":"2025-05-31T15:10:15.240Z","dependency_job_id":"ae02046c-fb32-4eef-a59d-84fc96459445","html_url":"https://github.com/Planeshifter/pr-review-extractor","commit_stats":null,"previous_names":["planeshifter/pr-review-extractor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Planeshifter/pr-review-extractor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Planeshifter%2Fpr-review-extractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Planeshifter%2Fpr-review-extractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Planeshifter%2Fpr-review-extractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Planeshifter%2Fpr-review-extractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Planeshifter","download_url":"https://codeload.github.com/Planeshifter/pr-review-extractor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Planeshifter%2Fpr-review-extractor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267620973,"owners_count":24116882,"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-07-29T02:00:12.549Z","response_time":2574,"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-07-29T02:42:24.856Z","updated_at":"2025-10-06T22:56:27.938Z","avatar_url":"https://github.com/Planeshifter.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PR Review Extractor\n\nA TypeScript tool that extracts PR review comments from GitHub repositories and generates actionable review checklists based on recurring patterns.\n\n## Features\n\n- 🔍 Extracts all review comments from closed/merged PRs\n- 📊 Analyzes comment patterns and categorizes them (bugs, performance, security, style, etc.)\n- 📝 Generates review checklists based on frequently mentioned issues\n- 🎯 Prioritizes items by severity and frequency\n- 📄 Exports to multiple formats (Markdown, JSON, YAML)\n\n## Installation\n\n```bash\nnpm install\nnpm run build\n```\n\n## Setup\n\n1. Create a GitHub Personal Access Token with `repo` scope (or `public_repo` for public repos only)\n2. Copy `.env.example` to `.env` and add your token:\n   ```\n   GITHUB_TOKEN=your_github_personal_access_token_here\n   ```\n\n## Usage\n\n### Command Line\n\n```bash\n# Basic usage\nnpm run build\nnode dist/cli/index.js extract -o owner -r repo\n\n# With options\nnode dist/cli/index.js extract \\\n  -o facebook \\\n  -r react \\\n  --max-prs 100 \\\n  --since 2024-01-01 \\\n  --format markdown \\\n  --output ./checklists/react-checklist\n\n# Test connection\nnode dist/cli/index.js test -o owner -r repo\n```\n\n### Options\n\n- `-o, --owner \u003cowner\u003e`: Repository owner (required)\n- `-r, --repo \u003crepo\u003e`: Repository name (required)\n- `-t, --token \u003ctoken\u003e`: GitHub token (or use GITHUB_TOKEN env var)\n- `-m, --max-prs \u003cnumber\u003e`: Maximum number of PRs to analyze\n- `-s, --state \u003cstate\u003e`: PR state: open, closed, or all (default: closed)\n- `--since \u003cdate\u003e`: Only include PRs created after this date (YYYY-MM-DD)\n- `-f, --format \u003cformat\u003e`: Output format: json, markdown, or yaml (default: markdown)\n- `--output \u003cpath\u003e`: Output file path (default: ./output/checklist)\n\n### Programmatic Usage\n\n```typescript\nimport { PRExtractor, ChecklistGenerator, ChecklistFormatter } from './src';\n\nconst extractor = new PRExtractor({\n  owner: 'facebook',\n  repo: 'react',\n  token: process.env.GITHUB_TOKEN!,\n  maxPRs: 100\n});\n\nconst data = await extractor.extract();\nconst generator = new ChecklistGenerator();\nconst checklist = generator.generate(data, 'facebook/react');\n\nconst formatter = new ChecklistFormatter();\nawait formatter.saveAsMarkdown(checklist, './checklist.md');\n```\n\n## Output Example\n\nThe tool generates checklists organized by category:\n\n```markdown\n# PR Review Checklist\n\n## Performance\n\n1. 🟡 **Avoid unnecessary re-renders** (15 occurrences)\n2. 🔴 **Consider memoizing expensive calculations** (8 occurrences)\n\n## Security\n\n1. 🔴 **Sanitize user input to prevent XSS** (12 occurrences)\n2. 🟡 **Validate API responses** (6 occurrences)\n```\n\n## Development\n\n```bash\n# Run in development mode\nnpm run dev\n\n# Type checking\nnpm run typecheck\n\n# Linting\nnpm run lint\n\n# Format code\nnpm run format\n```\n\n## License\n\nISC","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaneshifter%2Fpr-review-extractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplaneshifter%2Fpr-review-extractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaneshifter%2Fpr-review-extractor/lists"}