
Authoring Gzcli Ctf Events
- 1 installs
- Updated May 17, 2026
- dimasma0305/lks-bali-2026
Creates and reviews a gzcli CTF event repository, covering the event layout, category directories, sync/watch behavior and upload validation.
About
Acts as the event-level orchestrator for authoring a gzcli CTF event repo, managing structure, fixed category directories and sync/watch/upload rules while routing challenge-folder work to sub-skills. A developer uses it when building or reviewing a CTF event repository.
- Orchestrates event-level layout for a gzcli CTF repo (.gzevent, category dirs, .example)
- Routes per-challenge work to sub-skills and covers sync/watch/upload rules
Authoring Gzcli Ctf Events by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,835 of 2,203 Security skills by installs in the Skillselion catalog
- Data as of Jul 8, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dimasma0305/lks-bali-2026 --skill authoring-gzcli-ctf-eventsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| Last updated | May 17, 2026 |
| Repository | dimasma0305/lks-bali-2026 ↗ |
What it does
Creates and reviews a gzcli CTF event repository, covering the event layout, category directories, sync/watch behavior and upload validation.
Files
GZCLI CTF Event Authoring (orchestrator)
This skill covers event-level concerns. For work inside a specific challenge folder, route to a sub-skill.
| Editing… | Sub-skill |
|---|---|
challenge.yml (schema, value, flag template, description style) | authoring-gzcli-challenge-yml |
src/ (Dockerfile, run scripts, service code, build inputs) | authoring-gzcli-challenge-src |
dist/ (player-facing artifacts) | authoring-gzcli-challenge-dist |
solver/ (intended-solution material) | authoring-gzcli-challenge-solver |
| Pre-ship quality audit (no guessing, no unintended solves, no spoilers, hygiene) | authoring-gzcli-challenge-quality |
Quick Use
- Confirm whether the task is event-level (this skill) or challenge-level (one of the sub-skills above).
- For event structure questions, read
./references/event-repo-structure.md. - For the challenge directory contract (working-tree vs upload-portable view), read
./references/challenge-directory-contract.md. - For sync, watch, and upload behavior, read
./references/sync-watch-and-upload-rules.md.
Core Workflow
1. Read .gzevent when event metadata (title, schedule, flag prefix convention) matters. 2. Keep challenges under the fixed category directories only: Misc, Crypto, Pwn, Web, Reverse, Blockchain, Forensics, Hardware, Mobile, PPC, OSINT, Game Hacking, AI, Pentest. 3. Start new challenges from the closest .example/ template instead of inventing a layout from scratch. 4. For each challenge sub-folder, defer to the matching sub-skill above. 5. Validate the intended solve path end-to-end before treating the challenge as ready.
Event-Level Rules
challenge.ymlmust remain the canonical challenge definition filename.- If
provide: ./distis set,dist/must contain real files. solver/must contain meaningful intended-solution material.- Treat
solver/and writeup content as documentation — the watcher ignores them, they are not deploy inputs.
Related Files
./references/event-repo-structure.md./references/challenge-directory-contract.md./references/sync-watch-and-upload-rules.md
interface:
display_name: "gzcli CTF Event Authoring"
short_description: "Event repo structure, challenge packaging, and sync rules"
default_prompt: "Use /authoring-gzcli-ctf-events to create, review, or restructure this gzcli event repo or challenge and enforce the expected event layout, challenge packaging, and sync/upload rules."
skill:
path: ".claude/skills/authoring-gzcli-ctf-events/SKILL.md"
invoke_as: "/authoring-gzcli-ctf-events"
interface:
display_name: "gzcli CTF Event Authoring"
short_description: "Event repo structure, challenge packaging, and sync rules"
default_prompt: "Use $authoring-gzcli-ctf-events to create, review, or restructure this gzcli event repo or challenge and enforce the expected event layout, challenge packaging, and sync/upload rules."
Challenge Directory Contract
There are two useful views of a challenge directory in a gzcli event repo.
1. Working Tree View
Inside the event repository, a challenge folder may contain:
challenge.ymldist/src/solver/- optional infrastructure files like
Dockerfileanddocker-compose.yml - generated maintainer or contributor docs copied from
.structure/
This is the view maintainers work with during normal authoring.
2. Portable Upload View
If a challenge is being prepared for the upload server or archive validation path, keep the root compatible with the embedded starter templates:
- required:
challenge.ymldist/src/solver/- optional:
Dockerfiledocker-compose.yml.dockerignore.gitignore
Additional root entries may fail upload validation.
Authoring Guidance
- Start from the closest
.example/template. - Rename the folder to the final challenge slug early.
- Replace placeholder metadata in
challenge.ymlimmediately. - Keep downloadable player artifacts in
dist/— place raw files directly, do not zip them; gzcli automatically zipsdist/contents when uploading/syncing. - Keep service code and build inputs in
src/. - Keep the intended solution or solver in
solver/.
Event Repository Structure
This template is copied into events/<event-name>/.
Expected event-root files and directories:
.gzevent: event metadata such as title, schedule, visibility, summary, and writeup policy.example/: starter challenge templates for common deployment models.structure/: reusable scaffold copied into challenge folders bygzcli structure.agents/skills/: shared skill references plus Codex/OpenAI-flavored manifests.claude/skills/: project-local Claude Code skills (slash-invocable as/authoring-gzcli-ctf-events)AGENTS.md: auto-loaded by Codex; points at.agents/skills/CLAUDE.md: auto-loaded by Claude Code; points at.claude/skills/README.md: participant and author guidanceKriteria.md: organizer challenge criteria- Category directories:
MiscCryptoPwnWebReverseBlockchainForensicsHardwareMobilePPCOSINTGame HackingAIPentest
Use one folder per challenge inside the correct category:
<Category>/<challenge-slug>/When gzcli structure is used, .structure/ content is copied into challenge directories. That scaffold may add repo-facing documentation like README.md, writeups/, or helper placeholders for maintainers and contributors.
Sync, Watch, and Upload Rules
Watcher Behavior
File changes map to update behavior:
challenge.yml: metadata updatedist/: attachment updatesrc/: full redeployDockerfile,docker-compose.yml,Makefile: full redeploysolver/and writeup content: no deploy action
Anything outside the allowed challenge update paths is ignored by the watcher.
Upload Validation Expectations
The upload path expects:
- the challenge definition file to be named exactly
challenge.yml dist/,src/, andsolver/to existsolver/to contain meaningful contentchallenge.ymlto differ from the stock embedded templatesdist/to contain real files whenprovide: ./distis used
Additional rules:
- if
dashboard.configis present, it must point to./src/docker-compose.yml - for
StaticContainerusing a local image tag, includeDockerfileorsrc/Dockerfile
Recommended Development Loop
1. Create or update the challenge from the closest .example/ template. 2. Validate the full solve path from a clean start. 3. Use gzcli sync for explicit synchronization. 4. Use gzcli watch start for iterative development after the base layout is correct.