Thank you for your interest in contributing to Open Code Review! We welcome contributions from the community and are excited to have you on board.
- Fork the repository and clone your fork
- Install dependencies:
pnpm install - Run the CLI locally:
nx run cli:initornx run cli:progress
We practice what we preach! Before submitting a PR, use OCR to review your changes:
# Stage your changes
git add .
# Run OCR review on your changes
/ocr-review
# Or use the CLI
npx @open-code-review/cli progressThis helps you:
- Catch issues before review
- Ensure your changes align with project standards
- Get multi-perspective feedback (architecture, quality, security, testing)
- Check existing issues first
- For new features, open a discussion before coding
- For bugs, include reproduction steps
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-description- Follow the existing code style (TypeScript strict, ESM)
- Update documentation if needed
- Add tests for new functionality
# Review your staged changes
git add .
/ocr-review
# Address any findings before submitting- Use a clear, descriptive title
- Reference related issues
- Include a summary of changes
- Attach your OCR review findings (optional but appreciated)
open-code-review/
├── packages/
│ ├── agents/ # Skills, commands, reviewer personas
│ │ ├── commands/ # Slash command definitions
│ │ └── skills/ocr/ # Core OCR skill and references
│ └── cli/ # TypeScript CLI
│ └── src/
│ ├── commands/ # init, update, progress
│ └── lib/ # Shared utilities
├── openspec/ # Project specifications
│ ├── changes/ # Active change proposals
│ └── config.yaml # Project context
└── .ocr/ # Installed OCR (gitignored sessions)
# Type check
pnpm exec tsc --noEmit
# Run tests (when available)
pnpm test
# Build CLI
nx run cli:build- TypeScript: Strict mode, ESM only
- Formatting: Prettier (if configured)
- Naming: camelCase for variables/functions, PascalCase for types
- Comments: Only where they add value (avoid obvious comments)
- Documentation improvements
- Additional reviewer personas
- CLI UX enhancements
- New reviewer types (e.g., Performance, Accessibility)
- IDE integrations
- GitHub Actions integration
- Slack/Discord notifications
- Check the issue tracker for
buglabels
When adding features:
- Update relevant
.mdfiles inpackages/agents/ - Keep
.ocr/andpackages/agents/in sync - Update
README.mdif user-facing behavior changes
OCR uses Nx Release to coordinate npm publishing and GitHub releases.
# 1. Ensure you're on main with latest changes
git checkout main && git pull
# 2. Run the release (dry-run first)
pnpm nx release --dry-run
# 3. If everything looks good, run the actual release
pnpm nx release
# 4. Push the release commit and tags
git push --follow-tagsThe nx release command:
- Bumps versions based on conventional commits (feat → minor, fix → patch)
- Syncs derived manifests — the agents package uses custom Nx VersionActions to automatically update
plugin.jsonandSKILL.mdfrontmatter with the new version - Updates CHANGELOGs in each package and root
- Creates a git commit with message
chore(release): {version} - Tags the release (e.g.,
v1.0.4) - Publishes to npm (
@open-code-review/cli,@open-code-review/agents) - Creates a GitHub Release with changelog notes
- npm: Logged in with publish access (
npm whoami) - GitHub:
GITHUB_TOKENenv var orghCLI authenticated - Clean working tree: No uncommitted changes
To release a specific version:
pnpm nx release --specifier=1.1.0Be respectful, inclusive, and constructive. We're all here to build something useful together.
- Open a GitHub Discussion
- Check existing issues and docs first
Thank you for contributing! Every contribution, no matter how small, helps make OCR better for everyone.