CtrlK
BlogDocsLog inGet started
Tessl Logo

webmcp

Implements and debugs browser WebMCP integrations in JavaScript or TypeScript web apps. Use when exposing imperative tools through document.modelContext (with a navigator.modelContext fallback), annotating HTML forms for declarative tools, handling agent-invoked form flows, or validating WebMCP behavior in the current Chrome preview. Don't use for server-side MCP servers, REST tool backends, or non-browser providers.

70

Quality

85%

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

77%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-structured instruction-only skill body: strongly actionable, clearly sequenced with real validation checkpoints, and exemplary progressive disclosure over a verified bundle. The one real weakness is conciseness — Chrome version gating is pinned inline throughout Steps 3–5 and Error Handling instead of being consolidated in references/compatibility.md or a dedicated version section.

Suggestions

Consolidate the inline Chrome version pins (146–149, 151+, 153+, 154.0.8017.0+, 156.0.8067.0+, the 148 transition window) into references/compatibility.md or a single 'Version gating' section, keeping only the behavior difference in the step text.

Add a minimal complete registerTool() code block (name, description, inputSchema, execute with { signal }) to Step 3, or point to the template asset at the top of that step, so the imperative path is copy-paste ready without a reference hop.

Trim redundant restatements between Step 3 items 2–4 and the Error Handling bullets (e.g. the document/navigator fallback and the try/catch pattern are each explained twice).

DimensionReasoningScore

Conciseness

The body is imperative and free of explanations Claude already knows, but it carries roughly eight scattered time-sensitive version pins ("Chrome 146–149", "Chrome 151+", "Chrome 154.0.8017.0+", "Chrome 156.0.8067.0+", "Chrome 153+", "Chrome 148 transition window") that the rubric flags as a conciseness penalty and that largely duplicate the stated purpose of references/compatibility.md. Not 2 because there is no padding or concept-teaching; not 4 because the version-gated detail is not confined to an old-patterns/deprecated section and would need real trimming to fit the higher anchor.

3 / 5

Actionability

Concrete throughout: an executable command ("node scripts/find-webmcp-targets.mjs ."), a copy-paste feature-detection pattern ("const modelContext = document.modelContext || navigator.modelContext;"), exact annotation flags (readOnlyHint, consequentialHint, debugging, untrustedContentHint), declarative attributes (toolname, tooldescription, toolautosubmit), and named error classes with fixes. Not 5 because no complete executable registerTool() example appears in the body — the full code lives one hop away in assets/model-context-registry.template.ts, leaving a minor gap against the copy-paste-ready anchor.

4 / 5

Workflow Clarity

Five clearly sequenced steps (identify surface → choose shape → implement → wire UX → validate) with an explicit Step 5 validation checklist (lifecycle, invalid inputs, cancellation, deterministic-then-NL routing, "Run the workspace build, typecheck, or tests") and a dedicated Error Handling section with named exceptions and recovery actions — a full feedback loop. Meets the anchor-5 example's structure of validate/fix/retry.

5 / 5

Progressive Disclosure

The ~78-line body is an overview that delegates depth via conditionally signaled, one-level-deep references that all exist in the bundle ("Read references/webmcp-reference.md before writing code", "Read references/declarative-api.md when ...", compatibility.md, troubleshooting.md, the registry template asset, and the discovery script). References are one level deep with clear when-to-read triggers and no nesting, matching the anchor-5 example.

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.

An excellent description: third-person voice, a concrete two-verb what-clause, explicit multi-condition Use-when triggers, and a Don't-use boundary clause that sharply limits conflict with generic MCP skills. The only minor room for improvement is adding one or two more user-side synonyms for the niche.

DimensionReasoningScore

Specificity

"Implements and debugs browser WebMCP integrations in JavaScript or TypeScript web apps" plus the enumerated capabilities ("exposing imperative tools through document.modelContext", "annotating HTML forms for declarative tools", "handling agent-invoked form flows", "validating WebMCP behavior in the current Chrome preview") list multiple concrete actions that comprehensively cover the WebMCP domain. Not 4 because coverage extends past a couple of actions into every major capability shape (imperative, declarative, validation, debugging) with no noticeable gap.

5 / 5

Completeness

Explicitly answers both: what — "Implements and debugs browser WebMCP integrations in JavaScript or TypeScript web apps"; when — "Use when exposing imperative tools ... annotating HTML forms ... handling agent-invoked form flows, or validating WebMCP behavior in the current Chrome preview". It even adds negative triggers ("Don't use for server-side MCP servers, REST tool backends, or non-browser providers"), which exceeds the anchor-5 example.

5 / 5

Trigger Term Quality

Strong natural keywords users would actually say: "WebMCP", "document.modelContext", "HTML forms", "agent-invoked", "Chrome preview", "JavaScript or TypeScript web apps". Not 5 because a few plausible synonyms are absent (e.g. "browser tools", "page-integrated MCP", "Chrome agent tools"), though for this niche the API surface names are the dominant real-world vocabulary.

4 / 5

Distinctiveness Conflict Risk

"WebMCP" is a clear niche with distinct trigger vocabulary, and the exclusion clause "Don't use for server-side MCP servers, REST tool backends, or non-browser providers" pre-empts the main overlap risk (generic MCP skills). Minimal conflict risk.

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
webmaxru/web-ai-agent-skills
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.