Thank you for your interest in contributing! This guide will help you get started.
Please open an issue before submitting a PR. This lets us discuss the proposed changes and ensure they align with the project goals. This applies to:
- New challenges
- Bug fixes in existing challenges
- Infrastructure changes
- Documentation improvements
✅ Bug fixes for challenge infrastructure
✅ Improvements to setup reliability
✅ Cloud provider optimizations
✅ Documentation clarifications
❌ Challenge solutions or hints beyond what verify hint provides
❌ Changes that make challenges significantly easier
All tests must pass before submitting a PR. You must verify your changes work on at least one cloud provider.
- Terraform (>= 1.0)
- sshpass
- macOS:
brew install hudochenkov/sshpass/sshpass - Linux:
apt install sshpassoryum install sshpass - Windows: Use WSL (Windows Subsystem for Linux)
- macOS:
- Cloud CLI authenticated for your chosen provider:
| Provider | Verify Authentication |
|---|---|
| AWS | aws sts get-caller-identity |
| Azure | az account show |
| GCP | gcloud auth list --filter=status:ACTIVE |
If you use an AI coding assistant with agent/tool capabilities:
| Tool | How to Test |
|---|---|
| GitHub Copilot (VS Code) | Open Chat in agent mode, prompt: Test the AWS lab |
| Claude Code | Prompt: Test the AWS lab |
| Cursor, Windsurf, etc. | Use agent mode and prompt: Test the AWS lab |
Replace AWS with Azure or GCP as needed. The AI will use the CTF testing skill to deploy, test, and clean up.
Run from the repository root:
./.github/skills/ctf-testing/deploy_and_test.sh <provider>Examples:
./.github/skills/ctf-testing/deploy_and_test.sh aws
./.github/skills/ctf-testing/deploy_and_test.sh azure
./.github/skills/ctf-testing/deploy_and_test.sh gcpFor thorough testing (includes reboot verification):
./.github/skills/ctf-testing/deploy_and_test.sh aws --with-reboot- All 18 challenges are properly set up
- Services are running and accessible
- Flags can be discovered and submitted
- Progress tracking works
- Verification token generation and format
- (With
--with-reboot) Services survive VM restart
See .github/skills/ctf-testing/SKILL.md for detailed documentation.
- Open an issue first to discuss your proposed changes
- Fork the repository and create a feature branch
- Make your changes with clear, descriptive commits
- Run tests on at least one cloud provider
- Submit your PR referencing the issue number
- Respond to feedback from maintainers
- Shell scripts should pass
shellcheck - Terraform should be formatted with
terraform fmt - Use descriptive variable and function names
- Add comments for non-obvious logic
If you're unsure about anything, open an issue and ask. We're happy to help!