Pull Request Workflow
How to submit changes to Spry
How to submit changes to Spry.
Before You Start
Planning ahead saves time and increases the chance of your PR being accepted.
- Check existing issues - Your idea may already be discussed
- Open an issue first - For significant changes, discuss before coding
- Understand the codebase - Read relevant documentation
Workflow
Fork and Clone
# Fork on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/spry.git
cd spry
# Add upstream remote
git remote add upstream https://github.com/programmablemd/spry.gitCreate a Branch
# Sync with upstream
git fetch upstream
git checkout main
git merge upstream/main
# Create feature branch
git checkout -b feature/my-feature
# Or for fixes:
git checkout -b fix/issue-123Branch naming conventions:
feature/description- New featuresfix/issue-number- Bug fixesdocs/description- Documentationrefactor/description- Refactoring
Make Changes
# Make your changes
# Write tests
# Update documentation if needed
# Format and lint
deno task fmt
deno task lint
# Run tests
deno task testCommit
Follow conventional commits:
git add .
git commit -m "feat(axiom): add support for nested dependencies"Commit message format:
type(scope): subject
body (optional)
Fixes #123 (optional)Types: feat, fix, docs, refactor, test, chore
Push
git push origin feature/my-featureCreate Pull Request
- Go to your fork on GitHub
- Click "Compare & pull request"
- Fill in the template
- Submit for review
Pull Request Template
## Description
Brief description of the changes.
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation
- [ ] Refactoring
- [ ] Other (describe)
## How Has This Been Tested?
Describe testing approach.
## Checklist
- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my code
- [ ] I have added tests that prove my fix/feature works
- [ ] New and existing tests pass locally
- [ ] I have updated relevant documentationReview Process
What Reviewers Look For
Does it work as intended? Does it handle edge cases?
Are changes adequately tested? Do tests cover the expected behavior?
Does the code follow the project's style guidelines and conventions?
Is documentation updated to reflect the changes?
Is this the simplest solution that solves the problem?
Responding to Feedback
Constructive collaboration leads to better code quality.
- Be responsive to comments
- Ask for clarification if needed
- Push fixes as new commits
- Don't rebase during review
After Approval
Maintainer will merge your PR
Delete your branch and sync your fork:
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
git branch -d feature/my-featureTypes of Contributions
- Reference the issue:
Fixes #123 - Add regression test
- Keep changes minimal
- Test the fix thoroughly
- Discuss in an issue first
- Start with design/API
- Implement incrementally
- Add comprehensive tests
- Update documentation
- Check for accuracy
- Follow existing style
- Include examples
- Test code examples
- Explain the motivation
- Don't change behavior
- Add tests if missing
- Keep commits focused
Tips for Success
Do ✅
- Keep PRs focused and small
- Write clear commit messages
- Respond to feedback promptly
- Test thoroughly
- Update docs
Don't ❌
- Mix multiple changes in one PR
- Force push during review
- Ignore CI failures
- Add unrelated changes
Small, focused PRs are easier to review and more likely to be merged quickly.
Getting Help
- Ask in the PR comments
- Reference documentation
- Check similar past PRs
CI Checks
All automated checks must pass before your PR can be merged.
PRs run automated checks:
- Formatting -
deno fmt --check - Linting -
deno lint - Type Check -
deno task check - Tests -
deno task test
All checks must pass before merge.
After Merge
🎉 Your contribution is now part of Spry! Thank you.
You'll be:
- Listed in contributors
- Credited in release notes (for features/fixes)
How is this guide?
Last updated on