STD-018: Training Session Curriculum

The standard format for training track curricula in the education system. 8 active tracks (regex, jq, python, lua, nvim, etl, monad, tmux) under pages/education/training/. Each track is a structured, phased learning progression with estimated durations. Extracted from training track audit revealing inconsistent structure across tracks (Apr 2026).

Principles

  1. Every track has a contract. The index.adoc declares what the track teaches, how long it takes, and what order to follow. A learner reads the index and knows exactly what they are committing to.

  2. Sessions are atomic. Each session file covers one focused topic in one sitting. If a session exceeds 90 minutes, it should be split.

  3. Duration is estimated, not aspirational. Estimate based on actual session experience. Update after completing a session if the estimate was wrong.

  4. Phases show progression. Sessions are grouped into phases that represent learning milestones. Phase boundaries mark shifts in difficulty or domain.

  5. Drills are practice, not instruction. Drill files contain exercises. Explanation of concepts belongs in session files.

Requirements

The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" are used per RFC 2119.

  1. Every training track MUST have an index.adoc containing: training philosophy, sessions table, and total curriculum time.

  2. Session files MUST use sequential numbering: 01.adoc, 02.adoc, through NN.adoc.

  3. Every session MUST have an estimated duration in minutes.

  4. The sessions table MUST organize sessions into named phases showing learning progression.

  5. Drill files (if applicable) MUST use drill-NN.adoc naming within the track directory.

  6. Drill examples MUST be stored in examples/<track>-drills/ and included via include::example$.

  7. Guide files (if applicable) MUST be listed in the index with a one-line purpose description.

  8. Session status MUST use one of three values: Not Started, In Progress, Complete.

Session Status Values

3 permitted values. No others.

Status Definition Icon

Complete

Session finished, exercises done

βœ…

In Progress

Session started, not yet finished

🟑

Not Started

Session not yet attempted

❌

Directory Layout

pages/education/training/<track-name>/
β”œβ”€β”€ index.adoc              # REQUIRED -- track overview, session table
β”œβ”€β”€ 01.adoc                 # Session 1
β”œβ”€β”€ 02.adoc                 # Session 2
β”œβ”€β”€ ...
β”œβ”€β”€ NN.adoc                 # Session N
β”œβ”€β”€ drill-01.adoc           # OPTIONAL -- drill exercises
β”œβ”€β”€ drill-NN.adoc
└── guide-<topic>.adoc      # OPTIONAL -- supplementary guides

partials/education/training/<track-name>/
β”œβ”€β”€ index.adoc              # Track overview partial
β”œβ”€β”€ 01.adoc                 # Session content partial
└── ...

examples/<track>-drills/
β”œβ”€β”€ drill-01-<topic>.adoc   # Drill exercise content
└── drill-NN-<topic>.adoc

Index Template

The track index partial MUST follow this structure:

[.lead]
One-line description of the training track's scope and purpose.

== Training Philosophy

. First principle guiding this track's pedagogy
. Second principle
. Third principle
. Fourth principle (if applicable)

== Curriculum

=== Phase 1: <Phase Name>

<Brief description of what this phase covers and the skill level it targets.>

[cols="1,3,2,1"]
|===
| Session | Focus | Duration | Status

| xref:education/training/<track>/01.adoc[01]
| Topic of first session
| 45 min
| βœ… Complete

| xref:education/training/<track>/02.adoc[02]
| Topic of second session
| 60 min
| 🟑 In Progress

| xref:education/training/<track>/03.adoc[03]
| Topic of third session
| 45 min
| ❌ Not Started
|===

=== Phase 2: <Phase Name>

<Brief description of phase 2 scope.>

[cols="1,3,2,1"]
|===
| Session | Focus | Duration | Status

| xref:education/training/<track>/04.adoc[04]
| Topic
| 60 min
| ❌ Not Started
|===

== Drills

// OPTIONAL -- include only if the track has drill exercises

[cols="1,3"]
|===
| Drill | Purpose

| xref:education/training/<track>/drill-01.adoc[Drill 01]
| What this drill practices

| xref:education/training/<track>/drill-02.adoc[Drill 02]
| What this drill practices
|===

== Guides

// OPTIONAL -- include only if the track has supplementary guides

[cols="1,3"]
|===
| Guide | Purpose

| xref:education/training/<track>/guide-<topic>.adoc[Guide Title]
| What this guide covers and when to reference it
|===

== Total Curriculum Time

**NN sessions across N phases -- approximately X hours Y minutes.**

Session File Template

Each session partial MUST follow this structure:

[.lead]
One-line description of what this session covers.

== Objectives

* What the learner will be able to do after this session
* Second objective
* Third objective

== Concepts

Explanation of the session's core concepts.

== Examples

include::example$<track>-drills/<example-file>.adoc[]

// Or inline if 10 lines or fewer:

[source,bash]

short example here

== Exercises

. First exercise with clear instructions
. Second exercise
. Third exercise

== Key Takeaways

* Most important thing learned
* Second takeaway

Active Tracks

Track Scope Sessions Status

regex

Regular expressions — PCRE, lookaheads, capture groups

Varies

Active

jq

JSON processing — filters, functions, pipelines

Varies

Active

python

Python fundamentals and standard library

Varies

Active

lua

Lua scripting for Neovim and general use

Varies

Active

nvim

Neovim mastery — motions, plugins, Lua config

Varies

Active

etl

Data extraction, transformation, loading pipelines

Varies

Active

monad

Functional programming patterns and monadic design

Varies

Active

tmux

Terminal multiplexer mastery

Varies

Active

Compliance Checklist

# Check Result

1

Track has index.adoc with philosophy, sessions table, and total time

PASS / FAIL

2

Session files use sequential numbering (01.adoc through NN.adoc)

PASS / FAIL

3

Every session has estimated duration in minutes

PASS / FAIL

4

Sessions are organized into named phases

PASS / FAIL

5

Session status uses controlled vocabulary (Complete, In Progress, Not Started)

PASS / FAIL

6

Drill files (if any) use drill-NN.adoc naming

PASS / FAIL

7

Drill examples stored in examples/<track>-drills/

PASS / FAIL

8

No :toc: attributes in any file

PASS / FAIL