From cda9b388cfb67c922f2ece509856619a77b2be67 Mon Sep 17 00:00:00 2001 From: mpmedia Date: Thu, 28 May 2026 14:48:33 -0500 Subject: [PATCH] docs: update SKILL.md for eLearning module --- skills/odoo/SKILL.md | 55 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/skills/odoo/SKILL.md b/skills/odoo/SKILL.md index 3497f39..a1d1c1e 100644 --- a/skills/odoo/SKILL.md +++ b/skills/odoo/SKILL.md @@ -5,14 +5,16 @@ description: > involving: products, product catalog, stock levels, inventory; knowledge base articles; contacts, customers, vendors; sales orders, quotes; CRM leads and opportunities; projects and tasks; helpdesk tickets; purchase orders; - employees and departments; bulk record updates; archiving records; counting - records; cancelling quotations. Triggers on: "in Odoo", "our products", "the - knowledge base", "find a contact", "sales order", "opportunity", "project - tasks", "helpdesk ticket", "purchase order", "stock", "inventory", - "employee", "what stage is", "create a task", "update the ticket", - "cancel quotation", "cancel quote", "archive", "mark lost", "bulk update", - "how many records", "count of", "stage id for", "resolve stage", - "search with filters", "filter by", "lost reasons". + employees and departments; eLearning courses, slides, quizzes, and enrollment; + bulk record updates; archiving records; counting records; cancelling quotations. + Triggers on: "in Odoo", "our products", "the knowledge base", "find a contact", + "sales order", "opportunity", "project tasks", "helpdesk ticket", "purchase + order", "stock", "inventory", "employee", "what stage is", "create a task", + "update the ticket", "cancel quotation", "cancel quote", "archive", "mark lost", + "bulk update", "how many records", "count of", "stage id for", "resolve stage", + "search with filters", "filter by", "lost reasons", "course", "training", + "elearning", "e-learning", "lesson", "slide", "quiz", "enroll", "enrollment", + "onboard to course", "publish course", "add lesson", "create course". --- # Odoo MPM Skill @@ -102,6 +104,42 @@ Advanced tools for any Odoo model: - `call_odoo_method` — escape hatch for any model method not covered by other tools (workflow transitions, report actions, custom methods). Use sparingly. - `odoo_search` / `odoo_get_record` — legacy generic lookup tools; prefer `odoo_search_read` for new usage. +### eLearning — Courses (`search_courses`, `get_course`, `create_course`, `update_course`, `publish_course`) +Manage eLearning courses (slide.channel). Supports all three audience tiers: internal employees, resellers, and end-clients. + +**Course settings:** +- `channel_type`: `training` or `documentation` +- `visibility`: `public` (Everyone), `connected` (Signed In), `members` (Course Attendees), `website` (Anyone with link) +- `enroll`: `public` (Open) or `invite` (On Invitation) +- `enroll_group_names`: auto-enroll Odoo groups by name — use `['Internal Users']` to restrict a course to employees + +### eLearning — Slides & Content (`list_course_slides`, `get_slide`, `create_slide`, `update_slide`, `publish_slide`, `reorder_slides`) +Manage individual content items within a course. + +**Slide types:** +- `pdf` — PDF document. `url` = Google Drive share link (use Workspace MCP to get the link). +- `youtube_video` — YouTube video. `url` = YouTube watch URL. +- `vimeo_video` — Vimeo video. `url` = Vimeo video URL. +- `infographic` — Image or infographic. +- `webpage` — Native article. `html_content` = formatted HTML body. Claude can generate this directly. + +**Google Drive rule:** For any operation that needs a Drive file link or download URL — cover images, PDF slides, resource links — use the Google Workspace MCP connector when it is available. Only ask the user to provide a URL if the connector is not connected in the current session. + +### eLearning — Quiz (`get_quiz_questions`, `add_quiz_question`, `generate_quiz`) +Quiz questions (`slide.question` / `slide.answer`) can be attached to any slide type. +- `generate_quiz` is the AI-powered tool: read lesson content first, generate question/answer sets, then call this tool to batch-write them all. It clears existing questions before writing. +- `add_quiz_question` adds a single question — use for incremental additions. + +### eLearning — Enrollment (`get_course_enrollment`, `enroll_in_course`, `bulk_enroll`, `send_course_invitation`) +- `enroll_in_course` is the standard onboarding hook — accepts partner IDs or email addresses, resolves contacts automatically, and optionally sends invitation emails. +- `bulk_enroll` handles CSV-style imports and is designed to be called by the project management plugin for customer onboarding. +- `get_course_enrollment` returns enrolled users with completion % and last activity. + +### eLearning — Media & Resources (`set_course_cover`, `set_slide_cover`, `link_drive_document`, `add_course_resource`) +- `set_course_cover` / `set_slide_cover` — fetch image from URL, base64-encode, write to Odoo. Use Workspace MCP for Drive images. +- `link_drive_document` — set the URL on any slide (PDF, video, infographic). +- `add_course_resource` — add a downloadable link to the course landing page. Falls back to creating a slide if the resource model is unavailable. + --- ## Workflow Guidelines @@ -115,3 +153,4 @@ Advanced tools for any Odoo model: - Use `odoo_search_read` for any query where you only need specific fields — it is more efficient than `odoo_get_record` and avoids large responses. - Before calling `cancel_sale_orders` or `cancel_and_archive_quotations`, use `search_sales_orders` to verify the orders are in `draft` or `sent` state. Both tools will refuse if any order is in another state. - Before calling `mark_crm_lead_lost`, call `list_crm_lost_reasons` to show the user available reasons so they can choose one by name. +- For eLearning: always use the Google Workspace MCP connector for Drive file links and image downloads when it is available. Only surface the gap to the user if the connector is absent.