Getting Started
Set up your environment
Follow the development setup guide to configure your local environment:
Choose what to contribute
You can contribute in several ways:
- Skills: Add security knowledge packages
- Code: Fix bugs or implement features
- Documentation: Improve docs and examples
- Testing: Add test coverage
- Bug reports: Report issues with details
Create an issue (for code changes)
Before starting work on code changes:
- Check existing issues
- Create a new issue describing the problem or feature
- Wait for maintainer feedback before investing significant time
Contributing Skills
Skills are specialized knowledge packages that enhance agent capabilities. They’re the easiest way to contribute!Skill Categories
Skills are organized by category:/vulnerabilities- Security vulnerability knowledge (SQL injection, XSS, etc.)/frameworks- Framework-specific testing (Django, Rails, Next.js, etc.)/technologies- Technology platforms (Firebase, Supabase, etc.)/protocols- Protocol testing (GraphQL, OAuth, WebSocket, etc.)/reconnaissance- Information gathering techniques/cloud- Cloud platform security (AWS, GCP, Azure, etc.)/scan_modes- Scan mode definitions (quick, standard, deep)
Creating a Skill
Skill Guidelines
Be specific and actionable
Be specific and actionable
Focus on practical, actionable information:Good: “Send a GraphQL introspection query to enumerate all types and fields”Bad: “GraphQL APIs might have security issues”
Include working examples
Include working examples
Provide actual payloads and commands that work:
Explain validation methods
Explain validation methods
Show how to verify findings:
Keep it focused
Keep it focused
Each skill should cover one specific topic:
- One vulnerability type per file
- One framework per file
- One protocol per file
Contributing Code
Pull Request Process
Make your changes
Follow the code style guidelines and write tests for new features:
Run quality checks
Ensure all checks pass before committing:This runs:
- Code formatting (Ruff)
- Linting (Ruff + Pylint)
- Type checking (mypy + pyright)
- Security checks (Bandit)
Run tests
Verify your changes don’t break existing functionality:Aim for >80% code coverage for new code.
PR Guidelines
Clear Description
Explain what changed and why
Small & Focused
One feature or fix per PR
Include Examples
Show before/after behavior
Update Docs
Document new features
Code Style
Esprit follows strict code quality standards:Style Requirements
- PEP 8 compliance with 100-character line limit
- Type hints for all function parameters and return values
- Docstrings for all public methods and classes
- Meaningful names - No single-letter variables (except loop counters)
- Small functions - Keep functions focused and under 50 lines
Example Code
Type Checking
Esprit uses strict type checking with both mypy and pyright:Code Formatting
Ruff handles formatting automatically:pyproject.toml):
- Line length: 100 characters
- Quote style: Double quotes
- Target: Python 3.12+
Testing Requirements
Test Coverage
- New features: Must include tests
- Bug fixes: Add regression tests
- Coverage target: >80% for new code
- All tests must pass: No skipped tests in PRs
Writing Tests
See the Testing Guide for detailed examples. Quick example:Reporting Issues
When reporting bugs, include:Feature Requests
We welcome feature ideas! When requesting features:- Check existing issues - Your idea might already be planned
- Describe the use case - Explain the problem you’re solving
- Explain the benefit - How would this help users?
- Consider implementation - Any thoughts on how it could work?
- Be open to discussion - Maintainers may suggest alternatives
Feature Request Template
Community
Join the Esprit community:- Discord: Join our community - Get help, discuss features
- GitHub Issues: Report bugs and request features
- GitHub Discussions: Share ideas and ask questions
Recognition
We value all contributions! Contributors will be:- Listed in release notes
- Thanked in our Discord community
- Recognized in the project’s contributors list
- Invited to join contributor channels
Development Workflow Summary
Quick reference for the complete development cycle:Questions?
Need help? We’re here for you:- Quick questions: Ask in Discord
- Bug reports: Create an issue
- Feature ideas: Start a discussion
Thank you for contributing to Esprit! Every contribution, no matter how small, helps make security testing more accessible and effective.