First of all, thank you for considering contributing to this project. We welcome contributions of all kinds: bug reports, feature requests, documentation improvements, and code contributions.
Please make sure to:
- Read the README carefully
- Check existing issues to avoid duplicates
- Follow the Code of Conduct
- Review our Governance model
As a user, you must follow our issue template bug_report.yaml when reporting bugs. This helps us understand and reproduce the issue more effectively.
When reporting a bug, please include:
- A clear and descriptive title
- A detailed description of the issue
- Steps to reproduce the bug
- Expected and actual behavior
- Any relevant screenshots or logs if needed
Feature requests should follow our issue template feature_request.yaml and include:
- Clear explanation of the problem
- Proposed solution
- Alternatives considered (if any)
- Example use cases
Please keep the scope aligned with the project's goals.
To contribute to stepcode, please follow this general workflow to ensure a smooth review process.
Before starting, ensure you have followed the installation instructions in the README.md. This includes setting up Python with uv and installing the necessary Node.js dependencies.
If you use Nix, you can simply run nix develop or use direnv to automatically enter the development shell with all tools pre-installed.
Always create a new branch for your work. Use a descriptive name that follows our naming conventions:
feat/your-feature-namefix/your-bug-fixdocs/your-doc-change
git checkout -b feat/short-descriptionWhile working on your changes, make sure to:
- Test the interpreter: If you modify the core logic, run the tests in the
interpreterdirectory.cd interpreter && npm test
- Build the book: Verify that the site generator still works as expected.
uv run src/main.py content
Before committing, you must ensure your code follows the project's style guidelines. We use eslint and prettier for JavaScript, and ruff for Python.
# JavaScript linting and formatting
npm run lint
npm run format
# Python linting and formatting
ruff check --fix .
ruff format .Once your changes are ready and verified:
- Push your branch to your fork.
- Open a Pull Request against the
mainbranch of the original repository. - Fill out the PR template completely so we understand the context of your changes.
We follow Conventional Commits.
Allowed types:
feat:New featurefix:Bug fixrefactor:Code change that neither fixes a bug nor adds a featuredocs:Documentation only changestest:Adding or updating testschore:Maintenance tasksstyle:Style changes in the code
Clear and meaningful commit messages are required. You may be asked to rebase unclear commits.
Before submitting a pull request:
- Ensure the project builds successfully
- Run all tests
- Keep PRs focused and small
- Update documentation if necessary
PR descriptions should clearly explain:
- What changed
- Why it changed
- Any breaking changes
Large PRs without explanation may be rejected.
All new features should include tests when possible.
- Keep functions small and focused
- Prefer clarity over cleverness
- Avoid unnecessary abstractions
- Use descriptive variable and function names
- Respect the project’s formatting and lint rules
Before commiting make sure to execute the following commands.
Javascript:
# inspect errors
npm run lint
# format code
npm run formatPython:
# inspect errors
ruff check .
# inspect and fix errors
ruff check --fix .
# format code
ruff format .Breaking changes must:
- Be clearly documented in the PR
- Include migration notes if necessary
- Follow Semantic Versioning
Your contributions help improve the project and make it more useful for everyone. We apreciate your time and effort.