Skip to content

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

  1. list_categories and pick a row whose canCreate is true. If several names match, ask which id to use.
  2. Plan the course, then create it: in one shot with build_course (dryRun: true first, then dryRun: false, and poll get_task_status), or step by step with create_course, add_section, add_activity or create_quiz.
  3. Add sections before the activities that go in them. Section 0 is the general section.
  4. Add activities. For a quiz, add the questions in the same call or with add_quiz_questions or import_questions.
  5. Check the course with get_course_structure before changing visibility.
  6. set_visibility for the course or single activities.
  7. Accounts, enrolment and groups last: search_users, create_user (admin scope), enrol_user, set_user_role, create_group, add_group_members. Use dryRun: true to 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_structure matches the plan.

Rules

  • Use only ids that a tool just returned. Never invent course, category, section or module ids.
  • Identify a course with courseId or courseShortname, and a person with userId, username or email: 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_questions takes 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.