CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/websocket-tests

Test WebSocket protocol behavior - opening handshake (HTTP Upgrade with Sec-WebSocket-Key + Sec-WebSocket-Version: 13), control frames (ping 0x9 / pong 0xA / close 0x8), close-frame status codes (1000 normal, 1001 going-away, 1006 abnormal, 1011 server error), subprotocol negotiation, backpressure, and reconnect with jitter. Works with ws (Node), websockets (Python), or Playwright frame inspection per language. Use when a feature holds a long-lived WebSocket open and reconnect, close-code, or backpressure behavior is unverified.

69

Quality

87%

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

75%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, actionable testing guide: mostly executable code, a sensible body/reference split, and an anti-patterns table that ties failure modes to fixes. The main gaps are the non-self-contained reconnect snippet, minor restatements of known protocol facts, and the reference pointer breaking the numbered step flow.

Suggestions

Make the reconnect-with-jitter example self-contained (or explicitly note that createReconnectingClient/waitForState/bounceServer are project-specific helpers) so every code block in the body is copy-paste ready.

Move the 'Deeper recipes' pointer out of the numbered sequence (e.g., after Step 6) so Steps 1-6 read uninterrupted and the reference file is easy to navigate.

Trim restatements of RFC 6455 basics Claude already knows — the subprotocol negotiation explanation sentence and the 'payloads <= 125 bytes' note — down to just the assertion checklists they support.

DimensionReasoningScore

Conciseness

Mostly lean — numbered steps, compact code blocks, and a tight anti-patterns table — but includes minor restatements of RFC 6455 facts Claude already knows ("The `Sec-WebSocket-Protocol` header negotiates a subprotocol; the server selects one or none", "payloads <= 125 bytes"), which is 'efficient with minor instances of over-explanation' rather than 'every token earns its place'.

4 / 5

Actionability

Five of six code blocks are executable as written (handshake accept-hash assertion, subprotocol negotiation and rejection, ping/pong race with timeout, Playwright frame inspection), but the reconnect example depends on undefined helpers ("createReconnectingClient", "waitForState", "bounceServer") so it is not copy-paste ready — fitting 'mostly executable with minor gaps' rather than fully executable.

4 / 5

Workflow Clarity

Steps 1-6 are clearly numbered and sequenced from library choice through browser e2e, and the anti-patterns table maps each failure mode back to a fix ("Skip handshake test ... | Step 2"); however the 'Deeper recipes' pointer interrupts the sequence between Step 4 and Step 5 and there is no explicit closing run-and-verify checkpoint, so it stops short of the explicit-validation/feedback-loop anchor.

4 / 5

Progressive Disclosure

The close-code matrix and backpressure recipes are appropriately split into a real, well-signaled one-level-deep reference ("[references/websocket-test-recipes.md](references/websocket-test-recipes.md)" with its contents enumerated), but that pointer sits mid-sequence between numbered steps instead of in a dedicated section, which is a minor organization gap.

4 / 5

Total

16

/

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 and technically specific, in third-person voice, with an explicit 'Use when' trigger clause covering the exact unverified behaviors. The only gap is a handful of natural trigger synonyms (e.g., real-time, live, socket.io) that a user might phrase differently.

DimensionReasoningScore

Specificity

Enumerates six concrete testing actions with technical parameters — "opening handshake (HTTP Upgrade with Sec-WebSocket-Key + Sec-WebSocket-Version: 13), control frames (ping 0x9 / pong 0xA / close 0x8), close-frame status codes (1000 normal, 1001 going-away, 1006 abnormal, 1011 server error), subprotocol negotiation, backpressure, and reconnect with jitter" — comprehensive coverage of the WebSocket testing domain, matching the top anchor rather than the 'minor gaps' level below.

5 / 5

Completeness

Explicitly answers both questions with concrete triggers: the what ("Test WebSocket protocol behavior - opening handshake ... subprotocol negotiation, backpressure, and reconnect with jitter") and the when ("Use when a feature holds a long-lived WebSocket open and reconnect, close-code, or backpressure behavior is unverified").

5 / 5

Trigger Term Quality

Strong natural keywords ("WebSocket", "reconnect", "close-code", "backpressure", plus library names "ws (Node)", "websockets (Python)", "Playwright"), but a few common user phrasings such as "real-time", "live connection", or "socket.io" are missing, which fits 'good keyword coverage; a few natural terms missing' rather than the comprehensive-synonyms anchor.

4 / 5

Distinctiveness Conflict Risk

"WebSocket protocol behavior" with handshake headers, frame opcodes, close-code matrix, and backpressure triggers carves out a clear niche distinct from adjacent skills (the body names SSE and gRPC streaming as alternatives), so wrong-skill triggering risk is minimal.

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.

Reviewed

Table of Contents