Contributing
How to contribute to the project
Thank you for your interest in contributing to Runners! This guide will help you get started.
Development Setup
Prerequisites
- Node.js 18+ (or 20+, 22+, 24+)
- pnpm 10.20.0+
- Rust (for schema-extractor and swc-plugin)
Clone and Install
Build
Run Tests
Project Structure
Code Style
We use Biome for formatting and linting:
TypeScript
- Use TypeScript strict mode
- Prefer explicit types over
any - Use Zod for runtime validation
- Export types from
types.tsfiles
Naming Conventions
- Files:
kebab-case.ts - Functions:
camelCase - Types:
PascalCase - Constants:
UPPER_SNAKE_CASE
Adding Features
1. Create a Branch
2. Make Changes
- Write code following project conventions
- Add tests for new functionality
- Update documentation
- Update types if needed
3. Test Your Changes
4. Commit Changes
We use conventional commits:
5. Create Pull Request
- Write a clear description
- Reference related issues
- Include screenshots if UI changes
- Ensure CI passes
Writing Tests
Unit Tests
Integration Tests
Documentation
Updating Docs
- Edit files in
docs/ - Use clear, concise language
- Include code examples
- Update table of contents if needed
Adding Examples
- Create example in
examples/ - Add README with setup instructions
- Ensure example works end-to-end
- Link from main README
Package Development
Adding a New Package
- Create directory in
packages/ - Add
package.jsonwith proper name - Add
tsconfig.jsonextending shared config - Add
rslib.config.tsfor build - Export from main package if public
Updating Dependencies
Rust Packages
schema-extractor
Located in packages/runners/schema-extractor/:
swc-plugin-runners
Located in packages/runners/swc-plugin-runners/:
Debugging
Enable Debug Logging
VS Code Debugging
Create .vscode/launch.json:
Release Process
- Update version in
packages/export/package.json - Update CHANGELOG.md
- Create release commit
- Tag release
- Publish to npm
Getting Help
- Issues: Open an issue on GitHub
- Discussions: Use GitHub Discussions
- Discord: Join our Discord server (if available)
Code of Conduct
- Be respectful and inclusive
- Welcome newcomers
- Focus on constructive feedback
- Follow project conventions
License
By contributing, you agree that your contributions will be licensed under the MIT License.
See Also
- API Reference - API documentation
- Getting Started - Quick start guide
- Writing Runners - Runner authoring guide