Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Design customized curricula for PODs with REAL resource links. Staged implementation with checkpointing and fallback logic. Use when user says 'Design curriculum', 'Create curriculum for POD', or 'Build learning plan'.
.claude/skills/curriculum-designer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-10 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-03 | ✗→✓ | ▲ Improved | — | — |
| case-14 | ✗→✓ | ▲ Improved | — | — |
Design customized curricula for Apni Pathshala PODs with real YouTube video links.
FEATURES:
When invoked, the agent follows a 5-stage workflow with checkpointing:
| Stage | What Happens | Checkpoint File | |--------|--------------|-----------------| | 1 | Gather requirements | requirements.json | | 2 | Research YouTube videos | research-results.json | | 3 | Verify videos + fallback logic | validated-resources.json | | 4 | Design curriculum (one lesson at a time) | curriculum-structure.json | | 5 | Create Google Sheet | final-sheet-url.txt |
User message contains:
This skill is designed for Madhur (Academic Associate) who designs curricula for PODs.
~/.openclaw/workspace/skills/curriculum-designer/.env (NOT in git)1upJQu-IVmZRJQsNGmJNRzq9IwL67MVL9 (Curriculum Designer)~/.openclaw/workspace/curriculum-designer-checkpoints/YouTube API Key:
YOUTUBE_API_KEY=your_key_hereGet from: https://console.cloud.google.com/apis/credentials
Action: Use different LLM models for different stages to optimize cost and performance.
| Stage | Recommended Model | Reason | |--------|------------------|--------| | Stage 1: Requirements Collection | glm-4.7 | Quick reasoning, sufficient for form filling | | Stage 2: YouTube Research | glm-5 | Fast research, needs latest web knowledge | | Stage 3: Video Validation | glm-4.7 | Pattern matching, simple logic | | Stage 4: Curriculum Design | glm-4.7 | Structured generation, cost-effective for lessons | | Stage 5: Sheet Creation | glm-4.7 | JSON formatting, simple transformations |
Option 1: Specify model when calling agent
bash# Use glm-5 for research stage agent.chat --model glm-5 --message "Research YouTube videos for..." # Use glm-4.7 for design stage agent.chat --model glm-4.7 --message "Generate lesson structure..."
Option 2: Configure in SKILL.md Each stage should include model recommendation in its instructions:
### Stage 2: Research YouTube Resources
**Action:** Search YouTube for videos based on requirements
**Recommended Model:** glm-5 (fast research, latest web knowledge)
**Why:** Research needs up-to-date information and fast processing.Action: Ask the user these questions (from SOP):
Output: Save to checkpoint as JSON:
json{ "pod_name": "Example POD", "target_audience": "Grade 8-10", "subject_areas": ["Digital Literacy", "Computer Basics"], "duration": "1 month", "frequency": "3 days/week", "daily_lab_hours": 2, "previous_exposure": "None", "teacher_capability": "Basic", "teacher_training_needed": true, "learning_area_focus": ["Digital Literacy"], "specific_skills": ["Basic computer operations", "Internet safety"], "assessment_method": "Practical exercises and quizzes" }
Checkpoint: ~/.openclaw/workspace/curriculum-designer-checkpoints/<timestamp>-<session-id>/requirements.json
Action: Search YouTube for videos based on requirements
API: Use YouTube Data API v3 with key from .env
Search Queries (Default):
pythonsearch_queries = [ "computer basics tutorial hindi beginners", "typing practice hindi tutorial", "internet browser basics hindi", "gmail email tutorial hindi beginners", "google docs tutorial hindi", "google sheets tutorial hindi", "chatgpt tutorial hindi beginners 2024", "ai tools for students hindi" ]
Search Parameters:
part=snippetq=<query>type=videomaxResults=5videoDuration=medium (5-10 minutes preferred)relevanceLanguage=hi (Hindi preference)Output Structure:
json{ "resources": [ { "topic": "computer basics", "videos": [ { "title": "Computer Basics for Beginners in Hindi", "channel": "TechGuruji", "url": "https://youtube.com/watch?v=ABC123", "video_id": "ABC123" } ] } ] }
After completing all searches, summarize the research results before passing to validation stage.
Why summarize?
Summary Structure:
json{ "research_summary": { "total_searches": 8, "topics_researched": [ "computer basics", "typing practice", "internet browser basics", "gmail email tutorial", "google docs tutorial", "google sheets tutorial", "chatgpt tutorial", "ai tools for students" ], "total_videos_found": 24, "video_channels": ["TechGuruji", "LearnWithMe", "DigitalSkills", "HindiTechTutorials"], "search_language": "Hindi preference", "video_duration_preference": "5-10 minutes", "notes": "Most videos from 2023-2024. Good variety of channels. Some topics have fewer results, may need fallback search." } }
Save summary:
research_summary to research-results.jsonCheckpoint: ~/.openclaw/workspace/curriculum-designer-checkpoints/<timestamp>-<session-id>/research-results.json
Action: Verify each video via YouTube oEmbed API. If invalid, retry with alternative search terms.
Use oEmbed endpoint (fast, lightweight):
https://www.youtube.com/oembed?url=https://youtube.com/watch?v=VIDEO_IDFor each topic, follow this logic:
For each video in topic:
1. Verify via oEmbed
2. If valid → Add to validated list, done with topic
3. If invalid → Try next video in topic
If NO valid videos found for topic:
1. Retry search with alternative queries:
- Original query + "part 2"
- Original query + "for students"
- Original query + "in english" (if Hindi failed)
2. Verify new results
3. If still no valid videos → ADD FALLBACK:
- "search_query": "<original query> tutorial hindi beginners"
- "fallback_reason": "No valid videos found, please search manually"json{ "resources": [ { "topic": "computer basics", "video": { "title": "Computer Basics for Beginners in Hindi", "channel": "TechGuruji", "url": "https://youtube.com/watch?v=ABC123", "video_id": "ABC123", "status": "valid" } }, { "topic": "advanced excel", "fallback": { "search_query": "advanced excel tutorial hindi beginners", "reason": "No valid videos found after 3 retry attempts" } } ] }
IMPORTANT: Every topic MUST have either:
Checkpoint: ~/.openclaw/workspace/curriculum-designer-checkpoints/<timestamp>-<session-id>/validated-resources.json
Action: Generate curriculum structure, processing one lesson at a time with summarization and context cleanup.
Instead of:
Pass entire curriculum (all lessons) to LLM at once → High token usageDo this:
For each lesson (1, 2, 3, ... N):
1. Load lesson N context only (this lesson's topic + resources)
2. Generate lesson content
3. SUMMARIZE lesson N context
4. Save lesson + summary to curriculum structure
5. WIPE lesson N context from memory
6. Continue to next lesson
When all lessons complete:
1. Summarize entire curriculum
2. Save summary to curriculum structure
3. Save summary to Stage 2 checkpoint (research-results.json)For lesson N:
json{ "lesson_number": 1, "summary": "Students learned basic computer components, mouse/keyboard operations, and system navigation. Introduced primary computer parts and basic troubleshooting. Assessment involved identifying components and practicing typing.", "key_skills": [ "Identifying computer parts", "Mouse and keyboard basics", "System navigation" ], "tools_used": ["Computer", "Mouse", "Keyboard"], "assessment_type": "Practical exercise and observation" }
For each lesson, generate:
| Field | Description | |--------|-------------| | Day | Lesson number (1, 2, 3, ...) | | Subject | Subject area / Learning area | | Module | Module/Topic name | | Daily Learning Objectives | What students learn that day | | Daily Assessment | How to assess understanding | | YouTube Link | Valid video URL OR search query fallback | | YouTube Title | Video title (if applicable) | | Tools Used | Required software/platforms | | Fallback Search Query | Search query if no valid video (or blank) | | Lesson Summary | Concise summary for next lesson's context |
json{ "day": 1, "subject": "Digital Literacy", "module": "Module 1: Introduction to Computers", "daily_learning_objectives": "Understand basic computer components, learn to use mouse and keyboard", "daily_assessment": "Practical exercise: Identify computer parts, practice typing", "youtube_link": "https://youtube.com/watch?v=ABC123", "youtube_title": "Computer Basics for Beginners in Hindi", "tools_used": "Computer, Mouse, Keyboard", "fallback_search_query": "", "lesson_summary": { "summary": "Students learned basic computer components, mouse/keyboard operations, and system navigation.", "key_skills": ["Identifying computer parts", "Mouse and keyboard basics", "System navigation"], "tools_used": ["Computer", "Mouse", "Keyboard"], "assessment_type": "Practical exercise and observation" } }
json{ "day": 5, "subject": "Skill Development", "module": "Module 5: Advanced Spreadsheets", "daily_learning_objectives": "Learn Excel formulas and data analysis", "daily_assessment": "Create a budget spreadsheet using formulas", "youtube_link": "", "youtube_title": "", "tools_used": "Google Sheets", "fallback_search_query": "advanced excel formulas tutorial hindi beginners", "lesson_summary": { "summary": "Students advanced from basic Google Sheets to formulas and data analysis. Learned SUM, AVERAGE, IF functions, and chart creation.", "key_skills": ["Google Sheets formulas", "Data analysis basics", "Chart creation"], "tools_used": ["Google Sheets"], "assessment_type": "Project-based: Budget spreadsheet" } }
After generating all lessons:
json{ "curriculum_summary": { "total_lessons": 12, "duration": "1 month", "frequency": "3 days/week", "subject_areas": ["Digital Literacy", "Skill Development"], "skills_progression": [ "Week 1: Computer basics and navigation", "Week 2: Internet and email fundamentals", "Week 3: Document creation and editing", "Week 4: Spreadsheets and data analysis" ], "assessment_methods": ["Practical exercises", "Quizzes", "Projects"], "tools_used": ["Computer", "Google Docs", "Google Sheets", "YouTube videos"], "learning_outcomes": "Students will gain basic computer literacy, internet safety awareness, and productivity tool proficiency." } }
curriculum_summary field to research-results.jsonCheckpoint: ~/.openclaw/workspace/curriculum-designer-checkpoints/<timestamp>-<session-id>/curriculum-structure.json
Also updates: ~/.openclaw/workspace/curriculum-designer-checkpoints/<timestamp>-<session-id>/research-results.json (adds curriculum_summary)
Action: Create Google Sheet with curriculum data using gog CLI.
bash# Use gog CLI to create new spreadsheet SHEET_ID=$(gog drive spreadsheet create \ --name "Curriculum_[POD]_[YYYY-MM-DD]" \ --parent-folder "$GOG_FOLDER_ID" \ --json | python3 -c "import sys, json; print(json.load(sys.stdin).get('id', ''))") echo "Sheet ID: $SHEET_ID"
bash# Add header row gog sheets update "$SHEET_ID" "Sheet1!A1:H1" \ --values-json '[["Day","Subject","Module","Daily Learning Objectives","Daily Assessment","YouTube Link","YouTube Title","Tools Used","Fallback Search Query"]]'
bash# Read curriculum structure and convert to gog format # For each lesson, create a row array # Then append all rows at once # Format each lesson as: [Day, Subject, Module, Objectives, Assessment, URL, Title, Tools, Fallback] gog sheets append "$SHEET_ID" "Sheet1!A2:H" \ --values-json '[ ["1","Digital Literacy","Module 1: Introduction","Understand basic components","Practical exercise","https://youtube.com/watch?v=ABC123","Computer Basics","Computer,Mouse",""], ["2","Digital Literacy","Module 2: File Management","Learn to organize files","Create folders","https://youtube.com/watch?v=DEF456","File Management","File Explorer",""], ... ]' \ --insert INSERT_ROWS
Data format:
Validation:
bash# ⚠️ CRITICAL: Always share with public view access gog drive share "$SHEET_ID" --to anyone --role reader
bash# Construct public URL and save PUBLIC_URL="https://docs.google.com/spreadsheets/d/${SHEET_ID}" echo "$PUBLIC_URL" > "<checkpoint-dir>/final-sheet-url.txt"
Checkpoint: ~/.openclaw/workspace/curriculum-designer-checkpoints/<timestamp>-<session-id>/final-sheet-url.txt
| Learning Area | Focus | |---------------|-------| | Digital Literacy | Basic computer skills, internet safety, AI tools | | Academic Empowerment | Study skills, exam prep, note-taking | | Skill Development | Programming, design, content creation | | Employment Readiness | Resume, communication, job skills |
--to anyone --role reader before returning linkgog drive share <SHEET_ID> --to anyone --role reader| Resource | Link | |----------|------| | Curriculum Designer Folder | https://drive.google.com/drive/folders/1upJQu-IVmZRJQsNGmJNRzq9IwL67MVL9 | | Example Curriculum (AI Tools) | https://docs.google.com/spreadsheets/d/1hYC2Q2KlW8dM71biC97RPSvFnxTQa-zN | | SOP Document | https://docs.google.com/document/d/1Y5qetW8S4RWsTg7hycIyujgTwTCFn9VV |
⚠️ API keys are stored locally in .env file - NEVER commit this file to git!
Delete checkpoint directories older than 7 days to prevent disk space bloat while keeping recent sessions for debugging.
bash# Edit crontab crontab -e # Add this line (runs daily at midnight) 0 0 * * * find ~/.openclaw/workspace/curriculum-designer-checkpoints/ -type d -mtime +7 -exec rm -rf {} \;
bash# Create cron job via OpenClaw openclaw cron create \ --name "checkpoint-cleanup" \ --schedule "0 0 * * *" \ --command "find ~/.openclaw/workspace/curriculum-designer-checkpoints/ -type d -mtime +7 -exec rm -rf {} \;" \ --description "Delete curriculum-designer checkpoints older than 7 days"
| Schedule | Crontab Format | Description | |-----------|----------------|--------------| | Daily at midnight | 0 0 * * * | Every day at 00:00 | | Weekly on Sunday | 0 0 * * 0 | Every Sunday at 00:00 | | Every 6 hours | 0 */6 * * * | Every 6 hours (may be too frequent) | | Twice daily | 0 0,12 * * * | At 00:00 and 12:00 |
After setting up cron, verify it's working:
bash# List cron jobs (crontab) crontab -l # List cron jobs (OpenClaw) openclaw cron list
Test the cleanup command manually before setting up cron:
bash# Dry run (see what would be deleted) find ~/.openclaw/workspace/curriculum-designer-checkpoints/ -type d -mtime +7 -ls # Actual cleanup find ~/.openclaw/workspace/curriculum-designer-checkpoints/ -type d -mtime +7 -exec rm -rf {} \; # Verify ls ~/.openclaw/workspace/curriculum-designer-checkpoints/
-mtime +7: Files/directories modified more than 7 days ago-type d: Only directories (sessions), not individual files-exec rm -rf {} \;: Remove directory and all contents+7 to a different value if you want different retention period (+3, +14, +30)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.