Thank you for your interest in the ScriptMate project! We welcome all forms of contributions.
If you find a bug or have a feature suggestion, please:
- Check Issues to ensure the issue hasn't been reported yet
- Create a new Issue including:
- Clear title and description
- Steps to reproduce (if it's a bug)
- Expected behavior
- Actual behavior
- System environment information
-
Fork the Project
git clone https://github.com/your-username/scriptmate.git cd scriptmate -
Set Up Development Environment
# Install uv (if not already installed) curl -LsSf https://astral.sh/uv/install.sh | sh # Install dependencies uv sync --dev # Set up pre-commit hooks uv run pre-commit install
-
Create Feature Branch
git checkout -b feature/your-feature-name
-
Develop and Test
# Run tests make test # Code linting make lint # Code formatting make format
-
Commit Changes
git add . git commit -m "feat: add your feature description"
-
Push and Create Pull Request
git push origin feature/your-feature-name
- Use Black for code formatting
- Use Flake8 for code linting
- Use MyPy for type checking
- Follow PEP 8 coding standards
Use Conventional Commits format:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types include:
feat: New featurefix: Bug fixdocs: Documentation updatestyle: Code formattingrefactor: Code refactoringtest: Test relatedchore: Build process or auxiliary tool changes
Example:
feat(cli): add dry-run option for command generation
Add --dry-run flag to allow users to see generated commands
without executing them.
Closes #123
- Write tests for new features
- Ensure all tests pass
- Maintain test coverage above 90%
# Run tests
uv run pytest
# View coverage
uv run pytest --cov=src/scriptmate --cov-report=html- Update relevant documentation
- Add usage examples for new features
- Ensure README.md stays up to date
ScriptMate/
├── src/scriptmate/ # Main source code
│ ├── cli.py # Command-line interface
│ ├── config.py # Configuration management
│ ├── llm_client.py # Large language model client
│ ├── executor.py # Command executor
│ └── utils.py # Utility functions
├── tests/ # Test files
├── examples/ # Usage examples
├── docs/ # Documentation
└── pyproject.toml # Project configuration
make help # Show help
make install # Install dependencies
make dev # Install development dependencies
make test # Run tests
make lint # Code linting
make format # Code formatting
make build # Build package
make clean # Clean build files# Run in development mode
uv run python -m scriptmate --help
# Debug specific functionality
uv run python -c "from scriptmate.config import config_manager; print(config_manager.load_config())"- Update version number (
src/scriptmate/__init__.py) - Update CHANGELOG.md
- Create Git tag
- Build and publish package
# Build
make build
# Publish to test PyPI
make publish-test
# Publish to PyPI
make publish- Discussions: GitHub Discussions
- Issues: GitHub Issues
- Email: scriptmate@example.com
By contributing code, you agree that your contributions will be licensed under the MIT License.
Thanks to all contributors for their efforts! Your contributions make ScriptMate better.