Agent skill · software engineering · mvanhorn

pp-hayward-omnilogic

Take control of every Hayward OmniLogic feature, plus a local store, schedule diffs, chemistry trends, and a morning... Trigger phrases: `is the pool ready`, `what's the pool temperature`, `show me the pool chemistry log`, `why isn't the pool pump running`, `preheat the pool for tonight`, `run the morning pool sweep`, `use hayward-omnilogic`, `run hayward-omnilogic`.

Why this skill is useful

Adds executable commands for managing Hayward OmniLogic pool systems that aren't available in public documentation.

What it needs

Requires hayward-omnilogic-pp-cli installed locally. About 9k tokens when loaded. Last updated 2026-08-06. 1,890 stars on the source repository.

What this skill does

Hayward OmniLogic — Printing Press CLI Prerequisites: Install the CLI This skill drives the hayward-omnilogic-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first: 1. Install via the Printing Press installer. It defaults binaries to $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows: 2. Verify: hayward-omnilogic-pp-cli --version 3. Ensure the reported install directory is on $PATH for the agent/runtime that will invoke this skill. If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer): If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds. Pool sensor capabilities — configure once per site Not every OmniLogic install has every sensor. Common variants: No pH or ORP probe (most basic salt-pool installs) No salt cell (chlorine-tab or liquid-chlorine pools) Water-temp sensor that only reads while the pump is running (a quirk of certain pump/sensor pairings) When sensors are absent, Hayward's API returns -1 or null for those fields. Without telling the CLI which sensors actually exist, status will report "caution" for a perfectly healthy pool simply because chemistry comes back as unknown. The chemistry get, telemetry get, and status commands include a setuphint field in the JSON output when this is detected. Configure once per site: Stored in the local SQLite store per MspSystemID. After configuration: status correctly excludes the missing sensors from its verdict, chemistry get returns notequipped instead of unknown for sensors that don't exist, and watertemp = -1 while the pump is idle is reported as "n/a (pump off)" instead of "sensor offline". …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills mvanhorn/hayward-omnilogic

View the source on GitHub

Browse the @skills marketplace