CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/web-push-tests

Test the browser web-push subscription lifecycle - `pushManager.subscribe({ userVisibleOnly, applicationServerKey })` per [W3C Push API][w3c-push] returning a `PushSubscription` with `endpoint` + `keys.p256dh` + `keys.auth` + optional `expirationTime`; the `pushsubscriptionchange` service-worker event on refresh / revoke / expiry; the `push` event delivery with `PushMessageData`; VAPID auth per RFC 8292 (ES256 JWT, `aud` / `exp` ≤ 24h / `sub`); RFC 8030 push-service responses (201 Created, 410 Gone for expired endpoints, 413 Payload Too Large, 429); and `unsubscribe()` cleanup. Use when a PWA ships web-push and the subscription lifecycle needs release-gate coverage - scoped to the browser Push API, not to cross-channel delivery over native APNs / FCM.

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

Quality

Content

85%

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 skill with executable code, a clear 8-step workflow with validation assertions, and a properly separated one-level reference file. The only weakness is some verbosity from re-specifying Push API basics Claude already knows.

Suggestions

Trim the PushSubscription property table and PushMessageData methods table in Steps 2 and 4, or move them into references/push-protocol.md — Claude already knows these API surfaces.

Drop or shorten the explanatory prose restating spec wording (e.g. 'Per [w3c-push], the PushSubscription exposes...') where the test assertions already convey intent.

DimensionReasoningScore

Conciseness

The body is mostly efficient with executable test code, but restates concepts Claude already knows — e.g. the `PushSubscription` property table (`endpoint`, `keys.p256dh`) and the `PushMessageData` methods table (`arrayBuffer`, `blob`, `bytes`, `json`, `text`) — which could be tightened without losing value.

2 / 3

Actionability

Provides fully executable Playwright fixtures, TypeScript test cases, Vitest specs, bash commands, and CI YAML that are copy-paste ready with concrete assertions and env-var injection.

3 / 3

Workflow Clarity

Steps 1–8 are clearly sequenced with per-step `expect()` validation checkpoints, and the Running/Anti-patterns/Limitations sections reinforce the flow; the skill is not a destructive/batch operation so the missing explicit fix-retry loop does not cap the score.

3 / 3

Progressive Disclosure

The runnable subscription lifecycle lives in SKILL.md while server-side protocol detail is split into the one-level-deep `references/push-protocol.md`, clearly signaled via markdown links in Steps 6 and 7.

3 / 3

Total

11

/

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.

The description is highly specific, action-oriented, and clearly scoped with an explicit 'Use when' trigger and strong differentiation from sibling skills. It uses third-person/infinitive voice throughout with no first/second-person phrasing.

DimensionReasoningScore

Specificity

Lists multiple concrete actions including `pushManager.subscribe`, `pushsubscriptionchange` handling, `push` event delivery, VAPID JWT signing, RFC 8030 response handling, and `unsubscribe()` cleanup — far exceeding the 'names some actions' anchor.

3 / 3

Completeness

Explicitly states what it does (tests the subscription lifecycle) and when to use it via the 'Use when a PWA ships web-push and the subscription lifecycle needs release-gate coverage' clause, satisfying both what AND when.

3 / 3

Trigger Term Quality

Natural user-facing terms like 'web-push', 'PWA ships web-push', 'subscription lifecycle', and 'release-gate coverage' appear alongside the technical references, covering common phrasings a developer would say.

3 / 3

Distinctiveness Conflict Risk

Clear niche scoping — 'scoped to the browser Push API, not to cross-channel delivery over native APNs / FCM' — and explicit differentiation from `push-notification-test-author` make conflict unlikely.

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