Spry LogoOpsfolio
Contributing and Support

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.

  1. Check existing issues - Your idea may already be discussed
  2. Open an issue first - For significant changes, discuss before coding
  3. 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.git

Create 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-123

Branch naming conventions:

  • feature/description - New features
  • fix/issue-number - Bug fixes
  • docs/description - Documentation
  • refactor/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 test

Commit

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-feature

Create Pull Request

  1. Go to your fork on GitHub
  2. Click "Compare & pull request"
  3. Fill in the template
  4. Submit for review

Pull Request Template

PR 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 documentation

Review 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-feature

Types of Contributions

  1. Reference the issue: Fixes #123
  2. Add regression test
  3. Keep changes minimal
  4. Test the fix thoroughly
  1. Discuss in an issue first
  2. Start with design/API
  3. Implement incrementally
  4. Add comprehensive tests
  5. Update documentation
  1. Check for accuracy
  2. Follow existing style
  3. Include examples
  4. Test code examples
  1. Explain the motivation
  2. Don't change behavior
  3. Add tests if missing
  4. 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:

  1. Formatting - deno fmt --check
  2. Linting - deno lint
  3. Type Check - deno task check
  4. 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

On this page