Step-by-step guide for AI to develop high-quality courses. Every course must follow this process exactly. No steps may be skipped.
Also load the
course_generationskill for the 11-phase generation cycle with artifact templates. This handbook covers the overall development process; the skill covers the generation details.
Use this to determine which phases to run:
New course from scratch?
→ Run ALL phases (0-7)
Adding a single concept to existing course?
→ Skip Phase 0 (scoping)
→ Run Phases 1-7 for the new concept only
Fixing a bug in existing content?
→ Skip Phases 0-3
→ Run Phase 4 (generation) for the fix
→ Run Phase 5 (verification) for the fix
→ Run Phase 6 (adversarial) only if fix is major
Reviewing existing content?
→ Skip Phases 0-4
→ Run Phase 5 (verification) fully
→ Run Phase 6 (adversarial) fully
| Phase | Name | Time (full course) | Time (single concept) | Can Skip? |
|---|---|---|---|---|
| 0 | Topic Scoping | 1-2 hours | No | Only if adding to existing course |
| 1 | Knowledge Extraction | 2-4 hours | 30-60 min | No |
| 2 | Curriculum Design | 2-3 hours | 10-20 min | Only if concept order is fixed |
| 3 | Learning Design | 2-3 hours/concept | 20-40 min | No |
| 4 | Content Generation | 4-8 hours/module | 60-120 min | No |
| 5 | Verification | 4-6 hours/module | 30-60 min | No |
| 6 | Adversarial Review | 2-4 hours/module | 15-30 min | No |
| 7 | Publication | 1-2 hours | 15-30 min | No |
Total for a 10-concept course: ~40-80 hours Total for a single concept: ~3-6 hours
Answer these questions:
- What is the subject? (e.g., "ELF — Executable and Linkable Format")
- Why does it exist? (What problem does this knowledge solve?)
- Who is the target learner? (Programmer wanting to understand binaries? Security researcher? Compiler engineer?)
- What are the prerequisites? (What must the learner already know?)
- What will the learner be able to DO after completing this course?
- How long should the course take? (Estimated hours)
- Find the authoritative specification (gABI for ELF, RFC for TLS, etc.)
- Find 2-3 reputable secondary sources (books, articles)
- Find authoritative source code (Linux kernel, LLVM, etc.)
- Create a
research/directory with source material
{
"id": "elf",
"title": "ELF — Executable and Linkable Format",
"version": 1,
"description": "Understand the ELF binary format from first principles",
"prerequisites": [],
"estimated_hours": 20,
"target_learner": "Programmer who wants to understand how binaries work",
"learning_outcomes": [
"Read and interpret ELF headers",
"Understand program headers and segments",
"Understand section headers and sections",
"Explain how linking and loading work",
"Write a basic ELF parser"
],
"research_sources": [
{
"type": "specification",
"title": "System V Application Binary Interface",
"url": "https://refspecs.linuxfoundation.org/elf/elf.pdf",
"sections": ["1-8"]
}
]
}Read the relevant sections of the specification. For each section, extract:
- All definitions (what things ARE)
- All requirements (what things MUST be)
- All constraints (what things CANNOT be)
- All optional features (what things MAY be)
- Version-specific behavior
- Architecture-specific behavior
List every concept the learner must understand. For each concept:
{
"id": "elf-header",
"title": "ELF Header",
"definition": "The ELF header is the first structure in an ELF file...",
"purpose": "The ELF header tells the system how to process the file",
"who_produces": "The compiler/linker",
"who_consumes": "The loader, static linker, debugger",
"depends_on": ["bytes", "binary-representation", "file-layout"],
"depends_on_by": ["program-headers", "sections", "symbols"],
"if_invalid": "The loader rejects the file",
"if_missing": "The file cannot be processed at all",
"edge_cases": ["32-bit vs 64-bit", "big-endian vs little-endian", "ET_DYN vs ET_EXEC"],
"misconceptions": [
"The ELF header is at offset 0 (TRUE, but the e_phoff field is what matters for program headers)",
"The entry point is always the start of main() (FALSE — it's _start, which calls __libc_start_main)"
],
"specification_section": "ELF Identification, ELF Header",
"specification_page": "4-5"
}Map all concepts and their dependencies. Check for:
- Circular dependencies (FORBIDDEN)
- Prerequisite avalanches (too many prerequisites for one concept)
- Concepts that depend on concepts not yet taught
For each concept, ask:
- "What would an intelligent beginner probably misunderstand here?"
- "What is the most common confusion with similar terminology?"
- "What implementation detail might someone mistake for a specification requirement?"
- "What simplified model might someone take too literally?"
Document each misconception with:
- The misconception itself
- Why it's wrong
- How to prevent it
- How to detect it (exercise targeting it)
Topologically sort concepts by prerequisites. The result is a linear order where every concept appears after all its prerequisites.
Group related concepts into modules (3-6 concepts per module). Each module should:
- Have a clear theme
- Build on the previous module
- Contain concepts that are learned close together
For each concept, estimate:
- Lesson time: 15-25 minutes
- Exercise time: 5-10 minutes
- Review time: 2-5 minutes (first time)
{
"modules": [
{
"id": "fundamentals",
"title": "Fundamentals",
"order": 1,
"concepts": ["bytes", "binary-representation", "file-layout"],
"estimated_minutes": 45
},
{
"id": "elf-header",
"title": "ELF Header",
"order": 2,
"concepts": ["identification", "header-fields", "entry-point"],
"estimated_minutes": 45
}
]
}For each concept, design 8 learning units following the pattern:
- State the problem this concept solves
- Explain what would go wrong without it
- Connect to something the learner already knows
Template:
Before [concept], consider what happens when [problem]. Without [concept], [bad thing]. [Concept] exists because [reason].
- Provide a simplified mental model
- Explicitly mark it as simplified
- Give it a name the learner can reference
Template:
For now, think of [concept] as [simple model]. This is useful because [reason]. But this model is incomplete — [what it misses]. We'll fix that next.
- Provide the actual technical detail
- Reference the specification directly
- Use precise terminology
Template:
The specification says [exact quote or paraphrase with section reference]. In detail: [technical explanation]. The key fields are: [list with sizes and offsets].
- Show a concrete, verifiable example
- Use real bytes, real hex dumps, real structures
- Walk through the example step by step
Template:
Here is an actual [example]. Let's walk through it: [step-by-step walkthrough]. Notice [key detail]. This corresponds to [specification reference].
- Launch an interactive exercise or visualization
- Let the learner manipulate the concept
- Provide immediate feedback
Template:
[Interactive element]. Try it yourself. [Instructions]. What do you notice? [Observation prompt].
- Ask a free-recall question (NO hints)
- Wait for the learner's answer
- Then show the correct answer
Template:
Without looking back: [question]. (Pause for recall.) The answer is: [answer]. If you got it wrong, that's okay — the act of trying to recall strengthens your memory.
- Present an exercise that uses the knowledge
- Require the learner to apply, not just recognize
- Provide detailed feedback
Template:
[Exercise prompt]. Think about what you learned. [Hints if needed]. [Feedback on answer].
- Explain how this concept relates to others
- Preview what's coming next
- Show the concept's position in the knowledge graph
Template:
This connects to [related concept] because [reason]. Next, we'll learn [next concept], which builds on [what we just learned].
For each concept, create 4-6 exercises:
| Type | Count | Purpose |
|---|---|---|
recall |
1-2 | Free recall ("What is X?") |
recognize |
1-2 | Multiple choice ("Which of these is X?") |
apply |
1-2 | Use the knowledge ("Given this, find X") |
debug |
1 | Find errors ("This is wrong. Why?") |
For each exercise, specify:
- The question (clear, unambiguous)
- The correct answer (verified against specification)
- 3-4 wrong answers (plausible, targeting specific misconceptions)
- The explanation for each answer (WHY it's right or wrong)
- The misconception it targets
From the concept, generate 5-8 review items:
| Type | Front | Back |
|---|---|---|
recall |
"What is X?" | Definition |
recognize |
"Which of these is X?" | Correct option |
apply |
"Given this hex dump, find X" | Solution with explanation |
explain |
"Why does X exist?" | Explanation of purpose |
For each concept that benefits from visualization:
- State the learning objective
- Describe the visualization type
- Specify the interaction model
- Define the data source
For each concept, write the 8 learning units in Chemical source format.
Constraints during generation:
- Every factual claim must cite a source or be marked
[UNVERIFIED] - Every byte sequence, offset, or size must be verified against the specification
- Every example must be testable (compile, run, verify)
- Never invent plausible-looking technical data
- Always distinguish specification facts from implementation details
- Mark simplified models explicitly
For each exercise:
- Write the question
- Write the correct answer
- Write 3-4 wrong answers with specific feedback
- Verify the correct answer against the specification
- Verify the wrong answers are plausible enough to be educational
For each review item:
- Write the front (question)
- Write the back (answer)
- Verify the answer is correct
- Ensure the question is answerable from the lesson content
For each visualization:
- Write the Chemical code
- Test it renders correctly
- Verify the data matches the specification
- Ensure interactions work
For every technical claim in the course:
- Is this in the specification? Which section?
- Is this version-specific? Which version?
- Is this architecture-specific? Which architecture?
- Are byte layouts, offsets, and sizes correct?
- Does the example actually work?
- Are there edge cases I'm hiding?
Verification command:
# For ELF examples
readelf -h sample.elf # Compare with course explanation
xxd sample.elf | head # Verify byte sequencesFor every concept:
- Does it explain WHY before WHAT?
- Does it build a mental model before demanding memorization?
- Does it connect to other concepts?
- Is complexity broken into digestible pieces?
- Does it include active recall?
- Are exercises testing understanding, not just recognition?
For every exercise:
- Is the correct answer actually correct?
- Is the question unambiguous?
- Is it solvable with the information provided?
- Does the explanation accurately describe why?
- Does it target a specific misconception?
- Are wrong answers plausible?
For the entire course:
- No contradictions between sections
- Terminology is consistent
- Prerequisites are established in order
- Simplifications are explicitly marked
- No concept introduced without prerequisites
Review from the perspective of a domain expert:
- What important details are omitted?
- What simplifications are dangerous?
- What examples are misleading?
- Where would an expert object?
Review from the perspective of a beginner:
- What is confusing?
- What assumed knowledge is missing?
- What terminology is unclear?
- Where would I get stuck?
Review from the perspective of a test author:
- Which exercises test memorization rather than understanding?
- Which questions are ambiguous?
- Which explanations are technically correct but pedagogically poor?
Fix all critical and major issues found during adversarial review. Re-verify fixes are correct.
- All phases completed
- All critical issues fixed
- All major issues fixed
- All technical claims verified
- All exercises tested
- All review items verified
- Course manifest complete
- All files in correct directory structure
Set the version number:
- 1.0.0 — First publication
- 1.0.x — Typo fixes, minor corrections
- 1.x.0 — New exercises, content corrections
- x.0.0 — New concepts, major restructuring
# Verify course structure
ls courses/elf/
# manifest.json concepts/ exercises/ visualizations/ assets/ reviews/
# Build and test
cmake-build-debug/TCCCompiler courses/elf/chemical.mod -o build/elf-course.exe --mode debug_quick
./build/elf-course.exe # Verify it renders correctlyTrack these metrics for each course:
| Metric | Target |
|---|---|
| Technical accuracy | 100% verified claims |
| Exercise correctness | 100% correct answers |
| Concept coverage | 100% of identified concepts taught |
| Prerequisite correctness | 100% of prerequisites taught before use |
| Misconception coverage | 100% of identified misconceptions addressed |
| Review item count | 5-8 per concept |
| Exercise count | 4-6 per concept |
| Lesson time | 15-25 minutes per concept |
| Adversarial issues | 0 critical, 0 major after review |
All templates are in the course_generation skill. Here's a quick reference:
| Template | Location | When to Use |
|---|---|---|
research.md |
course_generation/SKILL.md Phase A |
Research phase output |
concepts.json |
course_generation/SKILL.md Phase B |
Knowledge extraction output |
curriculum.json |
course_generation/SKILL.md Phase C |
Curriculum design output |
learning-design.json |
course_generation/SKILL.md Phase D |
Learning design output |
verification.md |
course_generation/SKILL.md Phase F |
Technical verification output |
pedagogy-review.md |
course_generation/SKILL.md Phase G |
Pedagogical critique output |
interaction-review.md |
course_generation/SKILL.md Phase H |
Interaction review output |
consistency-review.md |
course_generation/SKILL.md Phase I |
Consistency review output |
final-review.md |
course_generation/SKILL.md Phase J |
Final review output |
revision-log.md |
course_generation/SKILL.md Phase K |
Revision log output |
.ch file template |
course_writing/SKILL.md |
Writing concept pages |
manifest.json |
course_architecture/SKILL.md |
Course manifest |
- Copy the template — don't try to memorize the structure
- Fill in all sections — empty sections are incomplete work
- Mark unknowns — use
[UNVERIFIED]or[NEEDS RESEARCH] - Version your artifacts — track what changed between iterations