We love your input! We want to make contributing to TaskTracker as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
We Use Github Flow
Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:
- Fork the repo and create your branch from
main. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Make sure your code lints.
- Issue that pull request!
In short, when you submit code changes, your submissions are understood to be under the same MIT License that covers the project. Feel free to contact the maintainers if that's a concern.
Report bugs using GitHub's issue tracker
We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
- Use 2 spaces for indentation rather than tabs
- You can try running
npm run lintfor style unification
By contributing, you agree that your contributions will be licensed under its MIT License.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/tasktracker.git cd tasktracker - Install dependencies:
npm install
- Run tests to ensure everything works:
npm test
- Node.js >= 12.0.0
- npm or yarn
# Install dependencies
npm install
# Run tests
npm test
# Run specific test suites
npm run test:journal
npm run test:prd
npm run test:context
# Lint code
npm run lint:check
npm run lint:fix
# Test CLI locally
node bin/tt --helpfeature/description- for new featuresfix/description- for bug fixesdocs/description- for documentation updatestest/description- for test improvements
Follow conventional commit format:
feat: add new journal commandfix: resolve CLI parsing issuedocs: update README with examplestest: add context generation tests
- Follow existing code style
- Use ESLint configuration provided
- Add JSDoc comments for new functions
- Keep functions focused and small
# All tests
npm test
# Specific test files
npm run test:journal
npm run test:prd
npm run test:context
# With coverage
npm run test:coverage- Add tests for new features
- Use descriptive test names
- Mock external dependencies
- Test both success and error cases
Example test structure:
describe('New Feature', () => {
beforeEach(() => {
// Setup
});
it('should handle valid input correctly', () => {
// Test implementation
});
it('should handle errors gracefully', () => {
// Error test
});
});- Add JSDoc comments for all public functions
- Include parameter types and descriptions
- Document return values and exceptions
- Update README.md for user-facing changes
- Add examples for new features
- Update CLI help text
- Create a feature branch from
main - Make your changes with tests
- Ensure all tests pass:
npm test - Lint your code:
npm run lint:check - Update documentation if needed
- Submit a pull request with:
- Clear description of changes
- Link to related issues
- Screenshots for UI changes
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
## Testing
- [ ] Tests pass locally
- [ ] New tests added for new functionality
- [ ] Manual testing completed
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No breaking changes (or clearly documented)Include:
- TaskTracker version
- Node.js version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Error messages/logs
Include:
- Use case description
- Proposed solution
- Alternative solutions considered
- Additional context
tasktracker/
├── bin/ # CLI entry points
├── lib/ # Core library code
│ ├── commands/ # Command implementations
│ ├── core/ # Core utilities
│ └── utils/ # Helper utilities
├── tests/ # Test files
├── docs/ # Documentation
└── README.md # Main documentation
- CLI Parser: Handles command-line argument parsing
- Command Registry: Manages available commands
- Journal System: Manages development journal entries
- Context Generation: Creates AI-friendly context
- PRD Management: Handles project requirements
- Check existing issues and documentation
- Ask questions in GitHub Discussions
- Join our community chat (if available)
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and grow
- Follow GitHub's community guidelines
By contributing to TaskTracker, you agree that your contributions will be licensed under the MIT License.
Contributors will be recognized in:
- CHANGELOG.md for their contributions
- GitHub contributors list
- Special mentions for significant contributions
Thank you for helping make TaskTracker better! 🎉