--- name: course-design description: "Design and revise a course's goal, progression, prerequisites, and sources. Record depth and duration, validate and enroll course.json, then hand the current topic to lesson-design." --- # Course design Use this skill when a learning goal needs several sessions or a sequence of prerequisites. Answer a small local question directly in chat. For a course, design the progression from the learner's starting point to the agreed goal. Lesson design develops each topic into a complete lesson. ## Establish depth and duration Before designing, establish how deeply the learner wants to study and how much time they have. Ask for whichever information they have not already provided. Record both in `course.json`: - `depth`: `survey` for understanding the central ideas and connections, `working` for applying them independently, or `mastery` for justifying methods and examining their limits. - `length`: the learner's intended duration, such as one session, six weeks, or a term. Use these answers to choose the scope, pace, research, and useful media. A shorter course should cover fewer ideas well rather than abbreviating every explanation. ## Research and plan the course Read [course-research.md](references/course-research.md). Consult accessible books, course materials, or documentation to check prerequisites, definitions, and suitable exercises. Record what you actually opened and which sections the course will use. When a current topic or its blocking prerequisite might have a Khan Academy resource, send lesson design to check [the Khan Academy skill](../khan-academy/SKILL.md). Record the verified item as a course source, add its ID to that topic's `resource_ids`, add the Khan skill route to the topic's `skill_routes`, and use representation kind `khan` when the plan names one; leave clip selection and placement to lesson design. Do not expand the course around a broad Khan match when the learner needs one bridge. Read [course-contract.md](references/course-contract.md) and write `course.json`. Organize chapters and topics so their outcomes build toward the course goal. Identify the current topic and leave uncertain later topics provisional. Read the selected subject guide through `skills/subject/SKILL.md` and its assigned teacher's `SOUL.md` when one exists. Use its matching subfield to check the starting case, difficult distinction, and evidence the topic needs. Leave media, worked examples, and block order to lesson design using [representation choices](../lesson-design/references/representation-choices.md). Keep existing representation plans binding until explicitly revised; new plans need not prescribe media before the lesson's reasoning is developed. ## Validate and enroll Validate the plan and enroll it in the same turn: ```bash python3 skills/course-design/scripts/validate_course.py python3 skills/learner-tracking/scripts/learner_state.py init python3 skills/learner-tracking/scripts/learner_state.py enroll --course ``` Use the learner's name, or `learner` when no name was given. Confirm that the canonical workspace at `learners//courses//course.json` exists before handing the topic to lesson design. Do not stop at saving a plan under `outputs/`; enroll it so lesson design can use the canonical course. Briefly explain the course goal, agreed depth and duration, and current topic. Describe what the current topic will help the learner understand. Use enough detail to make the plan understandable without reciting its fields. ## Hand the current topic to lesson design After enrollment, continue with [lesson-design](../lesson-design/SKILL.md). Read its [teaching reference](../lesson-design/references/lesson-design.md) and load the current topic, teacher, subject guidance, and learner evidence. When using the context loader, switch to lesson authoring explicitly: ```bash python3 skills/learning-orchestrator/scripts/assemble_context.py --subject \ --learner --course-id --mode lesson ``` Lesson design must develop and review the explanation before publishing a ready lesson. Do not turn topic outcomes or representation purposes into short paragraphs and call that the lesson. Its finished content belongs in `lessons//lesson.json`. Course design stops authoring at the plan; the same host continues the work under lesson design's instructions. ## Show the finished lesson **Ask "Do you want to see the course now?" unless the learner already requested or approved it. This question controls opening the page, not whether lesson design runs. On yes, use [course-viewer](../course-viewer/SKILL.md) and render** ```bash python3 skills/course-viewer/scripts/render_viewer.py learners//courses/ --require-current-lesson ``` Return the `portal/` link with the current lesson to open. An explicit request for only an outline may render before a lesson exists; identify that result as the course outline. For teaching, complete the lesson handoff before delivering the page. Re-render after changes to the lesson or its artifacts. If lesson design discovers a missing concept, source, or topic boundary, revise that part of the course. Record the reason in `revision_notes`, validate and enroll the revised plan, then return to lesson design. A media change stays with lesson design unless it changes a binding representation plan. Use learner evidence to revise future topics as the course progresses. Preserve stable IDs and record why the sequence, sources, or scope changed, following [course-contract.md](references/course-contract.md).