Ways to contribute
Submit templates
Create and share vulnerability detection templates
Report bugs
Help us identify and fix issues
Improve code
Contribute to the Nuclei engine
Update docs
Help improve documentation
Contributing templates
The nuclei-templates repository is the heart of the Nuclei project. Contributing templates helps the entire security community.Community programs
Template submission process
Fork the repository
Fork the nuclei-templates repository to your GitHub account.
Create your template
Write your template following the template syntax. Use the online template editor with AI assistance.
Template quality guidelines
Accuracy
Accuracy
- Zero false positives: Templates must accurately detect the vulnerability
- Proper matchers: Use multiple matchers with
andcondition when necessary - Version checking: Include version checks where applicable
- Status code validation: Always validate HTTP status codes
Severity classification
Severity classification
Use appropriate severity levels:
- Critical: Remote code execution, authentication bypass
- High: SQL injection, privilege escalation, sensitive data exposure
- Medium: XSS, CSRF, information disclosure
- Low: Security misconfigurations, informational issues
- Info: Technology detection, informational findings
Metadata completeness
Metadata completeness
Include complete metadata:
Performance considerations
Performance considerations
- Minimize HTTP requests where possible
- Use request clustering when testing multiple endpoints
- Avoid unnecessary payloads or brute force attempts
- Use
stop-at-first-matchfor multi-request templates
Template best practices
Do include:- Clear, descriptive template IDs
- Comprehensive references
- Example vulnerable code/configuration (when safe)
- Remediation guidance in description
Contributing code
Contributions to the Nuclei engine are welcome!Getting started
Pull request guidelines
When creating a PR, please follow these guidelines:PR requirements
PR requirements
- Base from dev branch: Always work from the
devbranch - Link to issue: Reference the related issue number
- Clear description: Explain what changes you made and why
- Testing evidence: Provide before/after examples if applicable
- Functional testing: Include steps to test the changes
- Unit tests: Add unit tests for new features
Checklist
- Tests pass (
make test) - Code is linted (
make vet) - Documentation updated
- Unit tests added
Validate templates
Update dependencies
Reporting issues
Found a bug or have a feature request?Check existing issues
Search existing issues to avoid duplicates.
Create detailed report
Include:
- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Nuclei version (
nuclei -version) - Operating system and architecture
- Relevant logs or error messages
Documentation contributions
Help improve the documentation:- Fix typos or unclear explanations
- Add examples and use cases
- Improve navigation and organization
- Translate documentation
Community guidelines
- Be respectful: Treat everyone with respect and professionalism
- Be constructive: Provide helpful feedback and suggestions
- Be patient: Maintainers are volunteers; reviews take time
- Be collaborative: Work together to solve problems
Getting help
Discord community
Join our Discord for questions and discussions
GitHub discussions
Start a discussion on GitHub
Documentation
Browse the full documentation
Video tutorials
Watch tutorial videos
Recognition
Thank you to all the amazing community contributors who help make Nuclei better! Your contributions are valued and appreciated. Top contributors are recognized through:- The Pioneers program
- The Contributors page on GitHub
- Social media shoutouts
- Invitation to exclusive community events