Skip to content

挑戰範例(Challenge Authoring Quickstart)

本範本(netsim-template)僅內附一個 canonical 範例挑戰:01 — Ethernet Basics。下游 fork 採用本範本後,請依以下流程新增自己的挑戰。

目錄結構

docs/challenges/
├── index.md                    ← 本檔(挑戰範例首頁)
├── 01-ethernet-basics/         ← canonical 範例
│   ├── config.yaml             ← 挑戰結構(topology、protocols、events、flag、win_condition)
│   └── index.md                ← 挑戰故事與 hints
├── flags.secret.yaml.example   ← flag 秘鑰檔範本(提交時請複製為 flags.secret.yaml 並加進 .gitignore)
└── <你的新挑戰>/                ← 依範例結構新增

新增一道挑戰的步驟

  1. 複製 01-ethernet-basics/ 為新目錄(命名建議 NN-slug 形式,例如 02-arp-poisoning/)。
  2. 編輯 config.yaml:依 docs/dev/extending.md 的 DSL v2 規範撰寫 metadata、topology、protocols、events、win_condition。
  3. 編輯 index.md:撰寫挑戰故事、目標、提示。
  4. flags.secret.yaml 加入新挑戰的 flag 對應。
  5. pnpm validate:challenges 確認 schema 通過。
  6. .vitepress/config.mtssidebar['/challenges/'] 加入新挑戰連結。
  7. pnpm docs:dev 在本地預覽。

進一步閱讀