For development environment setup, please refer to the Development section in the README.md.
- Fork the repository
- Make your changes, following the codebase's style
- Commit using conventional commit style:
"fix issue with X" - Push to your fork and open a Pull Request
We want minimal friction in the contribution process, so standalone improvements are absolutely welcome—no need to link to an issue first.
Before submitting your contribution, ensure the following checks pass:
# Run ESLint
npm run lint
# Check code formatting
npm run formatcheck
# Run type checking
npm run typecheck
# Run tests (requires Docker)
npm run testAll of these checks are run automatically in CI via GitHub Actions and must pass before your PR can be merged.
If you add a new feature, it's preferred (but not required) that you include a test that exercises that feature.
Integration tests live in tests/integration/ and are comprehensive of the MusicXML spec. Browse the existing test files to see if your use case is covered. If it's not, please add to the catch-all tests/integration/vexml.test.ts test suite.
Keep it simple:
- Brief description of what you changed and why
- Screenshot (or short video) of the achieved outcome
That's it! The review process and CI checks will handle the rest.
- GitHub Issues: Best place for specific problems or questions
- Pull Request Discussions: Feel free to open a PR early and start a discussion there