Thank you for your interest in contributing to JAEGIS! This document provides guidelines and information for contributors.
- Search existing issues first to avoid duplicates
- Use the issue template when creating new issues
- Provide detailed information including:
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Node.js version, Python version)
- Error messages and logs
- Fork the repository and create a feature branch
- Follow the coding standards outlined below
- Write tests for new functionality
- Update documentation as needed
- Submit a pull request with a clear description
- Node.js 18+
- Python 3.8+
- Git
# Clone your fork
git clone https://github.com/YOUR_USERNAME/JAEGIS.git
cd JAEGIS
# Install dependencies
npm install
pip install -r requirements.txt
# Copy configuration
cp config/config.example.json config/config.json
# Run tests
npm test
python -m pytest
# Start development server
npm run dev- Use ES6+ features
- Follow Standard JS style guide
- Use meaningful variable names
- Add JSDoc comments for functions
- Maximum line length: 100 characters
/**
* Process a command and return the result
* @param {string} command - The command to process
* @param {Object} options - Processing options
* @returns {Promise<Object>} Processing result
*/
async function processCommand(command, options = {}) {
// Implementation
}- Follow PEP 8 style guide
- Use type hints for function signatures
- Add docstrings for classes and functions
- Maximum line length: 88 characters (Black formatter)
def process_github_content(url: str, cache_duration: int = 3600) -> dict:
"""
Process GitHub content and return parsed data.
Args:
url: GitHub raw content URL
cache_duration: Cache duration in seconds
Returns:
Parsed content dictionary
"""
# ImplementationUse conventional commits format:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changesrefactor: Code refactoringtest: Test changeschore: Build/tooling changes
Examples:
feat(commands): add new /analytics command
fix(cache): resolve memory leak in cache cleanup
docs(readme): update installation instructions
# Node.js tests
npm test
npm run test:coverage
# Python tests
python -m pytest
python -m pytest --cov=src/python
# Integration tests
npm run test:integration- Unit tests for individual functions
- Integration tests for component interactions
- End-to-end tests for complete workflows
- Minimum 80% code coverage
// Node.js test example
describe('CommandProcessor', () => {
describe('processCommand', () => {
it('should process help command correctly', async () => {
const result = await processor.processCommand('/help')
expect(result.success).toBe(true)
expect(result.data).toContain('Available commands')
})
})
})# Python test example
class TestGitHubIntegration:
def test_fetch_commands_success(self):
"""Test successful command fetching from GitHub."""
integration = GitHubIntegration()
result = integration.fetch_commands()
assert result['success'] is True
assert 'commands' in result['data']JAEGIS/
βββ src/
β βββ nodejs/ # Node.js components
β β βββ core/ # Core processing logic
β β βββ commands/ # Command handlers
β β βββ utils/ # Utility functions
β β βββ tests/ # Node.js tests
β βββ python/ # Python components
β β βββ github/ # GitHub integration
β β βββ processing/ # Content processing
β β βββ utils/ # Python utilities
β β βββ tests/ # Python tests
β βββ shared/ # Shared utilities
βββ config/ # Configuration files
βββ commands/ # Command definitions
βββ docs/ # Documentation
βββ examples/ # Usage examples
βββ scripts/ # Build/deployment scripts
βββ tests/ # Integration tests
- Command processing optimization
- GitHub integration improvements
- Error handling enhancements
- Performance optimizations
- Documentation improvements
- New command implementations
- UI/UX improvements
- Additional integrations
- Monitoring and analytics
- Security enhancements
- Code refactoring
- Test coverage improvements
- Build process optimization
- Developer tooling
When reporting bugs, include:
- Clear description of the issue
- Steps to reproduce the problem
- Expected behavior vs actual behavior
- Environment information:
- Operating system
- Node.js version
- Python version
- JAEGIS version
- Error messages and stack traces
- Screenshots if applicable
When requesting features:
- Describe the use case and problem it solves
- Provide examples of how it would work
- Consider implementation complexity
- Check existing issues for similar requests
- API documentation - JSDoc/Sphinx generated
- User guides - Markdown in
/docs - Code comments - Inline documentation
- README files - Component overviews
- Use clear, concise language
- Include code examples
- Provide step-by-step instructions
- Keep documentation up-to-date
We use Semantic Versioning (SemVer):
- MAJOR.MINOR.PATCH
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
- Update version numbers
- Update CHANGELOG.md
- Run full test suite
- Update documentation
- Create release notes
- Tag release in Git
- Publish to npm/PyPI
Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes
- Credited in documentation
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - General questions and ideas
- Discord - Real-time chat and support
- Email - use.manus.ai@gmail.com
By contributing to JAEGIS, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to JAEGIS! π