@weihaoqu/curriculum-designer-skill 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md ADDED
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: curriculum-designer
3
+ description: Helps teachers and instructional designers create a structured curriculum or teaching plan from a list of topics or a specification document. Use when the user wants to design course materials, lesson plans, or a syllabus.
4
+ ---
5
+
6
+ # Curriculum Designer
7
+
8
+ This skill guides the process of creating a structured teaching plan or curriculum from a source document outlining course topics or projects.
9
+
10
+ ## Workflow
11
+
12
+ The process is iterative, tackling one module or topic at a time to ensure clarity and gather focused feedback.
13
+
14
+ ### 1. Identify Source Material & Goal
15
+
16
+ - **Confirm Goal:** First, confirm with the user that their goal is to create teaching materials, a lesson plan, or a curriculum.
17
+ - **Identify Source:** Ask the user to point to the source material that contains the list of topics (e.g., a project specification markdown file, a list of chapters, etc.). If no source exists, ask the user to provide the list of topics to be covered.
18
+ - **Establish Output File:** Agree on a filename for the final teaching plan (e.g., `teaching-plan.md`).
19
+
20
+ ### 2. The Core Loop (For Each Topic)
21
+
22
+ For each topic/module identified in the source material, follow this structured interview process:
23
+
24
+ #### a. Propose Prerequisites
25
+
26
+ - Analyze the topic and propose a numbered list of 3-5 potential **prerequisites**. These are the foundational concepts a student should know *before* starting the module.
27
+ - Ask the user to select the relevant prerequisite numbers.
28
+
29
+ **Example Prompt:**
30
+ > **Topic: Static Taint Analysis**
31
+ > Please choose the foundational knowledge students should have:
32
+ > 1. Basic API Concepts
33
+ > 2. Graph Theory Fundamentals
34
+ > 3. Data-Flow Analysis Concepts
35
+ > 4. Security Best Practices
36
+
37
+ #### b. Propose Core Concepts
38
+
39
+ - Propose a numbered list of 4-6 **core concepts** that should be taught within the module.
40
+ - Ask the user to select the relevant concept numbers and indicate any that should be emphasized.
41
+
42
+ **Example Prompt:**
43
+ > Please select the core theoretical ideas to be taught:
44
+ > 1. Modeling Privacy Policies as Code
45
+ > 2. Graph Reachability Analysis
46
+ > 3. Relational Reasoning
47
+ > 4. Static API Call Analysis
48
+
49
+ #### c. Propose a Teaching Order
50
+
51
+ - Based on the user's selections, use your reasoning to synthesize a logical **teaching order**.
52
+ - Structure the output as a series of 4-6 "Lessons."
53
+ - For each lesson, include an "Objective" and the "Content" to be covered.
54
+ - **Consult `references/pedagogy.md`** for common teaching patterns (e.g., "Problem-First," "Theory-to-Practice") to create a more effective and logical flow.
55
+
56
+ #### d. User Approval & Refinement
57
+
58
+ - Present the proposed teaching order to the user and ask for their approval. Be prepared to make adjustments based on their feedback.
59
+
60
+ ### 3. Generate the Artifact
61
+
62
+ - Once the user approves the lesson plan for a module, append the well-formatted Markdown for that module to the designated output file.
63
+ - Use clear headings and lists to ensure the final document is readable and well-structured.
64
+
65
+ ### 4. Continue to Next Topic
66
+
67
+ - After saving the progress, move to the next topic in the source material and repeat the core loop.
68
+ - Once all topics are covered, inform the user that the teaching plan is complete.
package/index.js ADDED
@@ -0,0 +1,2 @@
1
+ // This file is intentionally left blank.
2
+ // It serves as the main entry point for the npm package.
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@weihaoqu/curriculum-designer-skill",
3
+ "version": "1.0.0",
4
+ "description": "Helps teachers and instructional designers create a structured curriculum or teaching plan from a list of topics or a specification document. Use when the user wants to design course materials, lesson plans, or a syllabus.",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "files": [
10
+ "SKILL.md",
11
+ "references/"
12
+ ],
13
+ "keywords": [
14
+ "gemini-skill",
15
+ "gemini-cli",
16
+ "curriculum",
17
+ "teaching",
18
+ "education",
19
+ "lesson-plan",
20
+ "instructional-design",
21
+ "ai-agent"
22
+ ],
23
+ "author": "Weihao Qu",
24
+ "license": "ISC",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/weihaoqu/cs336-course-design.git",
28
+ "directory": "curriculum-designer"
29
+ }
30
+ }
@@ -0,0 +1,41 @@
1
+ # Pedagogical Patterns for Curriculum Design
2
+
3
+ This document outlines common pedagogical (teaching) patterns. When designing a lesson plan, refer to these patterns to structure the material in a logical and effective way.
4
+
5
+ ---
6
+
7
+ ### 1. Problem-First (Concrete-to-Abstract)
8
+
9
+ - **Description:** Start with a concrete, relatable, and motivating problem. Let the student grapple with the "why" before introducing the "how." Once the problem is well understood, introduce the abstract theory or tools needed to solve it.
10
+ - **When to Use:** Excellent for introducing a new, complex topic. It immediately establishes relevance and provides a clear goal for the student.
11
+ - **Example Flow:**
12
+ 1. Show a piece of code with a subtle security bug (e.g., a Use-After-Free).
13
+ 2. Manually trace how an attacker could exploit it.
14
+ 3. Ask: "How could we find this bug automatically?"
15
+ 4. Introduce the theory of Path-Sensitive Analysis as the solution.
16
+
17
+ ### 2. Theory-to-Practice (Abstract-to-Concrete)
18
+
19
+ - **Description:** Start by introducing the formal theory, definitions, and framework. Build the intellectual toolkit first, then apply that toolkit to a practical example.
20
+ - **When to Use:** Useful when the practical examples are too complex to understand without knowing the terminology and rules first. Good for more mathematically-inclined topics.
21
+ - **Example Flow:**
22
+ 1. Define a Security Lattice and the rules of information flow (`L ⊑ H`).
23
+ 2. Define the formal typing rules for a security type system.
24
+ 3. *Then*, show a piece of code and use the rules to type-check it and find a violation.
25
+
26
+ ### 3. Scaffolding / Simple-to-Complex
27
+
28
+ - **Description:** Introduce a concept in its simplest possible form. Once the student grasps the basic idea, progressively add layers of complexity, features, or edge cases.
29
+ - **When to Use:** Almost always a good idea. It's the core of good teaching. It avoids overwhelming the student and builds a strong foundation at each step.
30
+ - **Example Flow:**
31
+ 1. **Lesson 1:** Introduce a "Taint Lite" model that only handles direct assignments.
32
+ 2. **Lesson 2:** Add complexity by handling simple expressions (`y = x + z`).
33
+ 3. **Lesson 3:** Add complexity by considering control flow merges (`if/else`).
34
+ 4. **Lesson 4:** Add complexity by considering function calls (interprocedural analysis).
35
+
36
+ ### 4. Recap and Refresh
37
+
38
+ - **Description:** Begin a new module or complex lesson by briefly reviewing the essential concepts from previous lessons that are prerequisites for the current topic.
39
+ - **When to Use:** At the start of every new module that builds on previous ones.
40
+ - **Example Flow:**
41
+ - "In our last module, we discussed Control-Flow Graphs. Today, we'll use that knowledge to build a Control-Flow Integrity checker. As a reminder, a CFG consists of..."