Contributing Guide
July 17, 2025 ยท View on GitHub
Thank you for your interest in contributing to the Claude PM Framework! This guide provides everything you need to know about contributing code, documentation, and ideas to the project.
Code of Conduct
By participating in this project, you agree to abide by our Code of Conduct:
- Be respectful of differing viewpoints and experiences
- Be constructive in your feedback and criticism
- Be inclusive and welcoming to all contributors
- Be professional in all interactions
Getting Started
1. Fork and Clone
# Fork the repository on GitHub, then:
git clone https://github.com/YOUR_USERNAME/claude-multiagent-pm.git
cd claude-multiagent-pm
git remote add upstream https://github.com/Bobjayafam/claude-multiagent-pm.git
2. Set Up Development Environment
Follow the Development Setup Guide to configure your environment.
3. Create a Branch
# Update main branch
git checkout main
git pull upstream main
# Create feature branch
git checkout -b feature/your-feature-name
# Or for bugs: git checkout -b fix/issue-description
Contribution Types
1. Bug Reports
Before reporting a bug:
- Search existing issues to avoid duplicates
- Try to reproduce with the latest version
- Collect relevant information (logs, environment, steps)
Bug report template:
### Description
Clear description of the bug
### Steps to Reproduce
1. Step one
2. Step two
3. ...
### Expected Behavior
What should happen
### Actual Behavior
What actually happens
### Environment
- OS: [e.g., macOS 13.0]
- Node.js: [e.g., 18.16.0]
- Python: [e.g., 3.10.0]
- Framework Version: [e.g., 0.9.3]
### Additional Context
Any other relevant information, logs, or screenshots
2. Feature Requests
Before requesting a feature:
- Check if it's already requested or in development
- Consider if it aligns with project goals
- Think about implementation complexity
Feature request template:
### Feature Description
Clear description of the proposed feature
### Use Case
Why is this feature needed? What problem does it solve?
### Proposed Implementation
How might this be implemented? (optional)
### Alternatives Considered
What alternatives have you considered?
### Additional Context
Any mockups, examples, or references
3. Code Contributions
Code Style
Python Code Style:
- Follow PEP 8
- Use type hints where appropriate
- Maximum line length: 88 characters (Black default)
- Use descriptive variable names
# Good
async def process_agent_task(
agent_id: str,
task_data: Dict[str, Any],
timeout: Optional[int] = None
) -> AgentResult:
"""Process a task using the specified agent.
Args:
agent_id: Unique identifier for the agent
task_data: Task parameters and context
timeout: Optional timeout in seconds
Returns:
AgentResult containing execution status and output
Raises:
AgentNotFoundError: If agent_id is invalid
TaskTimeoutError: If execution exceeds timeout
"""
# Implementation
JavaScript/TypeScript Code Style:
- Use ESLint and Prettier configurations
- Prefer async/await over callbacks
- Use meaningful function names
- Document complex logic
// Good
/**
* Initialize the framework with given configuration
* @param {Object} config - Framework configuration
* @returns {Promise<void>}
*/
async function initializeFramework(config) {
validateConfig(config);
await loadAgents();
await setupServices();
logger.info('Framework initialized successfully');
}
Commit Messages
Follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringperf: Performance improvementstest: Test additions or fixesbuild: Build system changesci: CI/CD changeschore: Other changes
Examples:
# Feature
git commit -m "feat(agents): Add performance monitoring agent"
# Bug fix
git commit -m "fix(cli): Resolve path issues on Windows"
# Documentation
git commit -m "docs(api): Update agent registry documentation"
# With body
git commit -m "feat(cache): Implement shared prompt cache
- Add LRU cache with 99.7% performance improvement
- Implement automatic cache invalidation
- Add cache metrics and monitoring
Closes #123"
Pull Request Process
-
Before submitting:
- Ensure all tests pass
- Update documentation
- Add tests for new features
- Run linting and formatting
-
PR title format:
<type>(<scope>): <description> -
PR description template:
## Description Brief description of changes ## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Breaking change - [ ] Documentation update ## Testing - [ ] Unit tests pass - [ ] Integration tests pass - [ ] Manual testing completed ## Checklist - [ ] Code follows style guidelines - [ ] Self-review completed - [ ] Documentation updated - [ ] Tests added/updated - [ ] Breaking changes documented ## Related Issues Closes #123 Related to #456
4. Documentation Contributions
Documentation Style
- Write in clear, concise English
- Use active voice
- Include code examples
- Keep paragraphs short
- Use proper markdown formatting
Documentation Structure
# Page Title
Brief introduction paragraph explaining the topic.
## Main Section
### Subsection
Content with **emphasis** where needed.
```python
# Code example
def example():
pass
Note: Important information
Warning: Critical warnings
See Also
## Testing Requirements
### Running Tests
```bash
# All tests
npm test
# Unit tests only
npm run test:unit
# Integration tests
npm run test:integration
# Python tests
python -m pytest
# Specific test file
python -m pytest tests/test_specific.py
# With coverage
npm run test:coverage
Writing Tests
Test file naming:
- Unit tests:
test_<module_name>.pyor<module>.test.js - Integration tests:
test_integration_<feature>.py
Test structure:
# Python example
import pytest
from claude_pm.services import MyService
class TestMyService:
"""Test cases for MyService."""
@pytest.fixture
def service(self):
"""Create service instance for testing."""
return MyService()
def test_initialization(self, service):
"""Test service initialization."""
assert service.initialized is False
service.initialize()
assert service.initialized is True
@pytest.mark.asyncio
async def test_async_operation(self, service):
"""Test async operation."""
result = await service.process()
assert result.success is True
Review Process
What to Expect
- Automated Checks: CI/CD runs tests and linting
- Code Review: Maintainers review within 2-3 days
- Feedback: Constructive feedback and suggestions
- Iterations: May require changes based on feedback
- Merge: Once approved, changes are merged
Review Criteria
- Code Quality: Clean, readable, maintainable
- Testing: Adequate test coverage
- Documentation: Updated as needed
- Performance: No significant regressions
- Security: No security vulnerabilities
- Compatibility: Backwards compatible
Release Process
Version Numbering
We follow Semantic Versioning (SemVer):
- MAJOR.MINOR.PATCH (e.g., 0.9.3)
- MAJOR: Breaking changes
- MINOR: New features (backwards compatible)
- PATCH: Bug fixes
Release Cycle
- Development: Features developed in feature branches
- Testing: Comprehensive testing in develop branch
- Release Candidate: RC testing for major releases
- Release: Tagged release with changelog
- Deployment: NPM and PyPI publication
Getting Help
Resources
- Documentation: Read existing docs first
- Issues: Search closed issues
- Discussions: Check GitHub Discussions
- Discord: Join our community (if available)
Asking Questions
When asking for help:
- Search existing resources
- Provide context and code examples
- Describe what you've tried
- Include error messages and logs
Recognition
Contributors are recognized in:
- Release notes
- Contributors file
- Project README
- Annual contributor report
Advanced Contributing
Becoming a Maintainer
Active contributors may be invited to become maintainers. Criteria:
- Consistent quality contributions
- Good understanding of the codebase
- Helpful in community discussions
- Commitment to project values
Architecture Changes
For significant architecture changes:
- Discuss in an issue first
- Create an RFC (Request for Comments)
- Get community feedback
- Implement after approval
Thank you for contributing to the Claude PM Framework! Your efforts help make this project better for everyone.