Content
71%Weight 40%Scale 1-5Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
A high-quality, code-dense skill body: it teaches the EventHandler pattern through executable TypeScript templates, enforces architectural rules (thin handlers, model filtering, registration requirements), and includes an explicit type-resolution checkpoint. The main weakness is structure: with no references/ bundle, the self-defined-domain-events section is a large inlined block that the rubric expects split into a one-level-deep reference file.
Suggestions
Move the 'Defining Your Own Domain Events' material (abstractions.ts, events.ts, and UseCase publishing examples) into a references/ file such as references/defining-domain-events.md, leaving a concise summary and a clearly signaled link in SKILL.md.
Collapse the 'How to Implement' and 'Injecting Dependencies' sections into one template (they differ only in the injected dependency), stating the dependency-variation rule in a sentence instead of a second full code block.
Add a post-implementation verification step (e.g., typecheck or a build check before 'yarn webiny deploy api --env=dev') to close the workflow's feedback loop.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body is lean: sections are short, assume competence (no explanation of what DI or events are in general), and every paragraph carries Webiny-specific rules Claude would not know. Minor redundancy keeps it below the top anchor — 'How to Implement' and 'Injecting Dependencies' show two near-identical handler scaffolds differing only in the injected dependency, which could be collapsed. | 4 / 5 |
Actionability | Mostly executable, copy-paste-ready TypeScript covering the common cases (handler implementation, event definition, publishing from a UseCase, reacting to external CMS events, registration), plus a concrete deploy command. Minor gap: the primary template uses placeholder imports ('SomeEventHandler from "webiny/api/<category>"') requiring substitution, while the external-event example is fully concrete — placing it between 'concrete code with minor gaps' (4) and 'fully executable covering common cases' (5), noticeably above the midpoint. | 4 / 5 |
Workflow Clarity | The sequence is clear and well-ordered: define payloads/handler abstractions in abstractions.ts → event classes in events.ts → publish from the UseCase (before → operation → after) → register in Extension.ts → deploy. The 'Resolving Types (MANDATORY)' section is an explicit numbered pre-flight checkpoint ('read the source file... Do not assume or guess property names'), and Key Rules restate publish order and failure modes. It falls short of the top anchor because there is no post-write validation or feedback loop (e.g., typecheck/build verification after implementing), only the pre-code source-reading checkpoint. | 4 / 5 |
Progressive Disclosure | Section headers are clear and there is helpful cross-skill navigation ('Related Skills', 'See webiny-api-architect'), but the file is a ~290-line monolith with no bundle files: the entire 'Defining Your Own Domain Events' half (~110 lines of abstractions/events/UseCase code) is inlined in SKILL.md where the rubric expects a one-level-deep reference file. This matches 'some structure, but content that should be separate is inline' (3) — it is above the poorly-structured anchor (2) thanks to clean headers and signaled cross-references, but below 'good structure, most content appropriately placed' (4). | 3 / 5 |
Total | 15 / 20 Passed |