Skip to content

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

  1. Every learning-facing asset must have an entry in assets.yaml
  2. Portal pages are generated from this registry -- do not hand-edit portal/levels.md or portal/topics.md
  3. Topics must exist in topics.yaml or be flagged as "new tags" by the validator
  4. Paths must resolve to real files/directories