{"_id":"@elliottlawson/open-review","_rev":"4-84d13ef2c370aaadf7a1be50c3339370","name":"@elliottlawson/open-review","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@elliottlawson/open-review","version":"0.1.0","keywords":["code-review","ai","llm","github","pull-request","automation","claude","gpt","anthropic","openai"],"author":{"name":"Elliott Lawson"},"license":"MIT","_id":"@elliottlawson/open-review@0.1.0","maintainers":[{"name":"elliottlawson","email":"elliott.lawson@outlook.com"}],"homepage":"https://github.com/elliottlawson/open-review#readme","bugs":{"url":"https://github.com/elliottlawson/open-review/issues"},"bin":{"open-review":"dist/cli/index.js"},"dist":{"shasum":"048bf445b0da3430fc7f4ae3977cbce8557eef29","tarball":"https://registry.npmjs.org/@elliottlawson/open-review/-/open-review-0.1.0.tgz","fileCount":34,"integrity":"sha512-U4oWUAWwCtzHRzhuC1C/OhFa/BsQE86D6zozoHpZQK+658U7x5dVZP/kjakLxSo/fL/Sl6IW2fNYz6pXsX0wZQ==","signatures":[{"sig":"MEUCIQDyoJRkdJ4CRQXBqIrYg8ZIfXKqYxA17+wktTi7Hn2Z6AIgRt6jRz39UoyYHcQj3x5heevs+nijzauKoXc3STHT41g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142296},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"804f6635b2edd8e74108ae979261a62593df5b4c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"tsx src/cli/index.ts","review":"tsx src/cli/index.ts pr","prepare":"npm run build"},"_npmUser":{"name":"elliottlawson","email":"elliott.lawson@outlook.com"},"repository":{"url":"git+https://github.com/elliottlawson/open-review.git","type":"git"},"_npmVersion":"11.12.1","description":"AI-powered PR code review tool - automated code reviews using Claude or GPT","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ai":"^6.0.162","zod":"^4.3.6","yaml":"^2.8.3","dotenv":"^17.4.2","@linear/sdk":"^81.0.0","@mastra/core":"^1.25.0","@octokit/rest":"^22.0.1","@ai-sdk/openai":"^3.0.53","@mastra/memory":"^1.15.1","@ai-sdk/anthropic":"^3.0.69"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^6.0.2","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/open-review_0.1.0_1776537972809_0.7184788561077122","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@elliottlawson/open-review","version":"0.1.1","keywords":["code-review","ai","llm","github","pull-request","automation","claude","gpt","anthropic","openai"],"author":{"name":"Elliott Lawson"},"license":"MIT","_id":"@elliottlawson/open-review@0.1.1","maintainers":[{"name":"elliottlawson","email":"elliott.lawson@outlook.com"}],"homepage":"https://github.com/elliottlawson/open-review#readme","bugs":{"url":"https://github.com/elliottlawson/open-review/issues"},"bin":{"open-review":"dist/cli/index.js"},"dist":{"shasum":"74069eb0e4f2081751bc26d216dba5a9e140d98e","tarball":"https://registry.npmjs.org/@elliottlawson/open-review/-/open-review-0.1.1.tgz","fileCount":34,"integrity":"sha512-/mdqIuMryXSUEfXvj4VyoUAMw+weGDM8PJEk5/1l0miS3mbGWkpvozRCwFE7LOxHT9UJYvdksZaXNJv80PKD7w==","signatures":[{"sig":"MEUCIQDLQ08r/9gO1ShpMPGhZ5xOzQhVcbvl8z9tX1bTI8b79AIgD/JOEUrmfTKVl7IyBde2bdrBnO769KZuMNqtLsCnCpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133471},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"a674de9d052eca914de13a9f5eb8d5533a071c26","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"tsx src/cli/index.ts","review":"tsx src/cli/index.ts pr","prepare":"npm run build"},"_npmUser":{"name":"elliottlawson","email":"elliott.lawson@outlook.com"},"repository":{"url":"git+https://github.com/elliottlawson/open-review.git","type":"git"},"_npmVersion":"11.12.1","description":"AI-powered PR code review tool - automated code reviews using Claude or GPT","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ai":"^6.0.162","zod":"^4.3.6","yaml":"^2.8.3","dotenv":"^17.4.2","@linear/sdk":"^81.0.0","@mastra/core":"^1.25.0","@octokit/rest":"^22.0.1","@ai-sdk/openai":"^3.0.53","@mastra/memory":"^1.15.1","@ai-sdk/anthropic":"^3.0.69"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^6.0.2","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/open-review_0.1.1_1776563746454_0.1577321859540688","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@elliottlawson/open-review","version":"0.1.2","keywords":["code-review","ai","llm","github","pull-request","automation","claude","gpt","anthropic","openai"],"author":{"name":"Elliott Lawson"},"license":"MIT","_id":"@elliottlawson/open-review@0.1.2","maintainers":[{"name":"elliottlawson","email":"elliott.lawson@outlook.com"}],"homepage":"https://github.com/elliottlawson/open-review#readme","bugs":{"url":"https://github.com/elliottlawson/open-review/issues"},"bin":{"open-review":"dist/cli/index.js"},"dist":{"shasum":"bd4d863da2342133f7bad484a2d82cddc2dacd46","tarball":"https://registry.npmjs.org/@elliottlawson/open-review/-/open-review-0.1.2.tgz","fileCount":56,"integrity":"sha512-2UAOZTopV0kUr5cxs5DT8rup/Snn7yR9uWLNYSgWbajzDn1mZY/q2giKLoGSpZRraZfwrnIj/UOp1g4xxpLmaQ==","signatures":[{"sig":"MEQCIDKRFUJhasNAaHZ0A4yZ8eJ6IhT/K/wcnGQUWJKWSFcrAiBEG0p7f2WtQ0soi85g980cbkJ5LiYYCLpl82FCpvfCXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216014},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"963805aed4d2d96869bdfb175ae955e99c8c55e1","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elliottlawson","email":"elliott.lawson@outlook.com"},"repository":{"url":"git+https://github.com/elliottlawson/open-review.git","type":"git"},"_npmVersion":"11.12.1","description":"AI-powered PR code review tool - automated code reviews using Claude or GPT","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ai":"^6.0.162","zod":"^4.3.6","yaml":"^2.8.3","dotenv":"^17.4.2","@linear/sdk":"^81.0.0","@mastra/core":"^1.25.0","@octokit/rest":"^22.0.1","@ai-sdk/openai":"^3.0.53","@mastra/memory":"^1.15.1","@ai-sdk/anthropic":"^3.0.69"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^6.0.2","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/open-review_0.1.2_1777926594984_0.04048723340517446","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@elliottlawson/open-review","version":"0.1.3","description":"AI-powered PR code review tool - automated code reviews using Claude or GPT","main":"dist/index.js","type":"module","bin":{"open-review":"dist/cli/index.js"},"scripts":{"build":"tsc","prepare":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["code-review","ai","llm","github","pull-request","automation","claude","gpt","anthropic","openai"],"author":{"name":"Elliott Lawson"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/elliottlawson/open-review.git"},"bugs":{"url":"https://github.com/elliottlawson/open-review/issues"},"homepage":"https://github.com/elliottlawson/open-review#readme","engines":{"node":">=18.0.0"},"dependencies":{"@ai-sdk/anthropic":"^3.0.69","@ai-sdk/openai":"^3.0.53","@linear/sdk":"^81.0.0","@mastra/core":"^1.25.0","@mastra/memory":"^1.15.1","@octokit/rest":"^22.0.1","ai":"^6.0.162","dotenv":"^17.4.2","yaml":"^2.8.3","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.6.0","tsx":"^4.21.0","typescript":"^6.0.2"},"gitHead":"8a4e0118af79e94490f7163d5345171b0f58ccd0","_id":"@elliottlawson/open-review@0.1.3","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-KZsiG9QZVg2Iq6BY+mBWnhkEQZOGn4uYkK4Jw1OiyyGkdcr8y80dp3AIT10fD7JEeKgoSJG2h3w5F/Bi3xjc/w==","shasum":"4939bf7a27b76011dfe188cce7ad0dfb94b72612","tarball":"https://registry.npmjs.org/@elliottlawson/open-review/-/open-review-0.1.3.tgz","fileCount":63,"unpackedSize":227959,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBToslJiA0ywS2BuT+8B9GuwlXln86kME3eKaXwWnG+VAiEAhCrTB0jp/Ut1SzUfVh074zR+yVKnTEOkAMmgJb90IKU="}]},"_npmUser":{"name":"elliottlawson","email":"elliott.lawson@outlook.com"},"directories":{},"maintainers":[{"name":"elliottlawson","email":"elliott.lawson@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/open-review_0.1.3_1777929654271_0.29390439685500436"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-18T18:46:12.652Z","modified":"2026-05-04T21:20:54.578Z","0.1.0":"2026-04-18T18:46:12.954Z","0.1.1":"2026-04-19T01:55:46.633Z","0.1.2":"2026-05-04T20:29:55.139Z","0.1.3":"2026-05-04T21:20:54.447Z"},"bugs":{"url":"https://github.com/elliottlawson/open-review/issues"},"author":{"name":"Elliott Lawson"},"license":"MIT","homepage":"https://github.com/elliottlawson/open-review#readme","keywords":["code-review","ai","llm","github","pull-request","automation","claude","gpt","anthropic","openai"],"repository":{"type":"git","url":"git+https://github.com/elliottlawson/open-review.git"},"description":"AI-powered PR code review tool - automated code reviews using Claude or GPT","maintainers":[{"name":"elliottlawson","email":"elliott.lawson@outlook.com"}],"readme":"# Open Review\n\nA battle-tested methodology for AI-assisted code review, delivered as a harness, skills, and presets.\n\nOpen Review is not just a code review tool. It provides a structured reasoning process that guides AI agents to produce consistent, high-quality reviews. The quality depends on the model, context, instructions, and codebase — we provide the structure.\n\n## Three Modes of Operation\n\n| Mode | Context | What We Deliver |\n|---|---|---|\n| **CI/CD** | No agent present | Harness runs automated reviews via GitHub Action |\n| **Local CLI** | Developer wants quick check | Harness script for terminal use |\n| **Existing Agent** | Developer uses Cursor/Claude Code/Open Code | Methodology as agent instructions (skill) |\n\n## Quick Start\n\n### Zero Config\n\n```bash\nnpm install -g open-review\nopen-review review --diff main\n```\n\nWorks immediately with built-in methodology, auto-detected presets, and default settings.\n\n### With Init Wizard\n\n```bash\ncd your-project\nopen-review init\n```\n\nThis creates:\n- `.open-review/config.yml` — Configuration file\n- `.open-review/presets/` — Framework-specific presets (if detected)\n- Agent skill files (`.cursorrules`, `CLAUDE.md`, `AGENTS.md`)\n- `.github/workflows/open-review.yml` — GitHub Action workflow\n\n### Set API Key\n\n```bash\nexport OPEN_REVIEW_API_KEY=your_key_here\n```\n\n## Configuration\n\n`.open-review/config.yml`:\n\n```yaml\nversion: \"1.0\"\n\nreview:\n  methodology: default      # 'default' (built-in) or path to custom file\n  presets: auto             # 'auto' (detect) or [laravel, react]\n  conventions: auto         # 'auto' (discover), path, or inline text\n\n# LLM Settings (optional)\nllm:\n  provider: anthropic\n  model: claude-sonnet-4-20250514\n\n# Output Settings (optional)\noutput:\n  format: human\n  timezone: America/New_York\n```\n\n### Conventions\n\nThe `conventions` field supports three values:\n\n```yaml\n# Auto-discover from codebase\nconventions: auto\n\n# Path to conventions file\nconventions: ./docs/standards.md\n\n# Inline text\nconventions: \"We use HasRealm for tenancy. Controllers are CRUD-only.\"\n```\n\n## CLI Commands\n\n### `open-review init`\n\nInteractive wizard to set up Open Review in your project.\n\n### `open-review publish`\n\nCopy built-in methodology files to `.open-review/methodology/` for customization.\n\n```bash\nopen-review publish\n```\n\n### `open-review review`\n\nRun a code review.\n\n```bash\n# Review changes against main\nopen-review review --diff main\n\n# Review staged changes\nopen-review review --diff staged\n\n# JSON output for agents\nopen-review review --diff main --json\n\n# Ephemeral focus\nopen-review review --diff main --prompt \"Focus on authentication\"\n```\n\n## Agent Skills\n\nOpen Review generates thin skill files that point to your config:\n\n- `.cursorrules` — For Cursor\n- `CLAUDE.md` — For Claude Code\n- `AGENTS.md` — For Open Code\n- `.ai/instructions.md` — Generic\n\nSkills are identical across projects. The agent reads the skill, reads the config, and executes the review.\n\n## Presets\n\nFramework-specific review guides that add awareness at step 3 of the methodology.\n\nBuilt-in presets: Laravel, React, Next.js, Vue.\n\n```bash\n# Auto-detected during init\nopen-review init\n\n# Or specify in config\nreview:\n  presets: [laravel, react]\n```\n\nPresets are copied to `.open-review/presets/` where agents can read them.\n\n## GitHub Action\n\nFor automated PR reviews:\n\n```yaml\nname: Open Review\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n\njobs:\n  review:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: elliottlawson/open-review-action@v1\n        with:\n          api_key: ${{ secrets.OPEN_REVIEW_API_KEY }}\n```\n\n## Architecture\n\n```\nopen-review/\n├── methodology/              # Core reasoning process (source of truth)\n│   ├── core.md\n│   ├── output-discipline.md\n│   └── communication-style.md\n│\n├── skills/                   # Agent-specific instruction files\n│   ├── cursor.md\n│   ├── claude-code.md\n│   ├── open-code.md\n│   └── generic.md\n│\n├── presets/                  # Framework-specific review guides\n│   ├── laravel.md\n│   ├── react.md\n│   ├── nextjs.md\n│   └── vue.md\n│\n├── src/                      # The harness (TypeScript implementation)\n│   ├── config/\n│   ├── core/\n│   ├── cli/\n│   └── output/\n│\n└── templates/                # Config and workflow templates\n    ├── config.yml\n    └── workflow.yml\n```\n\n## Environment Variables\n\n- `OPEN_REVIEW_API_KEY` — API key for the configured LLM provider\n\n## License\n\nMIT\n","readmeFilename":"README.md"}