Skip to main content
rule official · GitHub

moodle — GitHub Copilot rule: Moodle code that fits the core

This rule tells Copilot how to write Moodle code: Frankenstyle namespaces, Mustache templates, mandatory security functions. Useful when you build plugins or themes.

Install into GitHub Copilot · Manually: put the files in place All methods and platforms ↓
.github/instructions/moodle.instructions.md
Open on GitHub

What moodle does

The file frames the repository as a Moodle project and asks Copilot to match the core version you actually run. It lists the plugin layout: /db, /lang, /classes, /templates, plus /version.php, /settings.php and /lib.php when needed. Classes get a namespace tied to the component — local_myplugin, mod_forum, block_mycatalog.

Security gets its own section. Database calls go through $DB with placeholders, access checks use require_login() and require_capability(), and request parameters come from required_param() or optional_param(). HTML belongs in renderers and Mustache, not inside PHP. JavaScript uses AMD modules, not inline scripts.

The rule applies to **/*.php, **/*.js, **/*.mustache, **/*.xml, **/*.css and **/*.scss. One thing to watch: PHP has to stay compatible with the core version, and newer syntax breaks that. So Copilot won't hand you a Moodle function that doesn't exist.

What it helps with

  • scaffold a local plugin with version.php and settings.php
  • add a table in db/install.xml plus an upgrade script
  • build a form with moodleform
  • render a table through a renderer and Mustache
  • wire capability and parameter checks the Moodle way

Example prompts for the agent

  • Generate a basic local plugin with version.php, settings.php, and lib.php
  • Create a new table in db/install.xml and an upgrade script in db/upgrade.php
  • Create a renderer with Mustache to display a table

How to install moodle

Manually: put the files in place

.github/instructions/moodle.instructions.md

The applyTo field sets which files it applies to

Step by step, with commands for each platform: AGENTS.md vs CLAUDE.md: what they are and which one to use

Questions about moodle

How do I install the moodle rule in GitHub Copilot?

Place the file at .github/instructions/moodle.instructions.md in your repository. Copilot picks it up for the files listed in applyTo.

What does the moodle rule do?

It gives Copilot Moodle project context: plugin structure, Frankenstyle namespaces, $DB usage and security functions, HTML only in Mustache.

Which files does the rule cover?

**/*.php, **/*.js, **/*.mustache, **/*.xml, **/*.css and **/*.scss — that's what applyTo lists.

Source text

moodle.instructions.md · MIT
---
applyTo: '**/*.php, **/*.js, **/*.mustache, **/*.xml, **/*.css, **/*.scss'
description: 'Instructions for GitHub Copilot to generate code in a Moodle project context.'
---

# Project Context

This repository contains a Moodle project. Ensure that any generated code is compatible with the specific Moodle version used in this project (for example, Moodle 3.11, 4.1 LTS, or later).

It includes:
- Plugin development (local, block, mod, auth, enrol, tool, etc.)
- Theme customization
- CLI scripts
- Integrations with external services using the Moodle API

# Code Standards

- Follow the official Moodle Coding guidelines: https://moodledev.io/general/development/policies/codingstyle
- PHP must be compatible with the core version (e.g., PHP 7.4 / 8.0 / 8.1).
- Do not use modern syntax that is not supported by core if it breaks compatibility.
- Class naming must use Moodle namespaces.
- Follow Moodle’s standard plugin directory layout (for example: classes/output, classes/form, db/, lang/, templates/…).
- Mandatory use of Moodle security functions:
  - `$DB` with SQL placeholders
  - `require_login()`, `require_capability()`
  - Parameters handled with `required_param()` / `optional_param()`

# Code Generation Rules

- When creating new PHP classes in plugins, use the Moodle component (Frankenstyle) namespace that matches the plugin's component name, e.g. `local_myplugin`, `mod_forum`, `block_mycatalog`, `tool_mytool`.
- In plugins, always respect the structure:
  - /db
  - /lang
  - /classes
  - /templates
  - /version.php
  - /settings.php
  - /lib.php (only if necessary)

- Use renderers and Mustache templates for HTML. Do not mix HTML inside PHP.
- In JavaScript code, use AMD modules, not inline scripts.
- Prefer Moodle API functions over manual code whenever possible.
- Do not invent Moodle functions that do not exist.

# Examples of What Copilot Should Be Able to Answer

- "Generate a basic local plugin with version.php, settings.php, and lib.php."
- "Create a new table in db/install.xml and an upgrade script in db/upgrade.php."
- "Generate a Moodle form using moodleform."
- "Create a renderer with Mustache to display a table."

# Expected Style

- Clear and specific answers in the Moodle context.
- Always include files with full paths.
- If there are multiple ways to do something, use the approach recommended by Moodle.

© github · MIT · github/awesome-copilot

Similar IDE rules

All IDE rules for Backend and APIs →

From the same set732

The whole set →
pcf-code-components A rule that teaches Copilot how Power Apps code components are built: manifest, TypeScript implementation, resources. Useful when editing ControlManifest.Input.xml or index.ts. ★ 40,418repo stars oop-design-patterns A GitHub Copilot rule that steers code generation and refactoring toward GoF design patterns and SOLID principles in object-oriented code. ★ 40,418repo stars no-heredoc A rule that stops the agent from writing files through terminal heredocs and redirections, because those commands corrupt content in VS Code. ★ 40,418repo stars nestjs This rule feeds GitHub Copilot a set of NestJS conventions: modules, DI, DTOs and validation. Useful when the agent writes TypeScript server code. ★ 40,418repo stars langchain-python A GitHub Copilot instruction file that steers the agent toward LangChain patterns: Runnable, LCEL, chat models, retrievers and vector stores. Useful when your Python code talks to LangChain. ★ 40,418repo stars java-upgrade A rule that points Copilot at the java-upgrade skill whenever you change the Java version in Maven or Gradle files. Handy for LTS jumps. ★ 40,418repo stars intellij-java-kotlin A rule that keeps Copilot inside the project's build model when working on Java and Kotlin in IntelliJ IDEA, with validation that matches CI. ★ 40,418repo stars github-actions-ci-cd-best-practices A GitHub Copilot rule that guides workflow structure, token permissions, caching and matrix setups whenever you touch files under .github/workflows/. ★ 40,418repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor