Training Registry¶
Single source of truth for all learning assets in this repo.
Files¶
| File | Purpose |
|---|---|
assets.yaml |
Canonical index of every learning asset (topic pack, scenario, lab, etc.) |
topics.yaml |
Topic taxonomy with canonical names and aliases |
levels.yaml |
Level definitions (L0-L3) with expectations |
Schema: assets.yaml¶
Each entry in assets.yaml follows this schema:
- id: string # unique kebab-case identifier
title: string # human-readable title
path: string # relative path from repo root
level: L0|L1|L2|L3 # difficulty/progression level
domain: string # linux|networking|datacenter|k8s|devops|cli|observability|security
topics: [string] # tags from topics.yaml (DNS, TLS, VLAN, jq, systemd, etc.)
asset_type: string # topic_pack|scenario|lab|runbook|assessment|drill|cheat_sheet|exercise_set
estimated_time: string # e.g. "30m", "2h"
prerequisites: [string] # list of asset ids
status: draft|solid # content maturity
Usage¶
# Generate portal pages from registry
python3 tools/gen_portal.py
# Validate registry (paths exist, links resolve, levels valid)
python3 tools/validate_registry.py
Rules¶
- Every learning-facing asset must have an entry in
assets.yaml - Portal pages are generated from this registry -- do not hand-edit portal/levels.md or portal/topics.md
- Topics must exist in
topics.yamlor be flagged as "new tags" by the validator - Paths must resolve to real files/directories