← Skills Library
Build & Deploy

Academy Track

Generate a complete Academy track: N lessons with quizzes, wired into tracks.ts, MDX pages built and tested, PR created. Repeatable pattern for any topic.

How It Works

Academy Track · Workflow
Lessons with diagrams + challenges, wired in, built, sanitized, PR'd.
TriggerTopic or outline · Generate a full N-lesson Academy track
1
Write the lessons
MDX · ≥3 quizzes · ≥2 bespoke diagrams · BuildChallenge
2
Register the track
tracks.ts · tiers.ts · exams.ts · diagram + challenge exports
3
Build + testGATE
tsc --noEmit · vitest · npm run build compiles every MDX
failFix unregistered diagrams / blank challenges / counts
4
Sanitize gateGATE
verify-pii.py + verify-codenames.py — no leaks
failRedact PII · genericize internal codenames
Create PR · Merge → Vercel deploy + Discord announce cron fires
  1. Topic or outline: Generate a full N-lesson Academy track
  2. Write the lessons: MDX · ≥3 quizzes · ≥2 bespoke diagrams · BuildChallenge
  3. Register the track: tracks.ts · tiers.ts · exams.ts · diagram + challenge exports
  4. Build + test: tsc --noEmit · vitest · npm run build compiles every MDX
  5. Sanitize gate: verify-pii.py + verify-codenames.py — no leaks
  6. Create PR: Merge → Vercel deploy + Discord announce cron fires
ↆ download card

Invocation Triggers

/academy-tracknew trackacademy lessoncreate trackcreate course

Use Cases

  • Generate a full course track from a topic outline
  • Add a new lesson to an existing Academy track
  • Build an MDX-based educational module with quizzes and exercises

The Problem

Writing a course track by hand is the slowest kind of busywork. Every lesson needs prose, three application-style quiz questions, two diagrams that actually teach, and a runnable exercise — then all of it has to be wired into tracks.ts, tiers.ts, exams.ts, and the integrity tests without breaking the build. Skip the diagrams and you have a wall of text. Skip the registration and the lesson renders to nothing with no error. Academy Track does the whole assembly line and refuses to call a thin lesson done.

What It Does

  1. 1
    Define the track

    Lock the name, slug, tier, lesson count, diagram prefix, and which lessons get a BuildChallenge. The next free lesson block is read off disk so numbering never collides.

  2. 2
    Write each lesson MDX

    Per lesson: 800 to 2000 words of concrete teaching, three or more application-style quiz questions with explanations, a doctrine callout, and both bespoke diagrams rendered in the body. Prose-only does not pass.

  3. 3
    Build diagrams and challenges

    Each diagram is a hand-built React component in the house palette — grids, flow arrows, decision trees, not styled bullet lists. Hands-on lessons get an id-based BuildChallenge with a real stub, TODOs, and a correct reference solution.

  4. 4
    Wire into the registry

    Export every diagram in index.ts, register the challenge module in buildChallenges.ts, append the track to tracks.ts, add the slug to its tier in tiers.ts, and bump the exact lesson and track counts the integrity tests assert.

  5. 5
    Build, test, sanitize

    Run tsc, vitest, and npm run build — the build compiles every MDX and is the real gate. The PII and codename gates run because the academy is publicly served.

  6. 6
    Open the PR

    Branch, commit the content plus all registration files, and open the PR. On merge, Vercel deploys and the date-stamped lessons fire the ingest and Discord announce crons.

What You Get / What It Doesn't Do

What you get
  • N lesson MDX files, each with quizzes, two rendered diagrams, and a doctrine callout
  • Hand-built diagram components registered in index.ts
  • An id-based BuildChallenge per hands-on lesson with a correct reference solution
  • tracks.ts, tiers.ts, exams.ts, and integrity counts updated together
  • A PR with the build, tests, and sanitize gates green
What it doesn't do
  • Invent the track scope — it builds the outline you define
  • Sync to ask-knox or the jeremyknox.ai mirror — run academy-sync after merge
  • Pass a lesson that is prose-only or has a blank BuildChallenge
  • Publish internal codenames or infra coordinates — the sanitize gate blocks them

Tips

Reference challenges by id only

RSC MDX drops expression-container props at render, so inline BuildChallenge props render nothing. Put the content in challenges/{slug}.ts and reference id only. A missing key fails silently with no build error.

Bump every asserted count

The integrity tests assert exact lesson and track counts in two files, including the projects-api TRACKS lengths. Forget one and vitest goes red after a clean build.

No dollar-brace inside stubs

Stub and solution are JS template literals, so a bare dollar-brace interpolates and breaks the build. Use string concatenation or escape it.

Get the Skill

Elite SkillELITE

Unlock the full Academy Track SKILL.md — drop it into ~/.claude/skills/ and trigger it by name.

What you unlock
  • N lesson MDX files, each with quizzes, two rendered diagrams, and a doctrine callout
  • Hand-built diagram components registered in index.ts
  • An id-based BuildChallenge per hands-on lesson with a correct reference solution
  • tracks.ts, tiers.ts, exams.ts, and integrity counts updated together
...
Skills Library

29 more production skills ready to install.

Browse All Skills