Content
78%Weight 40%Scale 1-5Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
A strong, well-structured testing skill: sequenced steps, executable examples for each WebSocket concern, an anti-patterns table, honest limitations, and a correctly-used one-level-deep reference file for the deeper recipes. The main gaps are reliance on undefined helper functions in the reconnect example, minor re-explanation of RFC 6455 basics, and no in-body validate-and-retry loop.
Suggestions
Define or inline the reconnect helpers (createReconnectingClient, waitForState, bounceServer) so the Step 5 example is copy-paste executable like the others, or note explicitly that they are the project's own utilities to adapt.
Trim the RFC 6455 recap lines (handshake header bullet list, control-frame opcode/payload-size note) down to just the assertions the tests need, trusting Claude to know the protocol basics.
Add a short in-body validation checkpoint after the test steps (e.g. 'if close code is 1006 instead of the expected code, the server dropped the socket without a close frame — fix the shutdown path before trusting the matrix') so the error-recovery loop is not only in the reference file.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body is largely lean (library table, code-first steps, an anti-patterns table), but re-explains protocol basics Claude already knows, e.g. the handshake header list ('Sec-WebSocket-Key: base64 16-byte nonce', 'Sec-WebSocket-Version: 13') and 'Control frames include ping (0x9), pong (0xA), close (0x8); payloads <= 125 bytes'. These are borderline-useful as assertion checklists, so this is minor over-explanation (anchor 4) rather than the fully lean anchor 5. | 4 / 5 |
Actionability | Most examples are concrete, executable Jest-style tests (handshake accept-hash assertion, subprotocol negotiation, pong-within-5s race, Playwright framesent hook), but the reconnect example depends on undefined helpers ('createReconnectingClient', 'waitForState', 'bounceServer') and the handshake test reaches into ws internals ('ws._req?.getHeader'). That is 'mostly executable with minor gaps' — anchor 4, not the copy-paste-complete anchor 5. | 4 / 5 |
Workflow Clarity | Steps 1-6 give a clear, ordered sequence (pick lib, handshake, subprotocol, keepalive, reconnect, browser e2e) and the anti-patterns table maps failures back to fixes. However, there is no explicit validate-on-failure loop in the body (the only recovery guidance, 'if it is 1006 ... fix the server shutdown path', lives in the reference file), so it fits anchor 4 ('most checkpoints present; minor validation gaps') rather than anchor 5's explicit feedback loops. | 4 / 5 |
Progressive Disclosure | The SKILL.md body is a well-organized overview and the two deep recipes (close-code matrix, maxPayload/1009 backpressure) are split into references/websocket-test-recipes.md, which exists in the bundle and is clearly signaled with a markdown link naming exactly what it contains ('The close-frame status-code matrix (1000/1001/1002/1006/1011) and the backpressure / large-message ... recipes are in [references/websocket-test-recipes.md]'). One level deep, no buried or nested references — matches anchor 5. | 5 / 5 |
Total | 17 / 20 Passed |