
claude-moodle-dev
Moodle development toolkit for AI coding assistants. Skills for XMLDB, Hooks API, PHPUnit, Behat, AMD, privacy/GDPR, security, accessibility. Native Claude C…
Install with your AI
Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.
Install and set up claude-moodle-dev (claude-plugin project) into my current project. Found on https://claudeers.com/claude-moodle-dev Repo: https://github.com/SaadRahman01/claude-moodle-dev Homepage/docs: — Detected install method: claude-plugin → /plugin install claude-moodle-dev@SaadRahman01/claude-moodle-dev Category: plugins. Platforms: cli, api, desktop, web, mobile. Read the repo's README for exact setup and env vars, then install it and wire it into my project. Claudeers Health Verdict: unknown; community-verified: false. Confirm the source before running anything.
⚠ Unverified / not recently updated — review before pasting a run-this config.
/plugin marketplace add SaadRahman01/claude-moodle-dev /plugin install claude-moodle-dev@SaadRahman01/claude-moodle-dev
git clone https://github.com/SaadRahman01/claude-moodle-dev
// compatibility
| Platforms | cli, api, desktop, web, mobile |
|---|---|
| Operating systems | — |
| AI compatibility | claude |
| License | MIT |
| Pricing | open-source |
| Language | Python |
moodle-dev
The most complete Moodle development toolkit for AI coding assistants — skills, slash commands, and subagents that turn your assistant into a Moodle expert. Native plugin for Claude Code; ships with adapters for Cursor, GitHub Copilot, Aider, Continue, and a paste-anywhere bundle.
Scaffolds plugins, writes XMLDB upgrades, audits privacy/security, generates PHPUnit + Behat tests, builds AMD modules, reviews PRs — all following official Moodle coding standards (PSR-4, frankenstyle, MOODLE_INTERNAL, GPL headers, get_string, $DB).
🔌 Companion MCP server:
moodle-mcp— livemoodledev.iodocumentation search inside Claude Desktop / Code, Cursor, Continue, Cline.pipx install moodle-mcp.
Why this plugin
Claude already knows PHP. It does not know:
- Moodle's frankenstyle conventions (
local_<name>,mod_<name>,block_<name>, ...) - XMLDB editor workflow +
upgrade_plugin_savepointrules - Privacy API contracts (
null_providervsrequest\plugin\provider) - Capability + sesskey +
require_loginsecurity pattern - Moodle 4.4+ Hooks API vs legacy
lib.phpcallbacks pluginfile.phpfile-serving callback- Behat + PHPUnit Moodle harness (
resetAfterTest, generators, tags) - AMD/RequireJS + grunt build
- Mobile app remote templates +
get_remote_addons
This plugin teaches Claude all of it. Auto-activates when Claude detects Moodle work.
Install
Claude Code (native plugin)
/plugin marketplace add https://github.com/SaadRahman01/claude-moodle-dev
/plugin install moodle-dev@moodle-dev
(If [email protected] SSH auth fails, use the full https:// URL as shown above.)
Local dev: /plugin marketplace add /absolute/path/to/claude-moodle-dev.
Verify: /plugin list.
One-liner installer (any non-Claude assistant)
./install.sh <cursor|copilot|aider|continue|generic> [--dest <path>]
Defaults to current directory. Or copy manually as below.
Cursor
Copy adapters/cursor/.cursor/ into your project (or ~/.cursor/ for global use). Each skill becomes an on-demand rule; agents and commands surface via @<name> mentions in chat.
GitHub Copilot
Copy adapters/copilot/.github/ into your repo. copilot-instructions.md is applied to every chat in the repo; per-skill chatmodes appear in the chat-mode picker.
Aider
Drop adapters/aider/CONVENTIONS.md into your project root and add it to .aider.conf.yml:
read:
- CONVENTIONS.md
Load individual skills on demand with /read-only adapters/aider/skills/<name>.md.
Continue.dev
Copy adapters/continue/ into ~/.continue/ (merge with existing config.yaml). Skills load as rules; commands appear as slash prompts.
Any other assistant
Paste relevant sections from adapters/generic/PROMPTS.md — it's one self-contained markdown file with every skill, agent, and command. Works with anything that takes a system prompt.
Companion MCP server: live Moodle docs
moodle-mcp is a separate Model Context Protocol server that gives any MCP-capable client (Claude Desktop / Code, Cursor, Continue, Cline, Windsurf) live access to the canonical Moodle developer documentation. The skills here teach conventions; the MCP server provides authoritative lookups.
What it adds
| Tool | What it returns |
|---|---|
search_moodle_docs(query, limit, offset) | Top hits on moodledev.io with title, URL, headings, excerpt. Synonym expansion (cap→capability, ws→webservice, hook↔listener), quoted-phrase boost, BM25 scoring, pagination. |
fetch_moodle_page(url) | Full body + headings for one page — follow-up after a search. |
get_hooks_api_listeners() | Core Hooks API index + detected hook classes. |
get_capability_docs(component?) | Access API + RISK_* quick-reference; optional component scope. |
lookup_db_xmldb(query) | XMLDB / schema / upgrade.php patterns. |
list_plugin_types() | Every Moodle plugin type with one-line hint + docs URL. |
get_version_info() | Current Moodle versions parsed from /general/releases. |
search_tracker(query, limit) | Issue search against tracker.moodle.org (Jira). |
Plus MCP resources (moodle://docs/apis/...) and prompts (moodle-plugin-skeleton, moodle-capability-review, moodle-hooks-migration).
No API keys. Sitemap + disk cache + conditional GET. Pairs cleanly with this plugin.
Install (Claude Code)
Auto-wired when installing this plugin via marketplace. Requires uv on PATH:
brew install uv # or: pip install uv
The plugin's mcpServers entry runs uvx --from git+https://github.com/SaadRahman01/moodle-mcp moodle-mcp on demand — no manual pipx install needed.
Manual install (any client):
pipx install moodle-mcp
claude mcp add moodle moodle-mcp
Other clients: see moodle-mcp README.
What's inside
Skills (auto-activate)
| Skill | Triggers on |
|---|---|
moodle-plugin-development | Creating/modifying any plugin (all types) |
moodle-phpunit-testing | Writing/running PHPUnit tests |
moodle-behat-testing | Writing/running Behat acceptance tests |
moodle-amd-javascript | AMD modules, ES6, grunt build |
moodle-web-services | REST/AJAX/external functions, tokens |
moodle-security-audit | Security review, capability/sesskey audit |
moodle-privacy-gdpr | Privacy provider, GDPR compliance |
moodle-performance | MUC caching, query tuning, ad-hoc tasks |
moodle-accessibility | WCAG 2.1 AA, ARIA, screen reader checks |
moodle-theme-development | Boost child themes, SCSS, layouts |
moodle-upgrade-migration | Cross-version upgrades, deprecations |
moodle-mobile-app | Mobile app remote templates, addons |
moodle-hooks-api | 4.4+ Hooks API: authoring, listening, migrating magic callbacks |
Slash commands
| Command | What it does |
|---|---|
/moodle-new-plugin | Scaffold a new plugin (asks type + name) |
/moodle-bump-version | Bump version.php + add upgrade step |
/moodle-privacy-audit | Check privacy provider correctness |
/moodle-security-review | Run security checklist on a file/plugin |
/moodle-string-check | Find hard-coded English needing get_string |
/moodle-codestyle | Run phpcs with Moodle ruleset |
/moodle-mustache-lint | Lint Mustache templates: a11y, security, hard-coded strings |
/moodle-capability-audit | Cross-check db/access.php against runtime has_capability use |
Subagents
| Agent | Use case |
|---|---|
moodle-reviewer | Deep PR review against Moodle coding standards |
moodle-scaffolder | Generates a plugin skeleton from a brief |
Example: from prompt to plugin
You:
Build a
local_attendance_exportplugin that lets teachers export per-course attendance as CSV. Needs a capability, a settings page, and a CLI script.
Claude (with this plugin loaded) generates:
local/attendance_export/
├── version.php # 2026050200, requires 2024042200
├── settings.php # admin_setting_configtext for default delimiter
├── lib.php # local_attendance_export_extend_navigation()
├── cli/export.php # require($CFG->libdir . '/clilib.php'); cli params
├── classes/
│ ├── exporter.php # business logic, uses $DB
│ ├── output/renderer.php
│ └── privacy/provider.php # null_provider (no user data stored)
├── db/
│ ├── access.php # local/attendance_export:export
│ └── install.xml # (empty — no tables)
├── lang/en/local_attendance_export.php # pluginname, capability, settings strings
└── tests/exporter_test.php # PHPUnit, resetAfterTest, generator
Every file follows Moodle conventions. require_capability + require_sesskey wired. PHPUnit test uses $this->getDataGenerator(). Privacy provider declared. version.php bumped correctly.
Example prompts
See EXAMPLES.md for 30+ prompts covering scaffolding, upgrades, testing, security audits, performance tuning, theme work, and mobile app integration.
Comparison
| Vanilla Claude | + moodle-dev | |
|---|---|---|
| Knows frankenstyle naming | partial | yes |
Bumps version.php correctly | no | yes |
Adds upgrade_plugin_savepoint | no | yes |
| Writes privacy provider | rarely | always |
Adds require_sesskey on POST | no | yes |
Uses $DB not raw SQL | partial | yes |
Uses get_string() not English literals | no | yes |
| Generates passing PHPUnit + Behat | no | yes |
| Knows Moodle 4.4 Hooks API | no | yes |
Generates pluginfile.php callback | no | yes |
| Mobile app remote templates | no | yes |
Repository layout
.claude-plugin/ # Claude Code plugin manifest
skills/ # canonical skills (Claude reads these directly)
agents/ # canonical subagents
commands/ # canonical slash commands
adapters/ # generated per-assistant — DO NOT hand-edit
cursor/.cursor/rules/*.mdc
copilot/.github/copilot-instructions.md + chatmodes/*.chatmode.md
aider/CONVENTIONS.md + skills/ + commands/
continue/config.yaml + rules/ + prompts/
generic/PROMPTS.md # paste-anywhere single-file bundle
scripts/build-adapters.py # regenerates adapters/ from canonical files
install.sh # one-liner adapter installer for non-Claude assistants
tests/run.sh # structural test harness (run before commit)
docs/ADAPTER_AUTHORING.md # how to add a new assistant
.githooks/pre-commit # phpcs + PHPUnit + version.php monotonicity (install: git config core.hooksPath .githooks)
.github/workflows/lint.yml # CI: JSON, frontmatter, adapter sync, links, spellcheck, actionlint
.github/workflows/release.yml # tag-driven release: bundle + changelog extraction + GH release
.github/CODEOWNERS # auto-review routing
.github/dependabot.yml # weekly GitHub Actions updates
SECURITY.md # vulnerability disclosure policy
Editing workflow
- Edit canonical files under
skills/,agents/, orcommands/. - Run
python3 scripts/build-adapters.pyto regenerate adapters. - Commit both. CI fails if
adapters/drifts from canonical source.
Compatibility
| Moodle | Status |
|---|---|
| 5.2 | supported (PHP 8.3 min, /public doc-root, React core, Oracle dropped — releases 2026-04-20) |
| 5.1 | supported (PHP 8.2 min, /public doc-root introduced, Routing Engine) |
| 5.0 | supported |
| 4.5 | supported (LTS) |
| 4.4 | supported (Hooks API) |
| 4.3 | supported (legacy callbacks) |
| 4.2 | supported (core_external namespace) |
| ≤ 4.1 | best-effort (older external_api) |
PHP support: 8.1+ for Moodle 4.x, 8.2+ for 5.0/5.1, 8.3+ for 5.2. PHP 8.4 tested on 5.1+. Some skills note Moodle-version-specific differences.
Roadmap
-
moodle-question-bankskill (qtype/qbank deeper coverage) -
moodle-h5pskill -
moodle-lti-toolskill (LTI 1.3 tool/provider) -
moodle-analyticsskill (analytics models) -
moodle-cli-scriptslash command -
moodle-translation-exportslash command - MCP server wrapping
moodledev.iodocs search - MCP server for live Moodle dev instance (XMLDB editor, purge caches)
Vote / request: open an issue.
Contributing
PRs welcome — see CONTRIBUTING.md. Quick path:
- Fork
- Add a skill:
skills/<name>/SKILL.mdwithname+descriptionfrontmatter - Add a command:
commands/<name>.mdwith frontmatter - Add an agent:
agents/<name>.mdwith frontmatter - PR — CI lints JSON + frontmatter automatically
License
MIT — see LICENSE.
Code Claude generates with these skills should ship as GPL-3.0-or-later to be Moodle plugin directory compatible.
Credits
Built by Saad Rahman. Powered by Claude Code and the Moodle Developer Documentation.
If this saves you time, ⭐ the repo — helps others find it.
// faq
What is claude-moodle-dev?
Moodle development toolkit for AI coding assistants. Skills for XMLDB, Hooks API, PHPUnit, Behat, AMD, privacy/GDPR, security, accessibility. Native Claude Code plugin + adapters.. It is open-source on GitHub.
Is claude-moodle-dev free to use?
claude-moodle-dev is open-source under the MIT license, so it is free to use.
What category does claude-moodle-dev belong to?
claude-moodle-dev is listed under plugins in the Claudeers registry of Claude-compatible tools.
// embed badge
[](https://claudeers.com/claude-moodle-dev)
// retro hit counter
[](https://claudeers.com/claude-moodle-dev)
// reviews
// guestbook
// related in Claude Plugins
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explainin…
"CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/
financial-services — a Claude ecosystem project on GitHub.