moodle — правило для GitHub Copilot: код под Moodle без сюрпризов
Правило задаёт Copilot стандарты Moodle: Frankenstyle-неймспейсы, Mustache-шаблоны, обязательные функции безопасности. Пригодится, если пишете плагины и темы.
.github/instructions/moodle.instructions.mdЧто делает moodle
Файл описывает проект как Moodle-репозиторий и просит генерировать код под ту версию ядра, что стоит у вас. Внутри — требования к структуре плагина: каталоги /db, /lang, /classes, /templates, файлы /version.php, /settings.php и /lib.php, если он правда нужен. Классы получают неймспейс по компоненту — local_myplugin, mod_forum, block_mycatalog.
Отдельный блок про безопасность. Запросы к базе идут через $DB с плейсхолдерами, доступ проверяют require_login() и require_capability(), параметры берут через required_param() и optional_param(). HTML живёт в renderer и Mustache, а не внутри PHP; в JavaScript — AMD-модули вместо инлайн-скриптов.
Правило применяется к **/*.php, **/*.js, **/*.mustache, **/*.xml, **/*.css и **/*.scss. Учтите: PHP должен быть совместим с версией ядра, и синтаксис новее неё ломает совместимость. Поэтому Copilot не подставит функции, которых в Moodle нет.
Какие задачи решает
- создать локальный плагин с version.php и settings.php
- добавить таблицу в db/install.xml и скрипт обновления
- собрать форму на moodleform
- вывести таблицу через renderer и Mustache
- проверить права и параметры запроса по стандарту Moodle
Примеры запросов агенту
- Сгенерируй базовый локальный плагин с version.php, settings.php и lib.php
- Создай новую таблицу в db/install.xml и upgrade-скрипт в db/upgrade.php
- Сделай renderer с Mustache для вывода таблицы
Как установить moodle
Вручную: положить файлы
.github/instructions/moodle.instructions.mdПоле applyTo задаёт, к каким файлам применять
Вручную: положить файлы
.claude/rules/moodle.mdПоле paths во frontmatter ограничивает файлы: applyTo из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.cursor/rules/moodle.mdcВо frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится
Вручную: положить файлы
.devin/rules/moodle.mdВручную: положить файлы
.clinerules/moodle.mdПо шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать
Из того же набора674
Весь набор →Похожие
Рядом в теме «Бэкенд и API»
Всё по теме «Бэкенд и API» →Вопросы о moodle
Как установить правило moodle в GitHub Copilot?
Положите файл по пути .github/instructions/moodle.instructions.md в репозитории. Copilot подхватит его для файлов, указанных в applyTo.
Что делает правило moodle?
Задаёт Copilot контекст Moodle-проекта: структуру плагинов, неймспейсы Frankenstyle, работу с $DB и функциями безопасности, HTML только в Mustache.
На какие файлы распространяется правило?
На **/*.php, **/*.js, **/*.mustache, **/*.xml, **/*.css и **/*.scss — это указано в applyTo.
Исходный текст
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