Contributing to Violin
July 17, 2026 · View on GitHub
Thanks for your interest in Violin — the supervised agentic Hermes pentest profile.
How to Contribute
Reporting Bugs
- Check the issues for duplicates
- Include: Violin version, Hermes version, OS/platform, steps to reproduce, and any guard output
- Use the bug report template if available
Requesting Features
- Open a feature request issue describing the playbook, vulnerability class, or workflow you'd like added
- Explain the use case and how it fits Violin's supervised, authorised testing paradigm
- Include references to OWASP, PTES, or NIST methodology if applicable
Submitting Changes
- Fork the repo and create a feature branch from
master - Follow the existing file structure and conventions:
- Engagement phases and shared vulnerability playbooks go in
skills/pentest/playbooks/ - Injection/web playbooks go in
skills/web-attacks/playbooks/ - Authentication and authorisation playbooks go in
skills/access-control/playbooks/ - Shared references and templates stay in
skills/pentest/references/andskills/pentest/templates/ - Hermes guard implementation belongs in
plugins/violin_guard/;scripts/contains CLI and smoke helpers - A new routed skill requires its own
skills/<name>/SKILL.mdand an update to the pentest orchestrator and README layout
- Engagement phases and shared vulnerability playbooks go in
- If adding a new playbook, ensure it has
## Evidence,## Stop Conditions, and## Blocked Actionssections - Run
python scripts/violin_guard.py check-releasebefore opening a PR - Open a pull request with a clear description of the change
Playbook Standards
All vulnerability-class playbooks must:
- Reference the OWASP/PTES/CWE mapping in the title
- Include detection methods with concrete tool commands
- Specify safe PoC techniques (no destructive payloads)
- Define evidence file paths using
$ENG_DIR/evidence/exploitation/<playbook-name>/ - List stop conditions and blocked actions
- Gracefully degrade if recommended tools are unavailable
Code Style
- Python:
ruff-compatible, type hints where practical - Shell:
bashwithset -euo pipefail, POSIX-compatible where possible - Markdown: standard GFM, 80-char soft wrap for prose
- YAML: valid, safely parseable YAML; preserve the existing schema's key style (for example
rules_of_engagementandallowed_actions)
Code of Conduct
Be respectful, constructive, and assume good faith. This is a security tool — our goal is safer systems, not causing harm.