mcpField
M
moodle-external-api-development

moodle-external-api-development

github.com/sickn33開発48.7k509 回インストール今日更新
リポジトリ

moodle-external-api-development について

Moodle LMS のカスタム外部 Web サービス API 開発を支援するスキルです。プラグインのエンドポイント、REST/AJAX のパターン、安全性と検証の要点を扱います。

主な機能

  1. 01Moodle 外部 API のパターン
  2. 02REST と AJAX のエンドポイント指針
  3. 03読み書き API の例
  4. 04安全性と検証の要件

活用シーン

  1. 01Moodle プラグイン向け API の作成
  2. 02コース管理エンドポイントの追加
  3. 03クイズやレポート機能の公開
  4. 04モバイルアプリのバックエンド構築

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill moodle-external-api-development

インストール後、Claude Code で/moodle-external-api-developmentを入力して読み込まれたか確認します。

同梱ファイルreferences/detailed-guide.md

詳細

Moodle 外部 API 開発

このスキルでは、Moodle の外部 API フレームワークとコーディング規約に従って、Moodle LMS 用のカスタム外部 Web サービス API を作成する方法を説明します。

詳細ガイド

このスキルを実行する前に、詳細ガイドをお読みください。手順と参考資料の全内容が記載されています。安全性、前提条件、検証要件は必須事項として扱ってください。特定の作業に取り組む場合は関連するセクションを読み、最初から最後まで作業する場合はガイド全体をお読みください。

このスキルを使用する場面

  • Moodle プラグイン用のカスタム Web サービスを作成する
  • コース管理用の REST/AJAX エンドポイントを実装する
  • 小テストの操作、ユーザー追跡、レポート作成用の API を構築する
  • Moodle の機能を外部アプリケーションに公開する
  • Moodle を使用してモバイルアプリのバックエンドを開発する

実装例の断片

シンプルな読み取り API(小テストの受験記録を取得)
<?php
namespace local_userlog\external;

defined('MOODLE_INTERNAL') || die();
require_once("$CFG->libdir/externallib.php");

use external_api;
use external_function_parameters;
use external_single_structure;
use external_value;

class get_quiz_attempts extends external_api {
    public static function execute_parameters() {
        return new external_function_parameters([
            'userid' => new external_value(PARAM_INT, 'User ID'),
            'courseid' => new external_value(PARAM_INT, 'Course ID')
        ]);
    }

    public static function execute($userid, $courseid) {
        global $DB;

        $params = self::validate_parameters(self::execute_parameters(), [
            'userid' => $userid,
            'courseid' => $courseid
        ]);

        $context = \context_course::instance($params['courseid']);
        self::validate_context($context);
        require_capability('mod/quiz:viewreports', $context);
        // Instructor-report endpoint; add group/quiz-specific visibility restrictions as needed.

        $sql = "SELECT COUNT(*) AS quiz_attempts
                FROM {quiz_attempts} qa
                JOIN {quiz} q ON qa.quiz = q.id
                WHERE qa.userid = :userid AND q.course = :courseid";

        $attempts = $DB->get_field_sql($sql, [
            'userid' => $params['userid'],
            'courseid' => $params['courseid']
        ]);

        return ['quiz_attempts' => (int)$attempts];
    }

    public static function execute_returns() {
        return new external_single_structure([
            'quiz_attempts' => new external_value(PARAM_INT, 'Total number of quiz attempts')
        ]);
    }
}
複雑な書き込み API(カテゴリから小テストを作成)

参照先の create_quiz_from_categories.php は同梱されていません。読み取り、実行、またはトランザクションのテストを行ったと主張しないでください。インストールされている Moodle リリースの活動/問題 API を、コンテキスト/ケイパビリティのチェック、グループの可視性、入力値の制限、ロールバックテストとともに使用してください。ガイドにある直接挿入の断片は、過去のスキーマの例であり、完全な小テストビルダーではありません。最小権限のテストロールと合成学習者データを使用し、本番環境の管理者トークンをシェル引数に含めないでください。

制限事項

  • 作業内容が上記の範囲に明確に該当する場合にのみ、このスキルを使用してください。
  • 環境固有の検証、テスト、専門家によるレビューの代わりとして、出力を扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不明な場合は、作業を中断して確認してください。

コメント