CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/chrome-extension-messaging-tests

Asserts Chrome extension message-passing behaviour against a running extension: one-shot `chrome.runtime.sendMessage` plus the literal `return true` that holds the response channel open for an async `sendResponse`, `chrome.tabs.sendMessage` into one tab's content script, long-lived `chrome.runtime.connect` ports and their `onDisconnect` triggers, web-page messages gated by `externally_connectable`, and `chrome.runtime.connectNative` native-messaging hosts. Covers the payload rules a test must respect (Chrome uses JSON serialization rather than structured clone, so `Map` / `Set` / `Date` do not round-trip; maximum message size is 64 MiB) and the first-listener-wins rule when several `onMessage` listeners are registered. Scope is messaging behaviour on an already-running extension, not the install or reload step. Use when a message reaches no listener, a `sendResponse` callback never fires, a port disconnects mid-test, or a page origin has to be proven allowed before publishing.

79

Quality

99%

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

Overview
Quality
Evals
Security
Files

Quality

Content

100%

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

A tightly written, actionable skill body that leads with executable code, sequences test authoring through an explicit validation checkpoint, and cleanly splits deep material into two real one-level references. It avoids basic-concept padding and every section earns its place.

DimensionReasoningScore

Conciseness

The body assumes Claude's competence — it never explains what a Chrome extension or service worker is — and concentrates on non-obvious, load-bearing facts (the literal `return true`, JSON-vs-structured-clone payload table, first-listener-wins, 30-second idle termination), so tokens earn their place rather than padding basics; the mild re-listing of the five shapes in "How to use" step 1 is reinforcing, not fluff.

3 / 3

Actionability

Authoring gives real, copy-paste-ready JavaScript for sender/listener pairs and executable jest-style tests (e.g. `expect(response).toEqual({ statusCode: 200 })` and the `connecting with an unknown port name disconnects immediately` test in the ports reference), not pseudocode; the small `sendFromContentScript` / `settle` helpers are obvious test utilities rather than missing key details.

3 / 3

Workflow Clarity

"How to use" is a clear six-step sequence ending in an explicit validation checkpoint ("Re-check the draft against the Anti-patterns table before committing"), backed by the Anti-patterns table and the worked-example test checklist; the missing-validation cap does not apply because this is test authoring, not a destructive or batch operation.

3 / 3

Progressive Disclosure

SKILL.md is an overview that keeps the two one-shot shapes inline and pushes the more incidental depth to two clearly signaled, one-level-deep companion files — references/long-lived-ports.md and references/cross-boundary-messaging.md, both present and pointing back to Chrome docs rather than nesting further — exactly matching the well-organized overview-plus-references anchor.

3 / 3

Total

12

/

12

Passed

Description

100%

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 highly specific, well-triggered description that names concrete actions for all five messaging shapes and pairs them with natural symptom-based "Use when" triggers and an explicit scope boundary. It clearly answers both what the skill does and when to reach for it.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions — "one-shot chrome.runtime.sendMessage plus the literal return true", "chrome.tabs.sendMessage into one tab's content script", "long-lived chrome.runtime.connect ports and their onDisconnect triggers", "externally_connectable", "chrome.runtime.connectNative native-messaging hosts" — matching the anchor that names several concrete actions rather than vague domain language.

3 / 3

Completeness

It explicitly answers both what ("Asserts Chrome extension message-passing behaviour against a running extension") and when ("Use when a message reaches no listener, a sendResponse callback never fires, a port disconnects mid-test, or a page origin has to be proven allowed before publishing"), satisfying the explicit-trigger requirement that would otherwise cap completeness at 2.

3 / 3

Trigger Term Quality

The "Use when" clause supplies natural symptom phrasings a developer would actually say — "a message reaches no listener", "a sendResponse callback never fires", "a port disconnects mid-test", "a page origin has to be proven allowed" — alongside the exact chrome.* API names that are the domain's natural vocabulary, giving good coverage rather than a single generic keyword.

3 / 3

Distinctiveness Conflict Risk

The niche is sharply bounded — messaging behaviour on an already-running extension, with an explicit "not the install or reload step" scope carve-out — so its triggers are distinct and unlikely to fire for adjacent extension-development skills.

3 / 3

Total

12

/

12

Passed

Validation

93%

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

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents