Contributing
Thank you for your interest in contributing to spectryn! This guide will help you get started.
Code of Conduct
Please read and follow our Code of Conduct.
Getting Started
Prerequisites
- Python 3.10 or higher
- Git
Development Setup
bash
# Clone the repository
git clone https://github.com/adriandarian/spectryn.git
cd spectryn
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode with dev dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit installRunning Tests
bash
# Run all tests
pytest
# Run with coverage
pytest --cov=src/spectryn
# Run specific test file
pytest tests/cli/test_cli.py
# Run with verbose output
pytest -vCode Quality
bash
# Format code
ruff format src/ tests/
# Lint
ruff check src/ tests/
# Type checking
mypy src/
# Run all checks
pre-commit run --all-filesMaking Changes
Workflow
- Fork the repository
- Create a branch for your changes:bash
git checkout -b feature/your-feature-name - Make your changes with clear, atomic commits
- Write tests for new functionality
- Run the test suite to ensure nothing is broken
- Submit a Pull Request
Commit Messages
Follow Conventional Commits:
feat: add support for Linear adapter
fix: handle empty description gracefully
docs: update configuration guide
test: add tests for backup functionality
refactor: simplify command execution flow
chore: update dependenciesPull Request Guidelines
- Title: Use conventional commit format
- Description: Explain what and why, not how
- Tests: Include tests for new functionality
- Documentation: Update docs for user-facing changes
- Changelog: Add entry to CHANGELOG.md for notable changes
Project Structure
spectryn/
├── src/spectryn/ # Source code
│ ├── core/ # Domain logic and ports
│ ├── adapters/ # Infrastructure implementations
│ ├── application/ # Use cases and orchestration
│ ├── cli/ # Command line interface
│ └── plugins/ # Extension system
├── tests/ # Test suite
├── docs/ # Documentation (original markdown)
├── website/ # VitePress documentation site
└── packaging/ # Distribution packagesAreas for Contribution
Good First Issues
Look for issues labeled good first issue.
Feature Requests
Check the Issues page for planned features and open discussions.
Documentation
- Fix typos or unclear explanations
- Add examples
- Translate to other languages
Testing
- Increase test coverage
- Add edge case tests
- Add integration tests
New Adapters
Want to add support for a new issue tracker? See the Plugin Guide.
Development Tips
Running Locally
bash
# Run spectryn from source
python -m spectryn --help
# Or use the installed command
spectryn --helpDebugging
bash
# Enable debug logging
spectryn --markdown EPIC.md --epic TEST-1 -v
# Use Python debugger
python -m pdb -m spectryn --markdown EPIC.md --epic TEST-1Testing Against Jira
Create a test project in Jira Cloud for development:
- Create a free Jira Cloud instance
- Set up a test project with an epic
- Configure credentials in
.env(git-ignored)
Release Process
Releases are handled by maintainers:
- Update version in
pyproject.toml - Update CHANGELOG.md
- Create a release tag:
git tag v1.0.0 - Push tag:
git push --tags - GitHub Actions publishes to PyPI
Questions?
- Bug reports: GitHub Issues
- Feature requests: GitHub Discussions
- Security issues: See SECURITY.md
License
By contributing, you agree that your contributions will be licensed under the MIT License.