Contributing Workflow
How to go from "I want to help" to "my code is merged."
Before You Start
- Check existing issues. Someone may already be working on it.
- Open an issue first for anything non-trivial. Discuss before coding.
- Small PRs are better. One feature or fix per PR.
The Process
1. Fork the Repository
Go to github.com/sigilweaver/sigilweaver and click Fork in the top-right corner. This creates your own copy of the repository under your GitHub account.
2. Clone Your Fork
git clone https://github.com/YOUR_USERNAME/sigilweaver.git
cd sigilweaver
Optionally, add the upstream remote so you can pull updates:
git remote add upstream https://github.com/sigilweaver/sigilweaver.git
3. Create a Branch
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-number-description
Branch naming convention:
feature/for new functionalityfix/for bug fixesdocs/for documentationrefactor/for code cleanup
4. Make Your Changes
- Follow the code style guide
- Write tests for new functionality
- Update documentation if needed
5. Test Locally
# Run all tests
python ./scripts/test.py
# Or test individually
cd server && uv run pytest
cd studio && npm test
Don't submit a PR with failing tests. If tests fail for unrelated reasons, note that in the PR.
6. Commit
Write meaningful commit messages:
# Good
Add Formula tool validation for invalid expressions
# Bad
fix stuff
For multi-commit PRs, each commit should be independently meaningful. Squash WIP commits before submitting.
7. Push and Open PR
git push origin feature/your-feature-name
Then open a PR on GitHub. Fill out the template:
- What does this change?
- Why is it needed?
- How was it tested?
8. Code Review
I'll review PRs as time allows. Expect:
- Questions about design choices
- Suggestions for improvement
- Requests for tests or documentation
Don't take feedback personally. The goal is a better codebase, not criticism of you.
9. Merge
Once approved, I'll merge. Typically squash-merge to keep history clean.
Your PR Doesn't Have to Be Perfect
I want to be clear about this: I don't expect polished, merge-ready PRs.
If you put in genuine effort and I can understand what you're trying to accomplish, that's enough. If something isn't quite right, I'm happy to take it the rest of the way. I'll explain what I changed and why, so you learn for next time.
What matters is:
- You tried
- The intent is clear
- The general direction makes sense
Don't let perfectionism stop you from contributing. Submit what you have.
What Makes a Good PR
Good PRs:
- Solve one problem
- Include tests (when reasonable)
- Have clear commit messages
- Follow existing patterns
- Update docs if user-facing
Problematic PRs:
- Mix unrelated changes
- Introduce new patterns without discussion
- Break existing tests
Types of Contributions
Bug Fixes
- Open an issue describing the bug
- Reference the issue in your PR
- Include a test that would have caught the bug
New Tools
Tools are the most common contribution. See Adding Tools for the full guide.
UI Improvements
Coordinate first. UI changes can conflict with ongoing work. Open an issue or discussion.
Documentation
Always welcome. Fix typos, clarify confusing sections, add examples.
Refactoring
Discuss first. Refactoring for its own sake can churn code without adding value. But targeted cleanup with clear benefits is welcome.
What I Won't Accept
- Features that complicate the core without clear benefit
- Breaking changes to the workflow format without migration path
- Dependencies with problematic licenses
- Stylistic changes that just move code around
Questions?
Open an issue or discussion. I prefer public channels so others can benefit from the answers.
Next: Adding Tools for the most common contribution path.