claudeers.
// Claude Plugins

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…

// Claude Plugins[ cli ][ api ][ desktop ][ web ][ mobile ][ claude ]#claude#ai-coding-assistant#claude-plugin#cluade-ai#edtech#lms#moodle#moodle-plugin#pluginsMIT$open-sourceupdated 7 days ago

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.
// or install directly (claude-plugin)

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
// or clone
git clone https://github.com/SaadRahman01/claude-moodle-dev

// compatibility

Platformscli, api, desktop, web, mobile
Operating systems
AI compatibilityclaude
LicenseMIT
Pricingopen-source
LanguagePython

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 — live moodledev.io documentation 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_savepoint rules
  • Privacy API contracts (null_provider vs request\plugin\provider)
  • Capability + sesskey + require_login security pattern
  • Moodle 4.4+ Hooks API vs legacy lib.php callbacks
  • pluginfile.php file-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

ToolWhat it returns
search_moodle_docs(query, limit, offset)Top hits on moodledev.io with title, URL, headings, excerpt. Synonym expansion (capcapability, wswebservice, hooklistener), 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)

SkillTriggers on
moodle-plugin-developmentCreating/modifying any plugin (all types)
moodle-phpunit-testingWriting/running PHPUnit tests
moodle-behat-testingWriting/running Behat acceptance tests
moodle-amd-javascriptAMD modules, ES6, grunt build
moodle-web-servicesREST/AJAX/external functions, tokens
moodle-security-auditSecurity review, capability/sesskey audit
moodle-privacy-gdprPrivacy provider, GDPR compliance
moodle-performanceMUC caching, query tuning, ad-hoc tasks
moodle-accessibilityWCAG 2.1 AA, ARIA, screen reader checks
moodle-theme-developmentBoost child themes, SCSS, layouts
moodle-upgrade-migrationCross-version upgrades, deprecations
moodle-mobile-appMobile app remote templates, addons
moodle-hooks-api4.4+ Hooks API: authoring, listening, migrating magic callbacks

Slash commands

CommandWhat it does
/moodle-new-pluginScaffold a new plugin (asks type + name)
/moodle-bump-versionBump version.php + add upgrade step
/moodle-privacy-auditCheck privacy provider correctness
/moodle-security-reviewRun security checklist on a file/plugin
/moodle-string-checkFind hard-coded English needing get_string
/moodle-codestyleRun phpcs with Moodle ruleset
/moodle-mustache-lintLint Mustache templates: a11y, security, hard-coded strings
/moodle-capability-auditCross-check db/access.php against runtime has_capability use

Subagents

AgentUse case
moodle-reviewerDeep PR review against Moodle coding standards
moodle-scaffolderGenerates a plugin skeleton from a brief

Example: from prompt to plugin

You:

Build a local_attendance_export plugin 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 namingpartialyes
Bumps version.php correctlynoyes
Adds upgrade_plugin_savepointnoyes
Writes privacy providerrarelyalways
Adds require_sesskey on POSTnoyes
Uses $DB not raw SQLpartialyes
Uses get_string() not English literalsnoyes
Generates passing PHPUnit + Behatnoyes
Knows Moodle 4.4 Hooks APInoyes
Generates pluginfile.php callbacknoyes
Mobile app remote templatesnoyes

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

  1. Edit canonical files under skills/, agents/, or commands/.
  2. Run python3 scripts/build-adapters.py to regenerate adapters.
  3. Commit both. CI fails if adapters/ drifts from canonical source.

Compatibility

MoodleStatus
5.2supported (PHP 8.3 min, /public doc-root, React core, Oracle dropped — releases 2026-04-20)
5.1supported (PHP 8.2 min, /public doc-root introduced, Routing Engine)
5.0supported
4.5supported (LTS)
4.4supported (Hooks API)
4.3supported (legacy callbacks)
4.2supported (core_external namespace)
≤ 4.1best-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-bank skill (qtype/qbank deeper coverage)
  • moodle-h5p skill
  • moodle-lti-tool skill (LTI 1.3 tool/provider)
  • moodle-analytics skill (analytics models)
  • moodle-cli-script slash command
  • moodle-translation-export slash command
  • MCP server wrapping moodledev.io docs 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:

  1. Fork
  2. Add a skill: skills/<name>/SKILL.md with name + description frontmatter
  3. Add a command: commands/<name>.md with frontmatter
  4. Add an agent: agents/<name>.md with frontmatter
  5. 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.

2 views
33 stars
unclaimed
updated 7 days ago

// embed badge

claude-moodle-dev on Claudeers
[![Claudeers](https://claudeers.com/api/badge/claude-moodle-dev.svg)](https://claudeers.com/claude-moodle-dev)

// retro hit counter

claude-moodle-dev hit counter
[![Hits](https://claudeers.com/api/counter/claude-moodle-dev.svg)](https://claudeers.com/claude-moodle-dev)

// reviews

// guestbook

0/500

// related in Claude Plugins

🔓

A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.

// pluginsmultica-ai/203,096[ claude ]
🔓

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…

// pluginsanthropics/Python141,574[ claude ]
🔓

"CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/

// pluginsHKUDS/Python47,363Apache-2.0[ claude ]
🔓

financial-services — a Claude ecosystem project on GitHub.

// pluginsanthropics/Python34,276Apache-2.0[ claude ]
→ see how claude-moodle-dev connects across the ecosystem