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.

77

Quality

97%

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

93%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 disciplined overview skill: lean and dense with contracts and boundaries, executable where it counts (scaffold commands, complete hook example, exact test-host functions), with detail correctly delegated to a well-organized one-level-deep reference bundle. The only weakness is that the end-to-end plugin-building workflow is conveyed by section ordering and a testing section rather than explicit numbered steps with a validation-recovery loop.

Suggestions

Make the build sequence explicit — e.g., a short numbered workflow (choose format → scaffold → declare access → implement routes/hooks/UI → test) at the top, instead of relying on section order to imply it.

Add one feedback-loop line to the testing section (e.g., "On test failure, fix and re-run before extending coverage") to close the validation-retry gap for destructive capabilities such as content:publish and media:write.

DimensionReasoningScore

Conciseness

The ~130-line body carries only non-obvious, decision-critical information ("Sandboxed runtime code can use Web APIs but not Node.js built-ins", "Patch does not imply read", the 8 MiB body bound) and assumes Claude's competence with no padding about general concepts. The only redundancy — five references linked both inline and again in the References list — is navigation rather than over-explanation, so it stays at anchor 5 rather than 4.

5 / 5

Actionability

Provides copy-paste-ready scaffold commands ("pnpm dlx @emdash-cms/plugin-cli init my-plugin") and a complete, typed `src/plugin.ts` example, plus exact identifiers throughout ("createPluginTestHost()", "host.http.respond()", "ctx.storage.<collection>", import paths "emdash/plugin"). These fully cover the common cases; the one omission (no inline `emdash-plugin.jsonc` manifest snippet) is a shape the CLI generates, so it does not fall to anchor 4's "minor gaps".

5 / 5

Workflow Clarity

Sections follow the natural build order — Choose a format → Scaffold → Declare access → Routes/Hooks/Admin UI → Runner parity → Test the production boundary — with real validation checkpoints (the two test-host tiers, "Dispose every host after use", `pnpm run test` in the scaffold). It is anchor 4 rather than 5 because the sequence is implied by section order rather than explicit numbered steps, and there is no fix-and-retry feedback loop or checklist; it stays above anchor 3 because validation is concrete and present, not missing.

4 / 5

Progressive Disclosure

The overview holds decisions while ~2,300 lines of per-API detail are split across 12 real reference files, each well-signaled inline from the section that needs it ("Read [API routes and MCP tools](./references/api-routes.md)") and in a consolidated list. References are one level deep with only sibling-level cross-links (e.g., admin-ui.md → block-kit.md), matching anchor 5; the inline 28-row capability table is summary-level decision content, not misplaced detail.

5 / 5

Total

19

/

20

Passed

Description

100%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 is a model third-person trigger description: a concrete enumeration of the skill's capability surface followed by an explicit "Use when" clause with natural trigger phrases. It contains no fluff, no over-claims, and is unmistakably scoped to EmDash plugins.

DimensionReasoningScore

Specificity

Enumerates concrete capabilities — "sandboxed hooks, routes, storage, content and media APIs, MCP tools, and declarative admin UI, or native React and Astro extensions" — with no vague filler, matching the anchor for multiple specific concrete actions with comprehensive coverage of the plugin domain. It is not anchor 4, which requires minor gaps in coverage; none are visible.

5 / 5

Completeness

Explicitly answers both "what" ("Create EmDash CMS plugins with sandboxed hooks, routes, ... MCP tools, and declarative admin UI, or native React and Astro extensions") and "when" ("Use when scaffolding or implementing an EmDash plugin") with concrete trigger phrases — the anchor-5 pattern. It is not anchor 4 because the "when" clause is explicit and specific rather than improvable.

5 / 5

Trigger Term Quality

"Use when scaffolding or implementing an EmDash plugin" plus natural terms users would actually say ("MCP tools", "React and Astro extensions", "admin UI", "hooks", "routes") give comprehensive coverage for this niche, including both action verbs and both plugin formats. No natural term is missing in a way that would fit anchor 4's "a few natural terms missing".

5 / 5

Distinctiveness Conflict Risk

"EmDash CMS" names a clear niche with distinct triggers ("scaffolding or implementing an EmDash plugin"), so no other skill would plausibly fire for this request. Minimal conflict risk matches anchor 5; anchor 4 would require overlap with closely related skills, which the product-specific naming precludes.

5 / 5

Total

20

/

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/starter-cloudflare/.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.