Thanks for taking the time to contribute!
Before creating bug reports, please check the existing issues as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title for the issue
- Describe the exact steps to reproduce the problem with as much detail as possible
- Provide specific examples to demonstrate the steps (include code snippets, machine configuration, etc.)
- Describe the behavior you observed and explain why it's a problem
- Explain the expected behavior and why you expected it
Before requesting a new feature:
- Check the README - Your use case might already be supported
- Browse existing issues - Someone might have already requested it
- Consider if it fits the library's scope - This is an educational library focused on core state machine concepts
When opening a feature request:
- Use a clear and descriptive title
- Provide a detailed description of the proposed feature
- Explain the use case and why this feature would be useful
- Include code examples of how you envision using the feature
Before submitting a new pull request, open an issue first to discuss it.
- Fork and clone the repository
- Install dependencies:
pnpm install
- Run tests in watch mode:
pnpm test:watch
- Branch naming: Use descriptive branch names (e.g.,
fix/guard-evaluation,feat/reenter-support) - Type safety: Ensure all TypeScript types are properly defined
- Tests: Add tests for new features or bug fixes
- Documentation: Update the README if you're adding new features or changing APIs
Run these commands to ensure your code meets our standards:
# Run tests
pnpm test
# Build the library
pnpm buildThis library prioritizes:
- Clear, well-documented code
- Simple, focused features
- Educational value over advanced optimizations
- Good test coverage
If you have questions about contributing, feel free to open an issue.
Thank you for contributing!