Deploy and test Linux CTF challenges across cloud providers (AWS, Azure, GCP). Use when testing CTF setup, validating challenges work correctly, running the full test suite, verifying services survive VM reboots, or after creating new challenges.
This skill deploys CTF infrastructure to cloud providers and validates that learners can complete the lab.
ctf_setup.sh, setup/, or verify/Use this skill when the user asks things like:
sudo apt install jq (Ubuntu) or brew install jq (macOS)brew install hudochenkov/sshpass/sshpassaws sts get-caller-identityaz account showgcloud auth list --filter=status:ACTIVEDetermine the mode and provider.
aws, azure, gcp, or all. Azure is usually the fastest single-provider test.Check provider authentication before deploying.
aws sts get-caller-identityaz account showgcloud auth list --filter=status:ACTIVERun the requested test from the repository root.
| User request | Command | What gets tested |
| --- | --- | --- |
| Basic test on AWS | ./.github/skills/ctf-testing/deploy_and_test.sh aws | Verify command sanity checks, all 18 challenges, export certificate, token format, username, challenge count, and frozen completion time |
| Basic test on Azure | ./.github/skills/ctf-testing/deploy_and_test.sh azure | Verify command sanity checks, all 18 challenges, export certificate, token format, username, challenge count, and frozen completion time |
| Basic test on GCP | ./.github/skills/ctf-testing/deploy_and_test.sh gcp | Verify command sanity checks, all 18 challenges, export certificate, token format, username, challenge count, and frozen completion time |
| Basic test on all providers | ./.github/skills/ctf-testing/deploy_and_test.sh all | Same basic checks across AWS, Azure, and GCP |
| Full test on AWS | ./.github/skills/ctf-testing/deploy_and_test.sh aws --with-reboot | Basic checks plus reboot, required service checks, and progress persistence |
| Full test on Azure | ./.github/skills/ctf-testing/deploy_and_test.sh azure --with-reboot | Basic checks plus reboot, required service checks, and progress persistence |
| Full test on GCP | ./.github/skills/ctf-testing/deploy_and_test.sh gcp --with-reboot | Basic checks plus reboot, required service checks, and progress persistence |
| Full test on all providers | ./.github/skills/ctf-testing/deploy_and_test.sh all --with-reboot | Same full checks across AWS, Azure, and GCP |
The deployment script uses contributor mode, so Terraform uploads the local setup package and runs the code from your working tree. It does not test GitHub Release assets.
Treat cleanup as part of the test, not an optional follow-up.
terraform destroy from the provider directory.Report the result plainly.
RESULT: PASS (<providers>) or RESULT: FAIL (<providers>).When a run fails, identify the first failing layer:
| Failure point | What to collect |
| --- | --- |
| Terraform failed | Provider name and Terraform error |
| SSH failed | VM IP and SSH wait output |
| Setup failed | /var/lib/linux-ctfs/setup.failed, /var/log/ctf_setup.log, and /var/log/cloud-init-output.log |
| Challenge failed | Challenge number and failing test output |
| Reboot failed | Failed service name and journalctl -u <service-name> output |
| Cleanup failed | Remaining cloud resources |
.github/skills/ctf-testing/test_ctf_challenges.sh.Reference files - treat as black boxes, run directly:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer