Contributions of all sizes are welcome.
Each role lives in roles/ and follows the same structure. To add a new role:
- Create a new directory under
roles/withtasks/main.yml - Add a Molecule test scenario under
roles/<name>/molecule/default/ - Wire it into
playbook.ymlwith appropriate tags - Run
make checkto validate
Reusable agent-agnostic prompts live in prompts/. Claude Code slash commands live in .claude/commands/. Follow the skill authoring guide for structure and conventions.
Do not open a public issue for security vulnerabilities. See SECURITY.md for responsible disclosure instructions.
- Fork the repository
- Create a feature branch (
git checkout -b fix/description) - Make your changes
- Run
make checkto validate - Open a pull request
# Clone and install dependencies
git clone https://github.com/droxey/clincher.git && cd clincher
pip install -r requirements.txt
ansible-galaxy collection install -r requirements.yml
# Run the full CI suite locally
make checkUse conventional commit prefixes with imperative mood, under 72 characters:
feat: add new monitoring role for Uptime Kuma
fix: resolve Redis password leak in docker-compose template
security: restrict egress whitelist to LLM provider domains only
docs: clarify Step 5 sandbox hardening instructions
- YAML: Must pass
yamllintandansible-lint(production profile) - Shell scripts: Use
set -euo pipefail,flockfor mutual exclusion, file-based secrets - Jinja2 templates: Include Molecule test coverage for all conditional paths
- Secrets: Never hardcode IPs, passwords, or API keys — use placeholders (
<SERVER_IP>,<ADMIN_IP>)
Open a discussion or file an issue.