Skip to main content
Glama
contributing.md11.1 kB
# Contributing Guide This guide walks you through the complete process of contributing to AutoDocs MCP Server, from initial setup to getting your changes merged. ## Quick Start ### 1. Set Up Your Development Environment **Clone and Install**: ```bash # Clone the repository git clone https://github.com/bradleyfay/autodocs.git cd autodocs # Install with development dependencies uv sync # Verify installation uv run python -m autodoc_mcp.main --help ``` **Verify Your Setup**: ```bash # Run the test suite uv run python -m pytest # Check code quality uv run pre-commit run --all-files # Test MCP server startup echo '{}' | uv run python -m autodoc_mcp.main ``` ### 2. Understand the Codebase Before making changes, familiarize yourself with: - **[System Architecture](architecture.md)** - Understanding component organization - **[Development Standards](standards.md)** - Code conventions and requirements - **[Testing Guide](testing.md)** - How to write and run tests ## Development Workflow ### Step 1: Branch Management **Check Current Branch**: ```bash git status git branch ``` **Create Feature Branch**: ```bash # Always branch from develop for new features git checkout develop git pull origin develop git checkout -b feature/your-feature-description # For bug fixes, you can branch from main if critical git checkout main git pull origin main git checkout -b fix/bug-description ``` ### Step 2: Make Your Changes **Follow Development Standards**: - Write tests for new functionality (see [Testing Guide](testing.md)) - Follow [code quality standards](standards.md#code-quality-standards) - Use [conventional commit messages](standards.md#commit-message-standards) - Document technical debt if making compromises **Test Your Changes**: ```bash # Run tests frequently during development uv run python -m pytest tests/unit/ # Run specific tests for your changes uv run python -m pytest tests/unit/test_your_module.py -v # Check code quality uv run pre-commit run --all-files ``` ### Step 3: Commit Your Changes **Stage and Commit**: ```bash # Review your changes git diff # Stage changes git add . # Commit with conventional message git commit -m "feat: add smart dependency context filtering - Implement token-aware context selection - Add runtime vs dev dependency classification - Include configurable context scoping options Closes #123" ``` **Pre-commit Hook Compliance**: - Pre-commit hooks run automatically on every commit - If hooks fail, fix the issues and commit again - **NEVER** use `--no-verify` to bypass hooks ### Step 4: Push and Create Pull Request **Push Your Branch**: ```bash git push -u origin feature/your-feature-description ``` **Create Pull Request**: 1. Navigate to the GitHub repository 2. Click "Compare & pull request" for your branch 3. Fill out the PR template with: - Clear description of changes - Testing performed - Related issues - Breaking changes (if any) ## Types of Contributions ### Bug Fixes **Process for Bug Fixes**: 1. **Reproduce the Issue**: Create a failing test that demonstrates the bug 2. **Fix the Code**: Implement the minimal fix needed 3. **Verify the Fix**: Ensure the test passes and no regressions 4. **Update Documentation**: If the bug was in documented behavior **Example Bug Fix Workflow**: ```bash # Create bug fix branch git checkout -b fix/cache-corruption-on-concurrent-access # Write failing test # Edit tests/unit/test_cache_manager.py # Run test to confirm failure uv run python -m pytest tests/unit/test_cache_manager.py::test_concurrent_access -v # Implement fix # Edit src/autodoc_mcp/core/cache_manager.py # Verify fix uv run python -m pytest tests/unit/test_cache_manager.py::test_concurrent_access -v # Commit fix git commit -m "fix: resolve cache corruption on concurrent access - Add file locking for cache write operations - Implement retry logic for lock contention - Add test coverage for concurrent cache access Fixes #456" ``` ### New Features **Process for New Features**: 1. **Design First**: Consider architectural impact and create issue for discussion 2. **Test-Driven Development**: Write tests before implementation 3. **Incremental Implementation**: Break large features into smaller commits 4. **Documentation**: Update relevant documentation **Example Feature Implementation**: ```bash # Create feature branch git checkout -b feature/add-semantic-search-filtering # Write tests first (TDD) # Edit tests/unit/test_context_formatter.py # Implement feature incrementally # Edit src/autodoc_mcp/core/context_formatter.py # Test continuously uv run python -m pytest tests/unit/test_context_formatter.py -v # Update integration tests # Edit tests/integration/test_mcp_server.py # Update documentation # Edit docs/product/mcp-tools.md # Commit with conventional message git commit -m "feat: add semantic search filtering for documentation - Implement query-based section filtering - Add relevance scoring for documentation sections - Include configurable similarity threshold - Update MCP tool to accept search queries Closes #789" ``` ### Documentation Improvements **Types of Documentation**: - **Code Documentation**: Docstrings, inline comments - **User Documentation**: Setup guides, tutorials, how-to guides - **Developer Documentation**: Architecture, contributing guides **Documentation Standards**: - Follow [Diátaxis framework](https://diataxis.fr/) for user documentation - Use clear, concise language appropriate for the audience - Include code examples and practical guidance - Test all code examples to ensure they work ## Code Review Process ### Submitting for Review **Before Requesting Review**: - [ ] All tests pass locally - [ ] Code meets quality standards (Ruff, MyPy clean) - [ ] Documentation updated if needed - [ ] Conventional commit messages used - [ ] PR description is complete **PR Description Template**: ```markdown ## Summary Brief description of the changes and why they're needed. ## Changes Made - Bullet point list of specific changes - Focus on what changed, not how it was implemented ## Testing Performed - [ ] Unit tests added/updated - [ ] Integration tests pass - [ ] Manual testing performed ## Related Issues Closes #123 Related to #456 ## Breaking Changes None / Describe any breaking changes ## Additional Notes Any additional context, deployment notes, or follow-up work needed. ``` ### Review Criteria **Technical Requirements**: - [ ] Code follows established patterns and architecture - [ ] Tests provide adequate coverage - [ ] Error handling is comprehensive - [ ] Performance impact is acceptable - [ ] Security considerations addressed **Quality Standards**: - [ ] Code is readable and well-documented - [ ] Commit messages follow conventional commits - [ ] No pre-commit hook violations - [ ] Technical debt is documented if introduced ### Addressing Review Feedback **Responding to Feedback**: 1. **Address All Comments**: Respond to each review comment 2. **Make Requested Changes**: Implement suggested improvements 3. **Explain Decisions**: If you disagree, explain your reasoning 4. **Request Re-review**: After addressing feedback, request another review **Making Review Changes**: ```bash # Make requested changes # Edit relevant files # Test changes uv run python -m pytest # Commit additional changes git commit -m "refactor: address review feedback - Extract complex method into smaller functions - Add missing error handling for edge cases - Improve variable naming for clarity" # Push updates git push origin feature/your-feature-description ``` ## Advanced Contributing Scenarios ### Working with Existing Issues **Finding Issues to Work On**: - Look for issues labeled `good-first-issue` for beginners - Check issues labeled `help-wanted` for intermediate contributors - Review the project roadmap for strategic contributions **Claiming an Issue**: 1. Comment on the issue expressing interest 2. Ask questions about requirements or approach 3. Wait for maintainer acknowledgment before starting work ### Contributing to Architecture **Major Architectural Changes**: 1. **Create RFC**: For significant changes, create a Request for Comments 2. **Discuss First**: Use GitHub Discussions for architectural conversations 3. **Prototype**: Create proof-of-concept implementations 4. **Incremental Migration**: Break changes into manageable steps ### Performance Improvements **Performance Contribution Process**: 1. **Measure First**: Establish baseline performance metrics 2. **Identify Bottlenecks**: Use profiling tools to find actual issues 3. **Implement Optimization**: Make targeted improvements 4. **Verify Improvement**: Measure performance impact 5. **Add Benchmarks**: Include performance tests to prevent regressions ## Troubleshooting Common Issues ### Development Environment Issues **uv Installation Problems**: ```bash # Reinstall uv if needed curl -LsSf https://astral.sh/uv/install.sh | sh # Clear uv cache uv cache clean # Reinstall dependencies rm -rf .venv uv sync ``` **Test Failures**: ```bash # Run tests with verbose output uv run python -m pytest -v -s # Run specific failing test uv run python -m pytest tests/unit/test_specific.py::test_method -v -s # Check test isolation uv run python -m pytest --lf --tb=short ``` **Pre-commit Hook Issues**: ```bash # Install pre-commit hooks uv run pre-commit install # Run hooks manually uv run pre-commit run --all-files # Skip specific hooks if needed (debugging only) SKIP=mypy git commit -m "debug: temporary commit to test changes" ``` ### Git Workflow Issues **Branch Management**: ```bash # Switch to develop branch git checkout develop # Update develop branch git pull origin develop # Rebase feature branch on latest develop git checkout feature/your-feature git rebase develop # Resolve conflicts if needed git add . git rebase --continue ``` **Commit Message Issues**: ```bash # Fix the last commit message git commit --amend -m "feat: correct conventional commit message" # Interactive rebase to fix multiple commits git rebase -i HEAD~3 ``` ## Getting Help ### Resources for Contributors - **Architecture Questions**: Review [System Architecture](architecture.md) - **Code Standards**: Check [Development Standards](standards.md) - **Testing Help**: See [Testing Guide](testing.md) - **Technical Decisions**: Read [Technical Decisions](technical-decisions.md) ### Communication Channels - **GitHub Issues**: For bug reports and feature requests - **GitHub Discussions**: For architectural discussions and questions - **Pull Request Comments**: For code-specific discussions - **Code Documentation**: Inline comments and docstrings for implementation details ### Contribution Recognition Contributors are recognized through: - GitHub contributor statistics - Release notes acknowledgments - Code author attribution in git history - Community recognition for significant contributions Thank you for contributing to AutoDocs MCP Server! Your contributions help improve AI-assisted development for the entire Python community.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bradleyfay/autodoc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server