Claude Code plugins for education tools — Moodle course management and Kahoot quiz creation.
# Add marketplace
/plugin marketplace add rudini/claude-edu-plugins
# Install Moodle skill
/plugin install moodle-skill@claude-edu-plugins
# Install Kahoot skill (optional)
/plugin install kahoot-skill@claude-edu-plugins
Manage any Moodle course: create/update/delete activities, sections, quizzes, import GIFT questions, and AI-assisted essay grading.
Create a .env file in your project root:
MOODLE_URL=https://your-moodle-instance.example.com
MOODLE_SESSION=
COURSE_ID=1234
Then authenticate (browser opens and closes automatically after login):
/moodle-skill:moodle login
Use --browser msedge or --browser chrome if your org requires a specific browser for SSO.
/moodle-skill:moodle structure # Show course structure
/moodle-skill:moodle list-activities 123 # List activities in section 123
/moodle-skill:moodle create-url 5 "Docs" "https://example.com" # Create URL
/moodle-skill:moodle grade-essay scrape 456 --gift quiz.gift --output grading.json
| Group | Command | Description |
|---|---|---|
| Setup | login [--browser msedge|chrome] | Browser login, save cookie (auto-closes) |
| Read | structure, list-activities, show-label, show-page | Inspect course |
| Update | update-label, update-page, update-summary | Modify content |
| CRUD | create-url, create-page, create-resource, create-assign, create-forum, create-quiz | Create activities |
| Manage | delete-activity, hide-activity, indent-activity, move-activity | Manage activities |
| Sections | delete-section, duplicate-section, move-section, rename-section | Manage sections |
| Quiz | import-gift, add-questions-to-quiz, delete-quiz-questions | Quiz management |
| Grading | grade-essay scrape, grade-essay submit | AI essay grading |
| Diagnostic | dump-form, dump-grading | Debug tools |
Create and manage Kahoot quizzes from JSON definitions.
/kahoot-skill:kahoot login
Use --browser msedge or --browser chrome for SSO. Or create .env manually with KAHOOT_TOKEN=...
/kahoot-skill:kahoot preview quiz.json # Validate quiz
/kahoot-skill:kahoot create quiz.json # Dry-run
/kahoot-skill:kahoot list # List all quizzes
{
"title": "My Quiz",
"questions": [
{
"question": "What is 2 + 2?",
"choices": [
{ "answer": "4", "correct": true },
{ "answer": "5", "correct": false }
]
}
]
}
| Variable | Required | Description |
|---|---|---|
MOODLE_URL | Yes | Your Moodle instance URL |
MOODLE_SESSION | Yes | Session cookie (set via login command) |
COURSE_ID | Yes | Course ID from course URL (?id=XXXX) |
MOODLE_TZ | No | Timezone (default: Europe/Zurich) |
| Variable | Required | Description |
|---|---|---|
KAHOOT_TOKEN | Yes | Bearer token (set via login command) |
Not using Claude Code? The underlying CLI scripts work with any AI coding tool that can execute shell commands — GitHub Copilot, OpenAI Codex, Cursor, Windsurf, and more.
See USAGE_OTHER_TOOLS.md for setup instructions, per-tool configuration, and an MCP server wrapper example.
If these plugins save you time, consider sponsoring to support ongoing development:
Even a small contribution helps keep this project maintained and improved. Thank you!
MIT
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub rudini/claude-edu-plugins --plugin kahoot-skillManage Moodle courses via CLI — activities, sections, quizzes, AI grading
Containerized repo-map MCP server (tree-sitter based) for efficient code context.
Interactive learning companion — creates personalized learning plans, quizzes with adaptive difficulty, and tracks progress across sessions
Evidence-based instructional design pipeline. 11 skills backed by peer-reviewed research across 11 domains. Analyze, design, build, review, and export courses with every recommendation citing its evidence tier.
Adaptive learning tutor for any subject — personalized curriculum, level diagnostics, quizzes, and four goal modes including full exam prep.
Claude skill for configuring and initializing tutoring sessions and curriculum. Sets up structured learning pathways and educational frameworks.
Adaptive tutor skill with 10 teaching modes, active teaching tools, and a browser-based visual companion — runs code, creates exercises, generates interactive diagrams, quizzes, and walkthroughs. Makes Claude act as an interactive coach for learning any subject.
Exam-prep workspace for math/physics courses. 18 slash commands + 6 skills to ingest course materials, extract HW-density-weighted patterns, drill via twins/blinds/chains/mocks, and grade hand-written answer PDFs. Every course PDF — lectures, textbook, homework, solutions — is routed through a parallel vision pipeline (one agent per PDF, sequential Read per agent) that transcribes to faithful LaTeX markdown; pdfplumber was tried as a fast path and proved unreliable on real course content. Hand-writing OCR engine is selectable per course: Claude native vision (default, no install), local Qwen3-VL via Ollama, or Tesseract. 0.5.0 adds a per-course statusline (paideia · COURSE · D-N · phase · Pk ↑) wired by init-course; 0.8.0 adds /paideia:doctor — a one-shot install + workspace diagnostic with permission-free --fix; 0.9.0 adds /paideia:alt — import an OPTIMETA Exam Radar (Alt plugin) export so lecture-emphasis exam signal folds in beside HW density; 1.0.0-rc.22 makes symbolic grading reachable by default — bundle wheels or first-run auto-provision (current default is opt-out); 1.0.0-rc.23 promotes source/nature/phase into the errors/log.md header schema and log_tool canonical fields, eliminating header vs writer drift; 1.0.0-rc.24 caps the first analyze batch at 3–4 files so batch-1 provably commits inside the window, and adds --resume to /paideia:analyze for idempotent continuation from partial=true index state; 1.0.0-rc.25 makes headless (-p) grade runs auto-provision the symbolic-verify stack instead of stalling on an unanswered [Y/n], and writes a per-step SymPy verdict badge (answers/converted/<stem>.verify.json) so the deterministic backstop is auditable on disk; 1.0.0-rc.26 adds /paideia:reindex (analyze-free coverage.md marker rewrite + errors/log.md facet materialization) and /paideia:graph (concept-graph on the built index); 1.0.0-rc.27 tightens /paideia:reindex coverage scope — only files tracked in the built index are rewritten, preventing stale-marker bleed from orphaned converted/** entries; 1.0.0-rc.28 makes the per-step SymPy badge (answers/converted/<stem>.verify.json) and the 6-column grade table MUST-EMIT contracts — headless symbolic+llm grades now enforce rendering the SymPy column and writing the auditable badge instead of collapsing to 5 columns + prose; 1.0.0-rc.29 bundles two fixes: (a) teaches /paideia:reindex to locate the Exam-tier column by non-canonical alias headers (Strength, Emphasis, Priority, Weight, Tier) when the canonical `Exam tier` header is absent — fixing a false-canonical exit-0 where a Reverse-map table with an alias header and a non-rightmost tier column left retired glyphs in place, and preventing the rightmost-populated-cell fallback from contaminating a glyph-bearing data cell; (b) hardens /paideia:analyze first-batch commit and rebuilds /paideia:graph — analyze.md adds a batch-1 emit-time self-check (≤ min(4,N) files), a first-batch solutions/homework selection priority, and an active orphan-`.partial` cleanup subsystem (pre-write delete + post-rename confirmation + resume-entry sweep + committed-state gate) so a committed course-index never leaves scratch files behind (FND-002/010), and graph.md is rewritten from the index-shortcut fork to the canonical PHASE A→E converted-file concept-graph pipeline (RefD priors + Tarjan SCC/Kahn DAG, `## Nodes`/`## Prerequisite edges`/`## Cross-links` schema) matching plan 04 §2.2–§2.4 and the parseConceptGraph contract — this flips the default extraction path from index-shortcut to sequential converted/ read (parallel fan-out gated behind --rebuild to bound the FND-002/FND-029 timeout surface).