# ctf_status.py Reads the `README.md` of every repo in the GitLab challenges group (REST API, no clone) and shows which categories have challenges in which state, at which difficulty — in the terminal and as a HedgeDoc note. ## Setup ```sh cp ctf_status.env.example ctf_status.env && chmod 600 ctf_status.env $EDITOR ctf_status.env # GitLab group URL + token, HedgeDoc note ``` ## Use ```sh ./ctf_status.py # terminal summary ./ctf_status.py -o overview.md # + HedgeDoc markdown to a file ./ctf_status.py --stdout | wl-copy # straight to clipboard, paste into HedgeDoc ./ctf_status.py --update # overwrite the note in HEDGEDOC_NOTE ./ctf_status.py --update # ... or an explicit one ``` The token is a fine-grained personal access token on the challenges group with **Project: Read** (to list the repos) and **Repository: Read** (to download the READMEs). A plain `.env` with `GL_PAT=` / `GITLAB_URL=` is read as well. ## Keeping a HedgeDoc note up to date `--update` overwrites an **existing** note in place, so the URL you share stays the same. Every run rewrites the whole body, starting with ``` --- tags: Logistics, h4tum CTF 2026 --- ``` and a `**Last updated:**