CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

moodle-external-api-development

This skill guides you through creating custom external web service APIs for Moodle LMS, following Moodle's external API framework and coding standards.

Quality

68%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./plugins/AI-Agents-Safe-Coding-Skills-claude/skills/moodle-external-api-development/SKILL.md

The canonical home for this skill is moodle-external-api-development in administrakt0r/AI-Agents-Safe-Coding-Skills

SKILL.md
Quality
Evals
Security

Quality

Content

63%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, highly actionable Moodle external-API guide with executable code, validation steps, and recovery checklists, undermined by redundancy (a conflicting second execute() in Step 6 and a duplicated Guidelines section), a ~590-line monolithic body, and a reference to an attached example file that is missing from the bundle. Tightening duplication and splitting advanced material into real reference files would move it into the top band.

Suggestions

Merge Step 6's error handling into the Step 3 execute() example (one canonical implementation) instead of presenting a second, conflicting execute($userid, $courseid) signature.

Delete or merge the final "Guidelines" section, which restates "Critical Steps" and the pitfalls/guidelines already covered inline.

Move the advanced patterns, table reference, and full examples into actual reference files (e.g. references/advanced-patterns.md, references/create_quiz_from_categories.php) and fix or remove the currently dangling "See attached create_quiz_from_categories.php" pointer.

DimensionReasoningScore

Conciseness

Most code is dense, Moodle-specific, and non-obvious (externallib structures, services.php registration, availability JSON), so much of it earns its tokens — but Step 6 re-implements execute() with a signature conflicting with Step 3's, the final "Guidelines" section repeats "Critical Steps" and the pitfalls section nearly verbatim, and lines like "PARAM_BOOL - Boolean values" explain the obvious. Not 2 because the padding is a minority of the document; not 4 because the duplicated execute() and repeated checklist are clear tightening targets.

3 / 5

Actionability

Nearly everything is copy-paste-ready: complete class skeletons, working services.php registration, curl token+call commands, a JavaScript AJAX example, and a full worked example. It falls short of 5 because the promised comprehensive example "See attached create_quiz_from_categories.php" does not exist in the bundle (no references/ directory), leaving a key advanced case unfulfilled.

4 / 5

Workflow Clarity

A clear six-step sequence with explicit validation (validate_parameters, validate_context, require_capability), transaction rollback, a pitfalls→solutions feedback loop, and debugging/plugin-structure checklists — matching the 5 anchor's elements. Dropped to 4 because Step 6 presents a second, conflicting execute() implementation (missing $options, different body) that muddies which sequence to follow, and the cap-relevant database feedback loops exist but the missing attached example leaves the write-API path partially unverifiable.

4 / 5

Progressive Disclosure

Section headers give real structure, but this ~590-line SKILL.md inlines advanced patterns (course-module creation, access restrictions, random-question SQL, a 14-row table reference) that belong in one-level-deep reference files, and its single outward reference — "See attached create_quiz_from_categories.php" — is a dangling pointer to a file that does not exist in the bundle. Structure present, but organization and the broken reference keep it at 3.

3 / 5

Total

14

/

20

Passed

Description

60%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description identifies a clear, distinctive Moodle niche with good natural keywords, but it describes only a single high-level action, uses second-person voice, and completely omits when to use the skill. Adding an explicit trigger clause and enumerating the concrete sub-tasks would lift it substantially.

Suggestions

Add an explicit trigger clause, e.g. "Use when developing Moodle plugins that expose REST/AJAX web services, external functions, or mobile-app backends."

Enumerate the concrete actions the skill covers (define execute_parameters/execute_returns, register services in db/services.php, handle errors, test via curl/AJAX) instead of the single phrase "creating custom external web service APIs".

Rewrite in third person ("Guides development of..." / "Creates custom external APIs for Moodle LMS") to remove the second-person "guides you through".

DimensionReasoningScore

Specificity

"creating custom external web service APIs for Moodle LMS" names the domain and one action, but lists no further concrete capabilities (defining parameters, registering services, testing, error handling) — a base 3 dropped to 2 because the second-person phrasing "This skill guides you through" violates the required third-person voice.

2 / 5

Completeness

The "what" is clear (create custom external web service APIs for Moodle following its framework), but there is no "Use when..." clause or any trigger guidance; per the rubric, a missing when-clause caps completeness at 3. Not 4 because "when" is entirely absent rather than merely under-specified.

3 / 5

Trigger Term Quality

Strong natural keywords — "Moodle", "LMS", "web service", "API" — match what a user would actually say, but common variations like "REST", "AJAX", "plugin", or "external service" are absent, so it falls just short of comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

"Moodle LMS" plus "external web service APIs" pins a clear niche that only another Moodle web-services skill could collide with; the platform-specific framing gives it distinct triggers and minimal conflict risk.

5 / 5

Total

14

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (601 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository

administrakt0r/AI-Agents-Safe-Coding-Skills

Path

plugins/AI-Agents-Safe-Coding-Skills-claude/skills/moodle-external-api-development/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.