The moodle-course-design skill¶
local_mcp ships two Agent Skills next to the plugin, so a client that loads skills follows the same steps without guessing:
skills/moodle-course-design/SKILL.md: design and build a course.skills/moodle-grading/SKILL.md: read a submission and propose a grade. See Grading with dryRun.
Clients that do not load skills get the same text through the MCP prompts design_course and create_quiz_from_content.
Install it in a client¶
Copy the moodle-course-design folder from the plugin (local/mcp/skills/) to the skills folder of your client, for example ~/.cursor/skills/ or ~/.claude/skills/. The skill only describes how to use the tools; it needs a working MCP connection to the site.
What it tells the agent¶
Order of work
list_categoriesand pick a row whosecanCreateis true. If several names match, ask which id to use.- Plan the course, then create it: in one shot with
build_course(dryRun: truefirst, thendryRun: false, and pollget_task_status), or step by step withcreate_course,add_section,add_activityorcreate_quiz. - Add sections before the activities that go in them. Section 0 is the general section.
- Add activities. For a quiz, add the questions in the same call or with
add_quiz_questionsorimport_questions. - Check the course with
get_course_structurebefore changing visibility. set_visibilityfor the course or single activities.- Accounts, enrolment and groups last:
search_users,create_user(admin scope),enrol_user,set_user_role,create_group,add_group_members. UsedryRun: trueto check without saving.
Shape of a good course
- One section per week or topic, named for what the student will be able to do.
- Short explanation first (page or label), then the thing the student does (assignment, forum or quiz).
- Activities named for the student ("Submit the field notes"), not for the editor ("Page 3").
- An assignment has open, due and cut-off dates, and a rubric with at least two levels before anyone is enrolled.
- A quiz comes after the page that teaches the idea, is short, and says when students may review it.
- The course stays hidden until
get_course_structurematches the plan.
Rules
- Use only ids that a tool just returned. Never invent course, category, section or module ids.
- Identify a course with
courseIdorcourseShortname, and a person withuserId,usernameoremail: only one of each. - Dates accept
YYYY-MM-DD, an ISO 8601 datetime with an offset, or a Unix timestamp. - A field that does not apply to the activity type is an error; the skill includes the table of fields per type.
- Question types:
multichoice,truefalse,shortanswer,numerical,match,essay.import_questionstakes GIFT or Moodle XML.
Quiz from content. Read the source, show the proposed questions (stem, answers, feedback, difficulty) and wait. Then create_quiz with dryRun: true, and only after confirmation create_quiz and add_quiz_questions.
The skill also lists frequent errors (wrong category, a field for the wrong type, write tools disabled, deletions that need dryRun: false and confirm: true) and what to do about each.