This directory contains the source content for each delivery session module. The build script (docs/build.js) reads from here — never from docs/ directly.
modules/
├── _TEMPLATE/ ← copy this when authoring a new challenge
│ └── challenge/
│ ├── meta.yml ← all fields with comments
│ ├── README.md ← customer delivery team guide template
│ └── COACH.md ← coach guide template
│
├── ghec/ ← GitHub Enterprise Cloud (35 activities)
│ └── challenges/
│ └── <slug>/ ← one directory per challenge
│ ├── meta.yml
│ ├── README.md
│ └── COACH.md
│
├── ghas/ ← GitHub Advanced Security (7 challenges: S00–S06)
│ ├── setup.md ← how to run Juice Shop
│ └── challenges/
│
├── ghaw/ ← GitHub Agentic Workflows (19 activities)
│ └── challenges/
│
└── sre-agent/ ← SRE Agent (5 challenges)
├── resources/ ← vendored assets (212 KB)
└── challenges/
Use a short, descriptive, kebab-case slug as the directory name. Examples:
ch01-issues-labels-projects01-explore-attack-surface01-morning-briefing00-setup
The directory name is used only for human navigation. The canonical identifier is id in meta.yml.
The curated GHAW catalog intentionally has gaps at ghaw-04, ghaw-05, ghaw-13, and ghaw-15; IDs remain stable when activities are removed.
- Copy
_TEMPLATE/challenge/tomodules/<moduleId>/challenges/<your-slug>/. - Fill in
meta.yml(seeCONTRIBUTING.mdfor the full field contract). - Write
README.md(customer delivery team guide) andCOACH.md(coach guide). - Run
node docs/build.jsto validate.
For information on how external dependencies (Juice Shop, source delivery session repos, sample apps) are managed and pinned, see docs/EXTERNAL-REPOS.md.