Thank you for your interest in contributing! This project welcomes contributions from everyone.
- Python 3.10 or higher
- UV package manager
- Git
- Anthropic API key for live testing (optional - mock tests don't need it)
- Familiarity with Claude Agent SDK and async Python
-
Fork and clone the repository
git clone https://github.com/yourusername/agentic-proposal-generator.git cd agentic-proposal-generator -
Set up development environment
# UV handles virtual environment automatically uv sync --all-extras -
Configure environment (optional for mock tests)
cp .env.example .env # Edit .env with your Anthropic API key (only needed for live tests) -
Install pre-commit hooks
uv pip install pre-commit pre-commit install
-
Verify setup
# Run mock tests (fast, free, no API key needed) uv run pytest tests/unit tests/integration -v # Optionally run example (requires API key) uv run python example_usage.py
- Follow PEP 8 (enforced by Black + Ruff)
- Use type hints for all functions
- Add docstrings to all public methods (Google style)
- Keep functions focused and well-named
- Use async/await for agent operations
# Run mock tests (development - fast, free, no API)
uv run pytest tests/unit tests/integration -v
# Run with coverage
uv run pytest tests/unit tests/integration --cov=src --cov-report=html
# Run specific test file
uv run pytest tests/unit/test_solutions_engineer.py -v
# Run live tests (⚠️ costs money!)
export ANTHROPIC_API_KEY='your-key'
uv run pytest tests/manual/ -vImportant: Always use mock tests during development. Only run live tests before major releases.
# Format code
uv run black .
uv run isort .
# Lint
uv run ruff check . --fix
# Type check
uv run mypy src/agentic_proposal_generator
# Security scan
uv run bandit -r src/agentic_proposal_generator
# Run all checks (same as pre-commit)
pre-commit run --all-files-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow existing code patterns
- Add mock tests for new features
- Update documentation as needed
- Test thoroughly with mock tests
-
Commit your changes
git add . git commit -m "Add: brief description of changes"
Pre-commit hooks will run automatically. If they fail:
- Fix issues
git addthe changes- Retry commit
-
Push and create pull request
git push origin feature/your-feature-name
When filing a bug report, please include:
- Python version
- Operating system
- Steps to reproduce
- Error messages and stack trace
- Sample transcript (if relevant)
- Expected vs actual behavior
For feature requests, please:
- Describe the use case
- Explain why this would be valuable
- Provide examples if possible
- Consider impact on existing functionality
- Think about backwards compatibility
Areas where we welcome contributions:
- Bug fixes
- Performance improvements
- Documentation improvements
- New agent capabilities
- Additional output formats
- Enhanced error handling
- Test coverage improvements
- Cost optimization features
The project uses a 5-agent multi-specialist system:
- SolutionsEngineerAgent - Extracts requirements
- SolutionArchitectAgent - Designs technical solution
- CommercialAnalystAgent - Creates pricing & ROI
- ProposalWriterAgent - Synthesizes final proposal
- QualityReviewerAgent - Reviews and approves
Agents run in parallel where possible (phases 1-3) for speed.
- Parallel Execution - Run independent agents concurrently
- Event-Driven - Emit events for progress tracking
- Cost Optimization - Use Haiku for extraction, Sonnet for creative tasks
- Type Safety - Use type hints and Pydantic models
- Testing - Mock tests for development, live tests for validation
- Human-in-the-Loop - Support human review and revisions
- Create agent class in
src/agentic_proposal_generator/agents/ - Create agent definition in
.claude/agents/[name].md - Add to
__init__.pyexports - Update orchestrator to include agent
- Add mock response in
tests/fixtures/mock_responses.py - Create unit tests in
tests/unit/test_[agent_name].py - Update integration tests if needed
- Update documentation
- Analysis Phase - Understand existing codebase
- Design Phase - Plan how feature fits in
- Mock First - Add mock data/responses
- Implementation - Write clean, tested code
- Testing - Add comprehensive unit/integration tests
- Documentation - Update relevant docs
- Validation - Test with live API (sparingly)
When making changes that affect user-facing functionality:
- Update README.md - For feature changes
- Update HUMAN_REVIEW.md - For review workflow changes
- Add docstrings - For new classes/functions
- Fill out the PR template completely
- Reference related issues using keywords like "Fixes #123"
- Provide clear description of what changed and why
- Include test results showing all tests pass
- Update documentation as needed
- Ensure CI passes (GitHub Actions will run automatically)
- Code follows project style guidelines (Black, isort, ruff)
- Self-review completed
- Mock tests added for new features
- All tests pass (
pytest tests/unit tests/integration) - Documentation updated
- No API keys or secrets in commits
- Backwards compatibility considered
- Type hints added for new functions
- Pre-commit hooks pass
When modifying agent prompts in .claude/agents/*.md:
- Be Specific - Clear role and expertise
- Structured Output - Define exact format expected
- Examples - Show good vs bad outputs
- Constraints - Specify limits (token count, format rules)
- Quality Standards - Define what "good" looks like
- Test Changes - Verify with mock tests first
- Questions? Open a Discussion on GitHub
- Stuck? Check existing Issues
- Want to chat? Start a Discussion
- Security Issue? See SECURITY.md
Contributors will be acknowledged in:
- Release notes
- Contributors section (planned)
- Git commit history
- Pull request comments
- Be respectful and inclusive
- Provide constructive feedback
- Focus on the code, not the person
- Help others learn and grow
- Follow GitHub's Community Guidelines
Thank you for helping make Agentic Proposal Generator better! 🎉