Thank you for your interest in contributing to Open-Inspect! This document provides guidelines for contributing to the project.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/open-inspect.git - Run the setup script:
bash .openinspect/setup.sh - Create a branch for your changes:
git checkout -b feature/your-feature-name
The quickest way to get a working environment:
bash .openinspect/setup.shThis handles npm dependencies, builds the shared package, configures git hooks (husky +
lint-staged), and optionally sets up a Python virtualenv for packages/modal-infra.
See docs/GETTING_STARTED.md for full deployment instructions. See docs/SETUP_GUIDE.md for local setup and day-to-day development paths.
For manual setup or individual steps:
# Install dependencies
npm install
# Build shared package
npm run build -w @open-inspect/shared
# Run type checking
npm run typecheck
# Run linting
npm run lint
# Run tests
npm test| Package | Description |
|---|---|
packages/control-plane |
Cloudflare Workers + Durable Objects |
packages/web |
Next.js web application |
packages/modal-infra |
Modal sandbox infrastructure |
packages/shared |
Shared types and utilities |
- Run
npm run lintbefore committing - Run
npm run typecheckto ensure type safety - Follow existing code patterns in the codebase
Use clear, descriptive commit messages:
feat: add new featurefix: resolve issue with Xdocs: update documentationrefactor: restructure module
- Ensure all tests pass:
npm test - Ensure linting passes:
npm run lint - Ensure type checking passes:
npm run typecheck - Update documentation if needed
- Provide a clear description of your changes
For SCM/provider changes, follow:
docs/adr/0001-single-provider-scm-boundaries.mddocs/provider-contribution-checklist.md
When reporting issues, please include:
- A clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Node version, etc.)
If you have questions, please open a GitHub issue with the "question" label.
By contributing, you agree that your contributions will be licensed under the MIT License.