Thanks for your interest in contributing to gitlin! This guide will help you get started.
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes
- Write tests for new functionality
- Update documentation (see below)
- Commit your changes
- Push to your fork
- Open a Pull Request
- TypeScript: Use strict mode, avoid
anyunless necessary - Formatting: Run
pnpm formatbefore committing - Linting: Run
pnpm lintto check for issues - Testing: Add tests for new features (we use Vitest)
When you modify code, you MUST update the relevant documentation:
Update the README when you:
- Add new features or functionality
- Change how the bot behaves
- Modify the setup process
- Add new configuration options
- Change examples or use cases
- Add JSDoc comments for public functions
- Explain complex logic with inline comments
- Document why decisions were made, not just what the code does
- Update examples in README to reflect new features
- Keep examples realistic and useful
- Show best practices, not edge cases
- Document new configuration options in README
- Update
.github/gitlin.jsonexample if adding config - Explain what each option does and when to use it
# Install dependencies
pnpm install
# Build the project
pnpm build
# Run tests
pnpm test
# Lint code
pnpm lint
# Format code
pnpm formatTo test the full workflow:
- Run
pnpm run setupin a test repository - Create a test PR
- Comment
/create-issueswith sample tasks - Verify Linear issues are created correctly
Use conventional commits format:
<type>: <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesrefactor: Code refactoringtest: Adding testschore: Maintenance tasks
Examples:
feat: Add support for custom priority levelsfix: Handle empty PR descriptions gracefullydocs: Update README with assignee examples
Before submitting a PR, ensure:
- Code builds without errors (
pnpm build) - All tests pass (
pnpm test) - Code is formatted (
pnpm format) - No linting errors (
pnpm lint) - README.md is updated (if applicable)
- New features have tests
- Examples are updated (if behavior changed)
- Commit messages follow conventions
Open an issue or start a discussion on GitHub!