CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

creating-plugins

Create EmDash CMS plugins with sandboxed hooks, routes, storage, content and media APIs, MCP tools, and declarative admin UI, or native React and Astro extensions. Use when scaffolding or implementing an EmDash plugin.

70

Quality

88%

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

SKILL.md
Quality
Evals
Security

Quality

Content

78%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 well-engineered overview: lean, EmDash-specific throughout, with a logical build sequence and an exemplary one-level-deep reference structure verified against the real bundle. The gaps are minor: no emdash-plugin.jsonc declaration snippet, some duplicated reference listings, and validation loops deferred to references.

Suggestions

Add a minimal emdash-plugin.jsonc snippet (e.g. declaring content:read and network:request with allowedHosts) next to the plugin.ts example so capability declaration is copy-paste ready.

De-duplicate the reference listings: keep the in-section 'Read [X]' pointers and trim the repeated entries in the References index, or vice versa.

Include a short private-route example using pluginRoute() and pluginResponse() to make the routes section as executable as the scaffold section.

DimensionReasoningScore

Conciseness

The body is dense and assumes competence ("Source types and production-boundary tests take precedence over examples", "Patch does not imply read") with no explanation of concepts Claude already knows. Not 5 because the 27-row capability table inline and the reference list duplicated between 'Declare access' and the 'References' section are tokens that could be trimmed or consolidated.

4 / 5

Actionability

Concrete and mostly executable: a runnable scaffold command block ("pnpm dlx @emdash-cms/plugin-cli init my-plugin"), a complete src/plugin.ts example, named test hosts (createPluginTestHost(), createPluginRuntimeTestHost()), and specific inspector calls (host.http.respond(), host.http.requests()). Not 5 because "Declare every host API in emdash-plugin.jsonc" and the routes section lack a copy-paste-ready snippet.

4 / 5

Workflow Clarity

Sections follow a coherent build sequence (choose format → scaffold → declare access → routes/hooks/admin UI → runner parity → test), and validation is present: "pnpm run test" immediately after scaffold, two named test hosts with scoped use cases, and "Dispose every host after use". Not 5 because the body has no explicit validate-and-fix loop for capability/manifest errors (deferred to references), and not 3 since checkpoints are explicitly named rather than implicit.

4 / 5

Progressive Disclosure

All 12 referenced files exist, are exactly one level deep, and are linked from the section where each topic arises ("Read [Hooks](./references/hooks.md)") plus a consolidated References index; the overview/detail split is appropriate. Verified against the actual bundle: no nested or dangling references, and the single sibling cross-link (block-kit → portable-text-blocks) stays flat.

5 / 5

Total

17

/

20

Passed

Description

92%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.

A strong description: concrete, comprehensive capability list in third person, with an explicit and specific 'Use when' trigger clause tied to a clearly named niche. The only weakness is modest synonym coverage in trigger terms.

Suggestions

Add one or two natural variations users might say, e.g. '...or adding Block Kit widgets and extensions to an EmDash site', to broaden trigger matching.

DimensionReasoningScore

Specificity

"Create EmDash CMS plugins with sandboxed hooks, routes, storage, content and media APIs, MCP tools, and declarative admin UI, or native React and Astro extensions" lists multiple specific concrete capabilities and covers both plugin formats comprehensively. Not 4 because coverage of the capability surface (hooks, routes, storage, content/media APIs, MCP tools, admin UI, native extensions) leaves no notable gaps.

5 / 5

Completeness

Explicitly answers both: what ("Create EmDash CMS plugins with sandboxed hooks, routes, storage, content and media APIs, MCP tools, and declarative admin UI, or native React and Astro extensions") and when ("Use when scaffolding or implementing an EmDash plugin") with a concrete trigger phrase. Not 4 because the 'when' clause is already explicit and specific rather than needing more detail.

5 / 5

Trigger Term Quality

Natural terms users would say are present: "plugin", "scaffolding", "implementing", "hooks", "routes", "MCP tools", "admin UI". Not 5 because common variations a user might say — "extension", "Block Kit", "field widget", "Portable Text" — are absent, though they appear only in the body, not the description.

4 / 5

Distinctiveness Conflict Risk

"EmDash CMS plugins" names a clear niche with distinct triggers ("scaffolding or implementing an EmDash plugin"); no other plausible skill overlaps this domain. Uses third-person imperative voice consistent with the anchors.

5 / 5

Total

19

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

emdash-cms/emdash

Path

templates/portfolio/.agents/skills/creating-plugins/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.