Welcome Contributors!
Contributions are always welcome! This guide will help you understand the contribution process and best practices for the Skiff project.Code of Conduct
Skiff contributors adhere to the Contributor Covenant as our Code of Conduct. Please read and follow the full text available in CODE_OF_CONDUCT.md.Getting Started
Finding an Issue
Browse Good First Issues
Start with issues labeled good first issue. These are:
- Small in scope
- Have clear solutions in the description
- Perfect for first-time contributors
Explore Dev Ready Issues
Once familiar with the codebase, look at dev ready issues:
- Slightly larger in scope
- Well-defined solutions
- Ready for implementation
Issues Without Clear Solutions
Issues that lack a clear solution or aren’t on the roadmap will undergo a longer development and review process. Consider discussing your approach in the issue comments before starting.Opening a Pull Request
Before You Start
Always create an issue first before opening a Pull Request. Keep PRs small and associated with only a single issue for faster review.
Step-by-Step Process
Fork the Repository
Fork the repository to your GitHub account:Fork skiff-apps
Create Feature Branch
Create a new branch with the issue number:
Include the issue number in your branch name for easy tracking.
Open Pull Request
Go to the repository and create a Pull Request from your branch.
Pull Request Structure
Branch Guidelines
- All branches should target
main - Include the reference issue number in the branch name
- Use descriptive names:
feature/issue-123-add-dark-mode
PR Title Format
Use this format for PR titles:[#1045] [Button] Add force theme support[#892] [ComposePanel] Fix attachment upload error[#1234] [Auth] Implement two-factor authentication
PR Description
Your PR description should include:- Summary: Brief overview of the changes
- How to Review: Guide reviewers on code structure
- Testing: How you tested the changes
- Screenshots: For UI changes
- Related Issues: Link to the issue being addressed
Quality Requirements
- Code Quality
- Documentation
- Testing
- Git
- All code must be linted:
yarn lint - All code must be formatted:
yarn prettier - All code must be type-safe:
yarn typescript - Self-review and comment on your own code
Code Style
Automated Formatting
The project uses Prettier for code formatting and ESLint for code quality.Editor Setup
VS Code settings (.vscode/settings.json):
Style Guidelines
- Use TypeScript for all new code
- Follow functional programming patterns where possible
- Prefer React hooks over class components
- Use meaningful variable names
- Add comments for complex logic
- Keep functions small and focused
Review Process
Once you open a PR:- Automated Checks: CI will run linting, type checking, and tests
- Code Review: Core team members will review your code
- Feedback: Address any requested changes
- Approval: Once approved, your PR will be merged
The core team will promptly review your Pull Request and either merge it or request changes.
Communication
Where to Ask Questions
- Issue Comments: For questions about specific issues
- PR Comments: For questions about your implementation
- GitHub Discussions: For general questions about the project
Response Times
- Issue Claims: Immediate (comment to claim)
- PR Reviews: Usually within 3-5 business days
- Questions: Best-effort response within 1-2 business days
Common Scenarios
My PR has merge conflicts
My PR has merge conflicts
Sync your branch with the latest
main:CI checks are failing
CI checks are failing
Run the checks locally:Fix any issues and push again.
I need to update my PR
I need to update my PR
Simply push more commits to your branch:The PR will update automatically.
Can I work on multiple issues?
Can I work on multiple issues?
Yes! Create separate branches for each issue:
Recognition
Contributors are recognized in:- GitHub’s contributor graph
- Release notes (for significant contributions)
- The community (through issue/PR interactions)
License
By contributing to Skiff, you agree that your contributions will be licensed under the same license as the project. See LICENSE for details.Additional Resources
Development Setup
Set up your local environment
Monorepo Structure
Understand the codebase organization
Testing Guide
Learn about testing practices
Code of Conduct
Read the full Code of Conduct
Thank you for contributing to Skiff! Your efforts help make privacy-first software accessible to everyone.