signalk-server-e2e

signalk-server-e2e is a skill for Claude Code from sailingnaturali/claude-skills. It costs 120 tokens per session (1,774 once invoked), scanned C, original, MIT.

A browser-level end-to-end testing procedure for SignalK server or plugin changes. SignalK is a marine-data server, and end-to-end testing checks the complete path from live data to the browser interface.

In plain words
What is it for?
Use it to start SignalK with temporary data, test the Admin UI and plugin settings, open Freeboard-SK, send live WebSocket data, and gather evidence before a pull request.
Why use it?
It catches problems that unit tests may miss, such as an interface loading but not displaying live plugin or WebSocket data.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the signalk-e2e plugin — 2 skills shipped together

Good fit Use it to start SignalK with temporary data, test the Admin UI and plugin settings, open Freeboard-SK, send live WebSocket data, and gather evidence before a pull request.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/sailingnaturali/claude-skills/signalk-server-e2e
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add sailingnaturali/claude-skills --skill signalk-server-e2e
Clone the repo
git clone --depth 1 https://github.com/sailingnaturali/claude-skills

Made for: Claude Code.

Or install signalk-e2e, the plugin that ships this one along with the rest of its 2 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for signalk-server-e2e

README.md
[![agentmods](https://agentmods.dev/badge/skills/sailingnaturali/claude-skills/signalk-server-e2e/github.svg)](https://agentmods.dev/skills/sailingnaturali/claude-skills/signalk-server-e2e)
Your own site
<a href="https://agentmods.dev/skills/sailingnaturali/claude-skills/signalk-server-e2e"><img src="https://agentmods.dev/badge/skills/sailingnaturali/claude-skills/signalk-server-e2e/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for signalk-server-e2e

Your own site · 80×15
<a href="https://agentmods.dev/skills/sailingnaturali/claude-skills/signalk-server-e2e"><img src="https://agentmods.dev/badge/skills/sailingnaturali/claude-skills/signalk-server-e2e.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 120 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,774 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00120 $0.01774
Opus 5 $0.00060 $0.00887
Sonnet 5 $0.00024 $0.00355
Haiku 4.5 $0.00012 $0.00177

Measured 12d ago against content hash b090606524aa, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade C, and why

signalk-server-e2e scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

kill "$SK_PID" 2>/dev/null; rm -rf /tmp/sk-e2e

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

(In an `e2e.mjs`, spawn the server with `child_process` and kill it in a `finally`.)
signalk-e2e/skills/signalk-server-e2e/SKILL.md · 115 lines

How it starts

The opening of the file, as written. The whole thing — 115 lines — stays where its author put it; the contents beside it link to each section on GitHub.

End-to-end test a SignalK server or plugin change in a real browser

When a change touches server behavior a unit test can't reach — Admin UI, a plugin's config panel, data reaching Freeboard-SK, the delta/stream path — verify it in a real browser against a running server before you open the PR. This is the browser-level complement to the server's own npm test; it catches the "serves fine but the UI never shows it" class of bug that mocked tests miss.

This skill is the SignalK-specific layer. The shared browser mechanics live in the companion webapp-e2e skill (always installed alongside this one): using the repo's bundled @playwright/test chromium instead of a system/MCP browser, role/label locators + auto-waiting expect, mounting a Module-Federation component, the headless-Chrome blank-canvas gotcha, and the PR-evidence gating. Read webapp-e2e for those; below is only what's specific to a SignalK server.

1. Spin up the server under test

Start a real server on a throwaway config dir so you never touch a live install:

# from the signalk-server checkout; -c points at a scratch data dir
mkdir -p /tmp/sk-e2e
PORT=4000 npm start -- -c /tmp/sk-e2e &
SK_PID=$!
  • Readiness gate: poll an HTTP endpoint until it answers (GET /signalk returns 200) before launching the browser — "process started" ≠ "server answering". Make this fetch-poll the primary gate; a SignalK UI holds its delta WebSocket open, so page.goto(..., { waitUntil: "networkidle" }) may never fire and is only a fallback for the page load itself.

    for (let i = 0; i < 60; i++) {
      try { if ((await fetch("http://localhost:4000/signalk")).ok) break; } catch {}
      await new Promise((r) => setTimeout(r, 500));
    }
    
  • Plugin under test: symlink your plugin into the server's node_modules (or npm i it as a file: dep) so a npm run build in the plugin dir is picked up on the next server restart — no npm link dance. Rebuild the plugin, restart the server, then run the browser check.

  • Security: with security disabled (fresh scratch config) the /signalk/v1/stream WebSocket accepts unauthenticated deltas and the resource/data APIs are anonymously readable — which is what makes headless e2e cheap. If you must test an admin-gated path, log in through the UI in the Playwright script and reuse the storage state.

  • Teardown: always kill the server and remove the scratch dir when done, even on failure, so a wedged :4000 or a stale config doesn't poison the next run:

Read the full file on GitHub · 115 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 115 lines · 120 tokens per session scan C b090606524aa

Subscribe to this mod's changes

signalk-server-e2e is a skill published in the GitHub repository sailingnaturali/claude-skills (2 stars, last pushed 6d ago), licensed MIT. It adds 120 tokens to every session and 1,774 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

browse

Drive a real browser through Aside: open a page, read it, click through a flow, take screenshots, check console errors. (gstack).

garrytan/gstack · 32 tokens

playwright-cli

A command-line tool for controlling Chromium, Firefox, and WebKit browsers, including navigation, page interaction, screenshots, PDFs, and recorded actions.

UnicomAI/wanwu · 76 tokens

webapp-testing

Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.

anthropics/skills · 35 tokens

create-verification-skill

Create a repo-local verification skill and exhaustive feature map for driving a real app through its UI, CLI, or API. Use for "create a verification skill", "make a verify skill for this repo", or "document how agents can verify this app".

get-bb/bb · 57 tokens

browser-qa

A browser-based quality check for deployed web pages and user flows. It uses browser automation to test rendering, navigation, forms, interactions, responsive behaviour, and accessibility-related issues.

hashgraph-online/awesome-codex-plugins · 58 tokens

test-electron-app

Drive the real running PostHog Electron app (live tRPC, workspace-server, real data) over CDP with agent-browser. Connect to the running app on port 9222, test desktop changes against a local Django stack, snapshot the accessibility tree, inspect network requests, and screenshot only when explicitly asked. Use when…

PostHog/posthog-foss · 112 tokens