{"id":"dccfead5-4878-4879-9b59-3fdc3c13e700","shortId":"aCPZXp","kind":"skill","title":"canvas-course-builder","tagline":"Scaffold complete Canvas LMS course structures from specs, templates, or existing courses. Creates modules, pages, assignments, and discussions in bulk. Use when asked to \"build a course\", \"scaffold modules\", \"create course structure\", \"set up a new course\", or \"copy course struc","description":"# Canvas Course Builder\n\nBuild complete Canvas course structures from a natural language description, a JSON template, or by cloning an existing course. Creates modules with pages, assignments, discussions, and proper organization in one workflow.\n\n## Prerequisites\n\n- **Canvas MCP server** must be running and connected.\n- Authenticated user must have **instructor or designer role** in the target course.\n- Target course must already exist in Canvas (this skill populates it, does not create the course itself).\n\n## Modes\n\nThis skill operates in three modes:\n\n### Mode 1: Build from Spec (default)\nThe user describes the course structure in natural language or provides a structured spec.\n\n### Mode 2: Build from Template\nLoad a saved JSON template to scaffold a course.\n\n### Mode 3: Clone from Existing Course\nRead the structure of Course A and replicate it into Course B.\n\n## Steps\n\n### 1. Determine Mode and Gather Input\n\nAsk the user how they want to build:\n\n> How would you like to build the course structure?\n> 1. **Describe it** -- Tell me the structure (e.g., \"15 weeks, each with an overview page, assignment, and discussion\")\n> 2. **From template** -- Load a saved template file\n> 3. **Clone another course** -- Copy structure from an existing course\n\n**For Mode 1 (Spec):** Ask for:\n- Target course (code or ID)\n- Number of modules/weeks/units\n- Module naming pattern (e.g., \"Week N: [Topic]\")\n- Standard items per module (overview page, assignment, discussion, etc.)\n- Any module-specific variations (midterm week, final project, etc.)\n\n**For Mode 2 (Template):** Ask for the template file path. Parse the JSON template.\n\n**For Mode 3 (Clone):** Ask for:\n- Source course (code or ID)\n- Target course (code or ID)\n- Call `get_course_structure(source_course)` to read the full structure\n\n### 2. Generate Structure Preview\n\nBuild a preview of what will be created and present it to the user:\n\n```\n## Course Build Plan: [Course Name]\n\n### Structure: 15 modules x 4 items each = 60 items total\n\n| Module | Page | Assignment | Discussion | SubHeader |\n|--------|------|------------|------------|-----------|\n| Week 1: Introduction | Overview | HW 1 (10 pts) | Week 1 Forum | Materials |\n| Week 2: Fundamentals | Overview | HW 2 (10 pts) | Week 2 Forum | Materials |\n| ... | ... | ... | ... | ... |\n| Week 14: Review | Overview | -- | Review Forum | Materials |\n| Week 15: Final | Overview | Final Project (100 pts) | -- | Materials |\n\n### Items to create:\n- 15 modules\n- 15 overview pages\n- 14 assignments\n- 14 discussion topics\n- 15 subheaders\n- Total: 73 Canvas objects\n\nShall I proceed?\n```\n\n### 3. User Approves or Modifies\n\nWait for explicit approval. The user may:\n- Approve as-is\n- Request modifications (add/remove items, change naming, adjust points)\n- Cancel\n\n**Do NOT proceed without approval.**\n\n### 4. Execute Creation\n\nCreate items in dependency order:\n\n1. **Modules first:** Call `create_module` for each module (unpublished by default for safety)\n2. **Pages:** Call `create_page` for each overview page\n3. **Assignments:** Call `create_assignment` for each assignment (unpublished)\n4. **Discussions:** Call `create_discussion_topic` for each forum\n5. **Module items:** Call `add_module_item` to link each created item to its module\n\nTrack progress and report as you go:\n```\nCreating modules... 15/15 done\nCreating pages... 15/15 done\nCreating assignments... 14/14 done\nCreating discussions... 14/14 done\nLinking items to modules... 58/58 done\n```\n\nIf any creation fails, log the error and continue with remaining items.\n\n### 5. Report Results\n\n```\n## Build Complete: [Course Name]\n\n### Created:\n- 15 modules\n- 15 overview pages\n- 14 assignments\n- 14 discussion topics\n- 58 module items linked\n\n### Failed (0):\nNone\n\n### Next Steps:\n- All items created **unpublished** -- publish when ready\n- Add content to overview pages\n- Set due dates on assignments\n- Run `/canvas-course-qc` to verify structure\n```\n\n### 6. Save as Template (Optional)\n\nAfter building, offer to save the structure as a reusable template:\n\n> Would you like to save this structure as a template for future courses?\n\nIf yes, call `get_course_structure(target_course)` and save the output as a JSON file.\n\n## MCP Tools Used\n\n| Tool | Purpose |\n|------|---------|\n| `list_courses` | Find available courses |\n| `get_course_structure` | Read source course for cloning; verify after build |\n| `create_module` | Create each module |\n| `create_page` | Create overview/content pages |\n| `create_assignment` | Create assignments |\n| `create_discussion_topic` | Create discussion forums |\n| `add_module_item` | Link items to modules |\n| `update_module` | Publish modules when ready |\n\n## Template Format\n\nTemplates are JSON files with this structure:\n\n```json\n{\n  \"template_name\": \"Standard 15-Week Semester\",\n  \"modules\": [\n    {\n      \"name_pattern\": \"Week {n}: {topic}\",\n      \"items\": [\n        {\"type\": \"SubHeader\", \"title_pattern\": \"Week {n} Materials\"},\n        {\"type\": \"Page\", \"title_pattern\": \"Week {n} Overview\"},\n        {\"type\": \"Assignment\", \"title_pattern\": \"HW {n}\", \"points\": 10},\n        {\"type\": \"Discussion\", \"title_pattern\": \"Week {n} Discussion\"}\n      ]\n    }\n  ],\n  \"special_modules\": [\n    {\"position\": 8, \"name\": \"Midterm Review\", \"items\": [{\"type\": \"Page\", \"title\": \"Midterm Study Guide\"}]},\n    {\"position\": 15, \"name\": \"Final Project\", \"items\": [{\"type\": \"Assignment\", \"title\": \"Final Project\", \"points\": 100}]}\n  ]\n}\n```\n\n## Example\n\n**User:** \"Build a 15-week structure for BADM 350 with a weekly overview page, homework, and discussion\"\n\n**Agent:** Generates preview, asks for approval, creates 60+ items.\n\n**User:** \"Clone the structure from CS 101 into CS 102\"\n\n**Agent:** Reads CS 101 structure, generates preview for CS 102, asks approval, creates matching structure.\n\n## Notes\n\n- All items are created **unpublished by default** for safety.\n- Content is **not** copied when cloning -- only structure (module names, item types, organization).\n- For content migration, copy page bodies using `get_page_content` + `create_page` with the body.\n- Run `canvas-course-qc` after building to verify the structure is complete and consistent.","tags":["canvas","course","builder","mcp","vishalsachdev","agent-skills","skills-sh"],"capabilities":["skill","source-vishalsachdev","skill-canvas-course-builder","topic-agent-skills","topic-skills-sh"],"categories":["canvas-mcp"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/vishalsachdev/canvas-mcp/canvas-course-builder","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add vishalsachdev/canvas-mcp","source_repo":"https://github.com/vishalsachdev/canvas-mcp","install_from":"skills.sh"}},"qualityScore":"0.509","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 118 github stars · SKILL.md body (6,149 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:55:01.245Z","embedding":null,"createdAt":"2026-04-18T22:12:02.842Z","updatedAt":"2026-05-02T12:55:01.245Z","lastSeenAt":"2026-05-02T12:55:01.245Z","tsv":"'/canvas-course-qc':598 '0':576 '1':126,178,201,239,357,361,365,456 '10':362,374,745 '100':393,779 '101':813,820 '102':816,826 '14':381,404,406,566,568 '14/14':529,533 '15':209,342,388,399,401,409,561,563,714,768,784 '15/15':521,525 '2':146,219,279,318,369,373,377,470 '3':160,227,293,418,479 '350':789 '4':345,448,488 '5':497,553 '58':571 '58/58':539 '6':602 '60':348,805 '73':412 '8':756 'add':501,587,688 'add/remove':436 'adjust':440 'agent':798,817 'alreadi':104 'anoth':229 'approv':420,426,430,447,803,828 'as-i':431 'ask':27,184,241,281,295,801,827 'assign':20,72,216,264,353,405,480,483,486,528,567,596,679,681,739,774 'authent':89 'avail':655 'b':176 'badm':788 'bodi':860,869 'build':29,49,127,147,191,197,322,337,556,608,667,782,876 'builder':4,48 'bulk':24 'call':307,459,472,481,490,500,633 'cancel':442 'canva':2,7,46,51,81,107,413,872 'canvas-course-build':1 'canvas-course-qc':871 'chang':438 'clone':64,161,228,294,664,808,847 'code':245,299,304 'complet':6,50,557,882 'connect':88 'consist':884 'content':588,842,856,864 'continu':549 'copi':43,231,845,858 'cours':3,9,16,31,35,41,44,47,52,67,100,102,116,135,158,164,169,175,199,230,236,244,298,303,309,312,336,339,558,630,635,638,653,656,658,662,873 'creat':17,34,68,114,329,398,451,460,473,482,491,507,519,523,527,531,560,582,668,670,673,675,678,680,682,685,804,829,836,865 'creation':450,543 'cs':812,815,819,825 'date':594 'default':130,467,839 'depend':454 'describ':133,202 'descript':58 'design':95 'determin':179 'discuss':22,73,218,265,354,407,489,492,532,569,683,686,747,752,797 'done':522,526,530,534,540 'due':593 'e.g':208,254 'error':547 'etc':266,276 'exampl':780 'execut':449 'exist':15,66,105,163,235 'explicit':425 'fail':544,575 'file':226,285,646,706 'final':274,389,391,770,776 'find':654 'first':458 'format':702 'forum':366,378,385,496,687 'full':316 'fundament':370 'futur':629 'gather':182 'generat':319,799,822 'get':308,634,657,862 'go':518 'guid':766 'homework':795 'hw':360,372,742 'id':247,301,306 'input':183 'instructor':93 'introduct':358 'item':259,346,349,396,437,452,499,503,508,536,552,573,581,690,692,723,760,772,806,834,852 'json':60,153,289,645,705,710 'languag':57,139 'like':195,620 'link':505,535,574,691 'list':652 'lms':8 'load':150,222 'log':545 'match':830 'materi':367,379,386,395,730 'may':429 'mcp':82,647 'midterm':272,758,764 'migrat':857 'mode':118,124,125,145,159,180,238,278,292 'modif':435 'modifi':422 'modul':18,33,69,251,261,269,343,351,400,457,461,464,498,502,511,520,538,562,572,669,672,689,694,696,698,717,754,850 'module-specif':268 'modules/weeks/units':250 'must':84,91,103 'n':256,721,729,736,743,751 'name':252,340,439,559,712,718,757,769,851 'natur':56,138 'new':40 'next':578 'none':577 'note':832 'number':248 'object':414 'offer':609 'one':78 'oper':121 'option':606 'order':455 'organ':76,854 'output':642 'overview':214,262,359,371,383,390,402,477,564,590,737,793 'overview/content':676 'page':19,71,215,263,352,403,471,474,478,524,565,591,674,677,732,762,794,859,863,866 'pars':287 'path':286 'pattern':253,719,727,734,741,749 'per':260 'plan':338 'point':441,744,778 'popul':110 'posit':755,767 'prerequisit':80 'present':331 'preview':321,324,800,823 'proceed':417,445 'progress':513 'project':275,392,771,777 'proper':75 'provid':141 'pts':363,375,394 'publish':584,697 'purpos':651 'qc':874 'read':165,314,660,818 'readi':586,700 'remain':551 'replic':172 'report':515,554 'request':434 'result':555 'reusabl':616 'review':382,384,759 'role':96 'run':86,597,870 'safeti':469,841 'save':152,224,603,611,622,640 'scaffold':5,32,156 'semest':716 'server':83 'set':37,592 'shall':415 'skill':109,120 'skill-canvas-course-builder' 'sourc':297,311,661 'source-vishalsachdev' 'spec':12,129,144,240 'special':753 'specif':270 'standard':258,713 'step':177,579 'struc':45 'structur':10,36,53,136,143,167,200,207,232,310,317,320,341,601,613,624,636,659,709,786,810,821,831,849,880 'studi':765 'subhead':355,410,725 'target':99,101,243,302,637 'tell':204 'templat':13,61,149,154,221,225,280,284,290,605,617,627,701,703,711 'three':123 'titl':726,733,740,748,763,775 'tool':648,650 'topic':257,408,493,570,684,722 'topic-agent-skills' 'topic-skills-sh' 'total':350,411 'track':512 'type':724,731,738,746,761,773,853 'unpublish':465,487,583,837 'updat':695 'use':25,649,861 'user':90,132,186,335,419,428,781,807 'variat':271 'verifi':600,665,878 'wait':423 'want':189 'week':210,255,273,356,364,368,376,380,387,715,720,728,735,750,785,792 'without':446 'workflow':79 'would':193,618 'x':344 'yes':632","prices":[{"id":"d62c1841-785d-4c0e-af83-18536817655e","listingId":"dccfead5-4878-4879-9b59-3fdc3c13e700","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"vishalsachdev","category":"canvas-mcp","install_from":"skills.sh"},"createdAt":"2026-04-18T22:12:02.842Z"}],"sources":[{"listingId":"dccfead5-4878-4879-9b59-3fdc3c13e700","source":"github","sourceId":"vishalsachdev/canvas-mcp/canvas-course-builder","sourceUrl":"https://github.com/vishalsachdev/canvas-mcp/tree/main/skills/canvas-course-builder","isPrimary":false,"firstSeenAt":"2026-04-18T22:12:02.842Z","lastSeenAt":"2026-05-02T12:55:01.245Z"}],"details":{"listingId":"dccfead5-4878-4879-9b59-3fdc3c13e700","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"vishalsachdev","slug":"canvas-course-builder","github":{"repo":"vishalsachdev/canvas-mcp","stars":118,"topics":["agent-skills","skills-sh"],"license":"mit","html_url":"https://github.com/vishalsachdev/canvas-mcp","pushed_at":"2026-04-27T16:16:22Z","description":"Canvas LMS MCP server — 80+ tools and 5 agent skills for students & educators. Works with Claude, Cursor, Codex, and 40+ agents. v1.1.0","skill_md_sha":"d4b44f48577f07ecb1825ee9367fbb4381fa9554","skill_md_path":"skills/canvas-course-builder/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/vishalsachdev/canvas-mcp/tree/main/skills/canvas-course-builder"},"layout":"multi","source":"github","category":"canvas-mcp","frontmatter":{"name":"canvas-course-builder","description":"Scaffold complete Canvas LMS course structures from specs, templates, or existing courses. Creates modules, pages, assignments, and discussions in bulk. Use when asked to \"build a course\", \"scaffold modules\", \"create course structure\", \"set up a new course\", or \"copy course structure\"."},"skills_sh_url":"https://skills.sh/vishalsachdev/canvas-mcp/canvas-course-builder"},"updatedAt":"2026-05-02T12:55:01.245Z"}}