Thank you for your interest in contributing to mystuff-cli! This document provides guidelines for contributing to the project.
-
Fork and clone the repository:
git clone https://github.com/your-username/mystuff-cli.git cd mystuff-cli -
Set up the development environment:
# Install in development mode pip install -e ".[dev]" # Or using uv uv pip install -e ".[dev]"
-
Run tests to ensure everything works:
./run_tests.sh
-
Create a new branch:
git checkout -b feature/your-feature-name
-
Make your changes:
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
-
Run tests and checks:
# Run all tests ./run_tests.sh # Format code black mystuff/ tests/ # Check linting flake8 mystuff/ tests/ # Type checking mypy mystuff/
-
Commit your changes:
git add . git commit -m "feat: add your feature description"
-
Push and create a pull request:
git push origin feature/your-feature-name
We follow conventional commits format:
feat:for new featuresfix:for bug fixesdocs:for documentation changestest:for test additions/changesrefactor:for code refactoringchore:for maintenance tasks
- Python: Follow PEP 8 standards
- Line length: 88 characters (Black default)
- Imports: Use absolute imports, sort with isort
- Type hints: Use type hints for all functions
- Docstrings: Use Google-style docstrings
tests/test_init_simple.py: Tests for init functionalitytests/test_link.py: Tests for link managementtests/test_meeting.py: Tests for meeting notestests/test_fzf_integration.py: Tests for fzf integration
- Write tests for all new functionality
- Use descriptive test names
- Include edge cases and error conditions
- Mock external dependencies (like fzf)
Tests use temporary directories and environment variables:
MYSTUFF_HOME: Points to test directory- Temporary files are cleaned up automatically
- Update
README.mdfor user-facing changes - Update
PLAN.mdfor roadmap changes - Add docstrings to all functions and classes
- Include examples in docstrings
- Ensure tests pass: All tests must pass before merging
- Update documentation: Include relevant documentation updates
- Add tests: New functionality must include tests
- Follow code style: Code must pass linting and formatting checks
- Descriptive PR: Include clear description of changes
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Tests pass locally
- [ ] Added tests for new functionality
- [ ] Updated documentation
## Checklist
- [ ] Code follows project style
- [ ] Self-review completed
- [ ] Comments added for complex code
- [ ] Documentation updatedReleases are automated through GitHub Actions:
- Version bump: Update version in
pyproject.toml - Create tag:
git tag v0.x.y && git push origin v0.x.y - Automated release: GitHub Actions will:
- Run all tests
- Create GitHub release
- Publish to PyPI (if configured)
- CLI:
mystuff/cli.py- Main CLI entry point - Commands:
mystuff/commands/- Individual command implementations - Tests:
tests/- Test suite
- Simple file formats: JSONL for links, Markdown+YAML for meetings
- Environment-aware: Respects
$MYSTUFF_HOME,$EDITOR - Optional dependencies: Core functionality works without fzf
- Comprehensive testing: Unit and integration tests
- Issues: Report bugs or request features via GitHub Issues
- Discussions: Use GitHub Discussions for questions
- Code Review: Maintainers will review PRs promptly
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and grow
- Follow the project's technical standards
Thank you for contributing to mystuff-cli! 🎉