--- name: course-generator description: Guides the agent in planning, interviewing, and writing detailed technical art/programming courses and complementary NotebookLM podcast scripts. Use this skill when a user asks to create a new course or write additional lessons/podcast notes. --- # Course Generator Skill This skill governs the systematic workflow and styling specifications for writing technical courses and corresponding NotebookLM podcast notes, modeled on the Unity Technical Art, Capture Pipelines, and FishNet courses. --- ## 1. Collaborative Curriculum Development Workflow To create a new course, you must follow this interactive phase-based workflow. Do not skip phases. ### Phase 1: Intake & Research 1. **Collect Topic & Scope**: The user provides the core topic, a target number of lessons (depth), and a stream-of-thought knowledge dump. 2. **Identify Knowledge Gaps**: Perform deep research on the topic to identify implicit gaps in the user's stream-of-thought dump (e.g., hardware constraints, optimization details, thread limits). 3. **Formulate Planning Document**: Outline the core technical concepts that must be covered to bridge those gaps. ### Phase 2: Interactive Planning (The Interview) 1. **Interview the User**: Run a back-and-forth planning session (recommend the `/grill-me` command to the user if helpful). Ask targeted questions about their specific goals, target platform (e.g., WebGL, VR, mobile), and any specific project scenarios they want as case studies. 2. **Propose Lesson Plan**: Present a complete list of lessons with names and brief summaries of what each will cover. 3. **Obtain Approval**: Wait for the user to approve the syllabus before writing any lessons. ### Phase 3: Incremental Drafting & Steering 1. **Draft In Batches**: Write only **1 or 2 lessons at a time**. 2. **Maintain the Concurrent Invariant**: For each lesson written, you **MUST** draft both the **HTML lesson file** and the **Markdown podcast notes** concurrently. Do not move on to Lesson N+1 until Lesson N's HTML and podcast files are both finalized and reviewed. 3. **User Audit**: After each batch, present the lessons to the user. Allow them to steer, correct, and audit the technical depth before starting the next batch. --- ## 2. Lesson Document Specifications (HTML) New lessons must be placed in the `lessons/` directory of the course folder and use the shared `css/style.css` stylesheet. Choose one of two structural patterns: ### Pattern A: Standard/Foundational Lessons (Preferred for Lectures 1-10) - **Wrapper**: `
` - **Header**: ```html
Lesson XX

Lesson Title

Brief description of the lesson topic.

``` - **Sections**: Use `

` for top-level topics (3-6 per lesson) and `

` or `

` for sub-sections. - **Visuals (ASCII Diagrams)**: Every lesson must include 1-3 detailed ASCII block diagrams wrapped in `
`. Use box-drawing characters (`┌─┐`, `→`, `│`). - **Callout Boxes**: Integrate 2-4 `.callout` boxes using these specific classes: - `.callout-concept` (🧠 Key Concept) - for core mental models. - `.callout-important` (💡 Important) - for design rules or critical requirements. - `.callout-warning` (⚠️ Common Pitfall) - for debugging advice/traps. - `.callout-tip` (💚 [Project/Job] Relevance) - for practical context matching the user's specific target project (e.g., "WebGL Relevance"). - **Tables**: Use standard `` elements with styled headers for structured comparison tables. - **Key Takeaways**: Close the lesson with: ```html

Key Takeaways

  • Key Term: Short summary.
``` - **Navigation**: Include the navigation footer: ```html ``` ### Pattern B: Applied/Late Lessons (Preferred for Extensions & Advanced Projects) - **Wrapper**: `
` - **Header**: Plain `

Lesson XX: Title

` - **Sections**: Use `
` tags. The first section should be `
` acting as a summary card. - **Comparison Grids**: Replace callout boxes with comparison grids: ```html

The Efficient Way

...

The Slow Way

...

``` - **Code Focus**: Focus on complete script samples (e.g., HLSL kernel + C# manager) inside `
...
`. - **Takeaways**: Use `

Key Takeaways

    ...
`. - **Navigation**: Use `
` matching standard Pattern B links. --- ## 3. Podcast Document Specifications (Markdown) Podcast notes must be stored in the `notebook_lm_notes/` directory as Markdown (`.md`) files. They are designed as input files for Google NotebookLM to generate audio dialogues. ### General Characteristics - **Word Count**: Keep files between **500 and 950 words**. - **Voice & Tone**: Written in the style of an expert university tutorial teacher (TA) helping students digest the professor's lecture notes. It is supportive, enthusiastic, highly practical, and clear. - **Dialogue-Ready Prose**: Write in paragraph form, but use conversational transitions and rhetorical questions that naturally translate into a dynamic, two-host audio conversation. * *Example*: "Let's start with a question that seems almost too basic...", "Now here's the catch...", "This is where the magic happens." ### Pedagogical Invariants 1. **Analogy-Heavy**: Every script must use at least one strong, intuitive real-world analogy to explain a complex technical concept. * *Examples*: A painter changing brushes for draw calls; a roll of painter's tape for the stencil buffer mask; a dumb packet bouncer for a relay connection. 2. **Concept to Mechanic Pipeline**: Start with a high-level conceptual description ("What is a shader?"), then map it directly to code implementation details (e.g., "In your C# code, you call `SetTexture`..."). Never read lines of code verbatim, but explain exactly what the API commands do. 3. **Project Relevance**: Tie the concepts to the user's specific project or deployment target (e.g., explaining why WebGL's single-threaded nature in browser environments means main-thread bloat freezes the entire application). ### Markdown Structure ```markdown # Lesson XX: Title ## The Big Picture [A conversational opening hook connecting the concept to a real-world problem or everyday scenario] ## [Sub-Topic 1] [Conceptual explanation + bolded terms + core analogy] ## [Sub-Topic 2] [Deeper mechanics, API interactions, and code behavior] ## [Sub-Topic 3 - Target Project/Context Relevance] [Specific details about how this affects the target project, platform limits, or common interview questions] ## Key Takeaways 1. **Takeaway 1**: Concise summary. 2. **Takeaway 2**: Concise summary. 3. **Takeaway 3**: Concise summary. ``` --- ## 4. Cheat Sheet Specifications (HTML) A course must include a single, consolidated **Cheat Sheet** saved as `cheatsheet.html` in the root of the course folder. This serves as an interview cram sheet. ### General Characteristics - **Purpose**: To provide a highly dense, scannable overview of all lessons in the course. It should contain enough technical details, definitions, and code syntax that a student could study just this sheet and pass a technical interview. - **Layout**: Uses a compact, multi-column grid layout (`.cheat-grid` and `.cheat-section`) with internal custom styling. - **Printability**: Includes print-friendly styles (`@media print`) that remove navigation bars and ensure clear print-outs. ### CSS Styles (Embedded `