sailingnaturali
- 14 skills
- 0 followers
- 10 hours ago last updated
- ▌ Webapp E2e · sailingnaturaliUse when a change to a web app — a dev server, a live URL, or an isolated UI component like a plugin config panel — needs a real browser-level end-to-end check before opening a PR. Covers driving the app with Playwright (the repo's bundled chromium, not a system/MCP browser), the headless-Chrome blank-canvas gotcha, mounting an isolated component for test, and attaching the passing run as PR evidence.
- ▌ Signalk Apis · sailingnaturaliUse when reading, streaming, or acting on Signal K server data — as a consumer (webapp, external app) or as a provider (server plugin). Corrects the core misconception that the v2 API supersedes v1 — they have different jobs. v1 is the data-model API (full tree REST, WebSocket delta stream, PUT actuation); v2 is a set of purpose-built domain APIs (course, resources, notifications, history, autopilot, weather) backed by provider plugins. Covers discovery, response envelopes, auth levels, provider registration, and the routing gotchas (admin-gated plugin routes, provider-less v2 routes that 404).
- ▌ Git Worktrees · sailingnaturaliUse when multiple sessions work the same repo in parallel — several agent/dev sessions, a long-running review or build that must not be disturbed, or a quick look at another branch or PR. git worktree gives every branch its own directory (own node_modules, own build output) over one shared object store, and git itself enforces that a branch is checked out in at most one place. Covers add/list/remove/prune, per-worktree installs, the rm -rf stale-registration gotcha, and why worktrees and scratch checkouts belong on disk-backed paths, never tmpfs /tmp.
- ▌ Repo Scaffold · sailingnaturaliUse when creating a repository or upgrading its scaffolding — agent context files, line-ending normalization, format/lint CI, container CVE scanning, tag-triggered publishing, release automation, and generated release notes. Encodes the working set from maintained repos, CLAUDE.md importing AGENTS.md via the @-syntax (a plain link does not load), .gitattributes eol=lf (the Windows-CI "Delete ␍" fix), prettier+eslint as a read-only CI gate, a weekly Trivy scan tuned to actionable findings, tag globs as a coarse filter backed by a mandatory in-job semver check, prerelease-safe latest, the verified release-please adoption path (token-cascade dispatch, the Actions-may-create-PRs setting, concurrency, issues-write), and label-categorized release notes.
- ▌ Coderabbit CLI · sailingnaturaliUse when running a CodeRabbit CLI (cr) code review — typically as the review gate before opening a pull request. Requires the cr CLI installed and signed in to a CodeRabbit account, and uploads the diff to CodeRabbit's cloud. Carries the three mechanics that decide whether a rate-limited review counts — commit first (a dirty-tree review judges the wrong diff), pin the base against a stale local branch, and save the output before it's lost — plus the --plain removal trap; the full flag reference is CodeRabbit's own CLI docs.
- ▌ Record Web Gif · sailingnaturali bundleUse when you need a GIF or screen recording of a running web app — a local dev server or a live URL — for a README, PR, or demo, including UI animations, canvas, charts, WebGL, or MapLibre map apps that render blank under naive headless capture.
- ▌ Signalk Plugin · sailingnaturaliUse when authoring and publishing a SignalK server plugin to npm — the @signalk/server-api patterns that actually work (resource provider vs router, deltas, vessel position), the ESM package scaffold, TypeBox config schemas, webapp state that survives navigation, the no-install-scripts rule (app-store installs pass --ignore-scripts and npm 12 gates dependency scripts — containerize heavy parts instead), and npm OIDC trusted publishing (including the new-package first-publish chicken-and-egg).
- ▌ Signalk Server E2e · sailingnaturaliUse when a change to the SignalK server or a SignalK plugin needs a real browser-level end-to-end check before opening a PR — spin up a local server on a scratch config, drive its Admin UI / plugin config panel / Freeboard-SK, and feed live data over the WebSocket delta stream so data-driven UI actually has data. The SignalK-specific layer on top of the webapp-e2e skill (which covers the shared browser mechanics — bundled chromium, locators, the headless blank-canvas gotcha, PR-evidence gating).
- ▌ Debug MCP Agent · sailingnaturaliUse when an AI agent backed by MCP servers or tools misbehaves — claims data is missing/unavailable, returns 404s or "server unreachable", gives plausible-but-wrong answers, queries the wrong path, or leaks chain-of-thought / control tokens. Probe ground truth before trusting the agent's account of itself.
- ▌ NPM Oidc Publish · sailingnaturaliUse when publishing an npm package from GitHub Actions with OIDC trusted publishing (no NPM_TOKEN, no OTP in CI) — the release-triggered workflow, the new-package first-publish chicken-and-egg, configuring the trusted publisher, and the registry-propagation 404 gotcha.
- ▌ Signalk Registry · sailingnaturaliUse when publishing or maintaining a SignalK plugin and you want to know its registry score. Fetches the actual published score from the registry, previews the criteria you can fix locally (screenshots, changelog, audit, plugin-CI) with what each gap costs, and triggers an on-demand re-score via the registry's rescore issue template instead of waiting for the nightly run.
- ▌ Clipboard Fallback · sailingnaturaliUse when implementing or debugging copy-to-clipboard in a web app that may be served over plain HTTP — LAN devices, boat servers, embedded UIs. navigator.clipboard exists only in secure contexts, so copy works on localhost in dev and silently breaks on http://<lan-ip> in production; the fix is an isSecureContext-gated Clipboard API call with a document.execCommand('copy') textarea fallback. Covers the recipe, the localhost-testing trap, and why paste has no fallback.
- ▌ Oss Branch Protection · sailingnaturali bundleUse when standardizing branch protection across the public repos in a GitHub org, when adding a new OSS repo that needs the same protection as the rest, or when protection has drifted — applies one uniform template (admin-exempt so the maintainer keeps direct-commit/force-push, CI-gated merges for contributors, no force-push/deletion, conversation resolution) and derives each repo's required CI check automatically.
- ▌ Signalk Container Helper · sailingnaturaliUse when building a SignalK server plugin that reaches a service running in a Docker/Podman container through the signalk-container manager — the signalk-container-helper library that packages the container lifecycle (wait for the manager, validate the tag, self-heal, ensureRunning, wait for HTTP readiness, cancel and serialize operations, wire update routes, stop cleanly), the managed-vs-self-hosted endpoint switch, host path and device resolution, and the shared React config-panel building blocks, so you stop hand-writing the same integration glue.