Icey Server Operator
Safely build, validate, package, release, and operate the icey-server CLI and media server surface.
Install
Quick install
npx skills add https://github.com/nilstate/icey-clinpx skills add nilstate/icey-cli --agent claude-codenpx skills add nilstate/icey-cli --agent cursornpx skills add nilstate/icey-cli --agent codexnpx skills add nilstate/icey-cli --agent opencodenpx skills add nilstate/icey-cli --agent github-copilotnpx skills add nilstate/icey-cli --agent windsurfMore install options
Shorthand — useful for multi-skill repos:
npx skills add nilstate/icey-cliManual — clone the repo and drop the folder into your agent's skills directory:
git clone https://github.com/nilstate/icey-cli.gitcp -r icey-cli ~/.claude/skills/icey-server-operator
Safely build, validate, package, release, and operate the icey-server CLI and media server surface.
---
name: icey-server-operator
description: Safely build, validate, package, release, and operate the icey-server CLI and media server surface.
---
icey-server Operator Workflow
This is a portable skill document for agents working in nilstate/icey-cli.
Use it to preserve the repo's build, validation, packaging, and operator bring-up conventions.
The file is useful as plain project documentation. Tools that understand SKILL.md, including runx, can optionally pair it with execution, verification, and receipts.
Evidence Sources
This workflow is grounded in these repo files:
README.md: native quick start, Docker demo path, repo workflow, runtime modes, endpoints, browser smoke notes, and bring-up order.CMakeLists.txt: C++20 project shape,ICEY_SOURCE_DIR, icey component requirements, install layout, and web UI install destination.CMakePresets.json:devandreleaseconfigure/build presets using a sibling../iceycheckout.Makefile: canonical wrapper targets for configure, build, web, install, package, release, Docker, package-manager validation, and the macOS-onlyfacetime-demohelper.web/package.json: Vite build and Playwright smoke commands for Chromium, Firefox, WebKit, and Docker smoke..github/workflows/ci.yml: Linux CI contract using Ubuntu 24.04, GCC 13, pinnedICEY_VERSION, web build, staged install, browser smoke, and package-manager cutover..github/workflows/release.yml: release package, Docker image, GitHub release assets, and optional package-manager publication flow..github/workflows/publish-package-managers.yml: Homebrew, AUR, APT, and rendered manifest publication gates.packaging/README.md: package-manager model, artifact names, generator scripts, and validation expectations.docker/README.md: fastest demo path, host-networking assumptions, runtime overrides, and Compose source path.docs/facetime-on-macbook.md: macOS realtime path. Single-process bring-up via theavfoundation:URL scheme dispatched byMediaCapture::openFile. Covers permission prompts, audio resampler bring-up, and the speaker default-mute.scripts/facetime-demo.sh: one-command single-process bring-up oficey-server --source 'avfoundation:0:none'on macOS, fronted by themake facetime-demotarget.VERSIONandICEY_VERSION: release context for this repo and the pinned corenilstate/iceydependency.
At generation time this repo declared icey-server 0.2.3 and pinned icey 2.4.9.
When To Use This Skill
Use this skill when an agent needs to:
- change
icey-serverC++ server behavior, CLI flags, config handling, operator endpoints, or install layout - update the bundled web UI or browser smoke expectations
- validate native builds against a sibling
nilstate/iceycheckout - modify Docker demo behavior or runtime environment variables
- modify packaging, release metadata, package-manager manifests, or publication workflows
- help an operator bring up
stream,record,relay, TURN, RTSP, or TLS paths without mixing failure domains
Do not use this skill to change core media primitives in nilstate/icey; that belongs in the core repo. This repo consumes the pinned core release through ICEY_VERSION.
Inputs To Inspect First
Always inspect these before planning changes:
README.mdfor the public operator contract and CLI option listMakefilefor preferred local commandsCMakePresets.jsonandCMakeLists.txtfor build shape and dependency wiringICEY_VERSIONbefore assuming core API behavior.github/workflows/ci.ymlbefore changing validation expectationsweb/package.jsonbefore changing browser smoke behaviorpackaging/README.mdandscripts/releasebefore changing release or package-manager outputdocker/README.mdanddocker/*before changing demo behavior
If a requested change touches release output, inspect VERSION, CHANGELOG.md, scripts/validate-release-metadata.sh, and scripts/package-manager-check.sh in the same pass.
Safe Operating Rules
- Keep the express demo path simple:
docker run --rm --network host 0state/icey-server:latest, thenhttp://localhost:4500. - Do not claim Safari support from Linux Playwright WebKit results; the README explicitly withholds that claim until Apple-platform validation exists.
- Keep runtime bring-up staged: local
streamwithout TURN, thenrecord, thenrelay, then TURN-enabled external or NAT testing. - Treat
--doctoras the first machine-readable preflight for operator-facing runtime changes. - Preserve the pinned
ICEY_VERSIONmodel. Do not silently float tonilstate/iceymain in release or CI paths. - Keep package-manager output tied to real artifacts. Do not emit placeholder manifests for package managers without a matching archive and checksum.
- Do not weaken CI coverage when changing C++, web UI, packaging, or release surfaces.
- Do not add hosted service assumptions; the README positions the app as one binary plus local ports.
Workflow
1. Classify The Change
Map the request to one or more surfaces:
server: C++ server, CLI flags, config, endpoints, runtime modesweb: Vite UI, Symple client/player integration, browser smokedocker: published image, Compose source path, host-networking demopackaging: staged layout, tar/zip/deb/APT/package-manager manifestsrelease: VERSION, ICEY_VERSION, changelog, GitHub release assets, Docker Hubdocs: README, docker README, packaging README, operator instructions
If the change crosses surfaces, plan validation for each touched surface before editing.
2. Build Or Configure Locally
Preferred source-backed path with the sibling icey checkout:
cmake --preset dev
cmake --build --preset dev
Equivalent Makefile path:
make configure
make build
If the sibling checkout is not at ../icey, pass ICEY_SOURCE_DIR=/path/to/icey explicitly.
3. Validate Runtime Readiness
Use --doctor before claiming the server is runnable:
./build-dev/src/server/icey-server --doctor
For RTSP paths, start from the tracked example:
cp config.rtsp.example.json config.local.json
$EDITOR config.local.json
./build-dev/src/server/icey-server --config config.local.json --doctor
./build-dev/src/server/icey-server --config config.local.json
For a browser-visible local app, build the web UI first:
make web-install
make web-build
./build-dev/src/server/icey-server --web-root web/dist --source /path/to/video.mp4
4. Validate Browser And Demo Paths
For UI changes or media-path claims, run the Chromium smoke path that CI treats as authoritative:
npm --prefix web ci
npm --prefix web run build
npm --prefix web run test:smoke:chromium
For the published-image demo contract, keep the public command stable:
docker run --rm --network host 0state/icey-server:latest
For local source-backed Docker validation:
docker compose -f docker/compose.yaml up --build
For the macOS realtime FaceTime path, exercise the dedicated helper. It runs a single icey-server process that opens AVFoundation directly via the avfoundation: URL scheme; Ctrl-C tears it down:
make facetime-demo
That target wraps scripts/facetime-demo.sh. macOS-only because of the avfoundation input. Setup details, including the device permission prompt, the audio capture default, and the speaker default-mute, are documented in docs/facetime-on-macbook.md.
5. Validate Packaging Or Release Changes
For staged app layout changes:
make install
For release metadata only:
make release-metadata-check
For the full package-manager cutover contract:
make package-managers
This must validate Linux tar/zip archives, Debian package contents, APT repo archive, Homebrew formula, AUR PKGBUILD, Nix expression, SHA256SUMS, and Windows-facing manifests only when real Windows artifacts exist.
6. Report Results
A useful agent result should report:
- changed surfaces
- commands run
- whether
ICEY_VERSIONwas relevant - browser engine used for smoke validation
- package artifacts validated, if any
- runtime mode tested:
stream,record,relay, TURN, RTSP, or TLS - any skipped validation and the concrete reason
Do not collapse failures into generic language. If a check fails, preserve the exact command, exit behavior, and likely surface.
Expected Outputs
For implementation work, produce a concise change summary plus validation evidence. For operator help, produce an ordered bring-up path with the first command the operator should run next. For packaging or release work, name every artifact family affected.
Optional Compatible Tooling Note
This file is a portable SKILL.md. Agents and tools that understand SKILL.md can use it as repo workflow context. runx can optionally pair it with a registry binding for execution, verification, and receipts, but this repo does not require runx to use the file.
---
Source: https://github.com/nilstate/icey-cli
Author: nilstate
Discovered via: skillsdirectory.com
Genre: tools
SKILL.md source
--- name: icey-server-operator description: Safely build, validate, package, release, and operate the icey-server CLI and media server surface. --- # icey-server-operator Safely build, validate, package, release, and operate the icey-server CLI and media server surface. --- name: icey-server-operator description: Safely build, validate, package, release, and operate the icey-server CLI and media server surface. --- # icey-server Operator Workflow This is a portable skill document for agents working in `nilstate/icey-cli`. Use it to preserve the repo's build, validation, packaging, and operator bring-up conventions. The file is useful as plain project documentation. Tools that understand `SKILL.md`, including runx, can optionally pair it with execution, verification, and receipts. ## Evidence Sources This workflow is grounded in these repo files: - `README.md`: native quick start, Docker demo path, repo workflow, runtime modes, endpoints, browser smoke notes, and bring-up order. - `CMakeLists.txt`: C++20 project shape, `ICEY_SOURCE_DIR`, icey component requirements, install layout, and web UI install destination. - `CMakePresets.json`: `dev` and `release` configure/build presets using a sibling `../icey` checkout. - `Makefile`: canonical wrapper targets for configure, build, web, install, package, release, Docker, package-manager validation, and the macOS-only `facetime-demo` helper. - `web/package.json`: Vite build and Playwright smoke commands for Chromium, Firefox, WebKit, and Docker smoke. - `.github/workflows/ci.yml`: Linux CI contract using Ubuntu 24.04, GCC 13, pinned `ICEY_VERSION`, web build, staged install, browser smoke, and package-manager cutover. - `.github/workflows/release.yml`: release package, Docker image, GitHub release assets, and optional package-manager publication flow. - `.github/workflows/publish-package-managers.yml`: Homebrew, AUR, APT, and rendered manifest publication gates. - `packaging/README.md`: package-manager model, artifact names, generator scripts, and validation expectations. - `docker/README.md`: fastest demo path, host-networking assumptions, runtime overrides, and Compose source path. - `docs/facetime-on-macbook.md`: macOS realtime path. Single-process bring-up via the `avfoundation:` URL scheme dispatched by `MediaCapture::openFile`. Covers permission prompts, audio resampler bring-up, and the speaker default-mute. - `scripts/facetime-demo.sh`: one-command single-process bring-up of `icey-server --source 'avfoundation:0:none'` on macOS, fronted by the `make facetime-demo` target. - `VERSION` and `ICEY_VERSION`: release context for this repo and the pinned core `nilstate/icey` dependency. At generation time this repo declared icey-server 0.2.3 and pinned icey 2.4.9. ## When To Use This Skill Use this skill when an agent needs to: - change `icey-server` C++ server behavior, CLI flags, config handling, operator endpoints, or install layout - update the bundled web UI or browser smoke expectations - validate native builds against a sibling `nilstate/icey` checkout - modify Docker demo behavior or runtime environment variables - modify packaging, release metadata, package-manager manifests, or publication workflows - help an operator bring up `stream`, `record`, `relay`, TURN, RTSP, or TLS paths without mixing failure domains Do not use this skill to change core media primitives in `nilstate/icey`; that belongs in the core repo. This repo consumes the pinned core release through `ICEY_VERSION`. ## Inputs To Inspect First Always inspect these before planning changes: - `README.md` for the public operator contract and CLI option list - `Makefile` for preferred local commands - `CMakePresets.json` and `CMakeLists.txt` for build shape and dependency wiring - `ICEY_VERSION` before assuming core API behavior - `.github/workflows/ci.yml` before changing validation expectations - `web/package.json` before changing browser smoke behavior - `packaging/README.md` and `scripts/*release*` before changing release or package-manager output - `docker/README.md` and `docker/*` before changing demo behavior If a requested change touches release output, inspect `VERSION`, `CHANGELOG.md`, `scripts/validate-release-metadata.sh`, and `scripts/package-manager-check.sh` in the same pass. ## Safe Operating Rules - Keep the express demo path simple: `docker run --rm --network host 0state/icey-server:latest`, then `http://localhost:4500`. - Do not claim Safari support from Linux Playwright WebKit results; the README explicitly withholds that claim until Apple-platform validation exists. - Keep runtime bring-up staged: local `stream` without TURN, then `record`, then `relay`, then TURN-enabled external or NAT testing. - Treat `--doctor` as the first machine-readable preflight for operator-facing runtime changes. - Preserve the pinned `ICEY_VERSION` model. Do not silently float to `nilstate/icey` main in release or CI paths. - Keep package-manager output tied to real artifacts. Do not emit placeholder manifests for package managers without a matching archive and checksum. - Do not weaken CI coverage when changing C++, web UI, packaging, or release surfaces. - Do not add hosted service assumptions; the README positions the app as one binary plus local ports. ## Workflow ### 1. Classify The Change Map the request to one or more surfaces: - `server`: C++ server, CLI flags, config, endpoints, runtime modes - `web`: Vite UI, Symple client/player integration, browser smoke - `docker`: published image, Compose source path, host-networking demo - `packaging`: staged layout, tar/zip/deb/APT/package-manager manifests - `release`: VERSION, ICEY_VERSION, changelog, GitHub release assets, Docker Hub - `docs`: README, docker README, packaging README, operator instructions If the change crosses surfaces, plan validation for each touched surface before editing. ### 2. Build Or Configure Locally Preferred source-backed path with the sibling `icey` checkout: ```bash cmake --preset dev cmake --build --preset dev ``` Equivalent Makefile path: ```bash make configure make build ``` If the sibling checkout is not at `../icey`, pass `ICEY_SOURCE_DIR=/path/to/icey` explicitly. ### 3. Validate Runtime Readiness Use `--doctor` before claiming the server is runnable: ```bash ./build-dev/src/server/icey-server --doctor ``` For RTSP paths, start from the tracked example: ```bash cp config.rtsp.example.json config.local.json $EDITOR config.local.json ./build-dev/src/server/icey-server --config config.local.json --doctor ./build-dev/src/server/icey-server --config config.local.json ``` For a browser-visible local app, build the web UI first: ```bash make web-install make web-build ./build-dev/src/server/icey-server --web-root web/dist --source /path/to/video.mp4 ``` ### 4. Validate Browser And Demo Paths For UI changes or media-path claims, run the Chromium smoke path that CI treats as authoritative: ```bash npm --prefix web ci npm --prefix web run build npm --prefix web run test:smoke:chromium ``` For the published-image demo contract, keep the public command stable: ```bash docker run --rm --network host 0state/icey-server:latest ``` For local source-backed Docker validation: ```bash docker compose -f docker/compose.yaml up --build ``` For the macOS realtime FaceTime path, exercise the dedicated helper. It runs a single icey-server process that opens AVFoundation directly via the `avfoundation:` URL scheme; `Ctrl-C` tears it down: ```bash make facetime-demo ``` That target wraps `scripts/facetime-demo.sh`. macOS-only because of the avfoundation input. Setup details, including the device permission prompt, the audio capture default, and the speaker default-mute, are documented in `docs/facetime-on-macbook.md`. ### 5. Validate Packaging Or Release Changes For staged app layout changes: ```bash make install ``` For release metadata only: ```bash make release-metadata-check ``` For the full package-manager cutover contract: ```bash make package-managers ``` This must validate Linux tar/zip archives, Debian package contents, APT repo archive, Homebrew formula, AUR PKGBUILD, Nix expression, SHA256SUMS, and Windows-facing manifests only when real Windows artifacts exist. ### 6. Report Results A useful agent result should report: - changed surfaces - commands run - whether `ICEY_VERSION` was relevant - browser engine used for smoke validation - package artifacts validated, if any - runtime mode tested: `stream`, `record`, `relay`, TURN, RTSP, or TLS - any skipped validation and the concrete reason Do not collapse failures into generic language. If a check fails, preserve the exact command, exit behavior, and likely surface. ## Expected Outputs For implementation work, produce a concise change summary plus validation evidence. For operator help, produce an ordered bring-up path with the first command the operator should run next. For packaging or release work, name every artifact family affected. ## Optional Compatible Tooling Note This file is a portable `SKILL.md`. Agents and tools that understand `SKILL.md` can use it as repo workflow context. runx can optionally pair it with a registry binding for execution, verification, and receipts, but this repo does not require runx to use the file. --- **Source**: https://github.com/nilstate/icey-cli **Author**: nilstate **Discovered via**: skillsdirectory.com **Genre**: tools
Related skills 6
azure-storage
Azure Storage Services including Blob Storage, File Shares, Queue Storage, Table Storage, and Data Lake. Answers questions about storage access tiers (hot, cool, cold, archive), when to use each tier, and tier comparison. Provides object storage, SMB file shares, async messaging, NoSQL key-value, and big data analytics. Includes lifecycle management. USE FOR: blob storage, file shares, queue storage, table storage, data lake, upload files, download blobs, storage accounts, access tiers, stora...
azure-kusto
Query and analyze data in Azure Data Explorer (Kusto/ADX) using KQL for log analytics, telemetry, and time series analysis. WHEN: KQL queries, Kusto database queries, Azure Data Explorer, ADX clusters, log analytics, time series data, IoT telemetry, anomaly detection.
azure-aigateway
Configure Azure API Management as an AI Gateway for AI models, MCP tools, and agents. WHEN: semantic caching, token limit, content safety, load balancing, AI model governance, MCP rate limiting, jailbreak detection, add Azure OpenAI backend, add AI Foundry model, test AI gateway, LLM policies, configure AI backend, token metrics, AI cost control, convert API to MCP, import OpenAPI to gateway.
azure-compute
Azure VM and VMSS router for recommendations, pricing, autoscale, orchestration, connectivity troubleshooting, capacity reservations, and Essential Machine Management. WHEN: Azure VM, VMSS, scale set, recommend, compare, server, website, burstable, lightweight, VM family, workload, GPU, learning, simulation, dev/test, backend, autoscale, load balancer, Flexible orchestration, Uniform orchestration, cost estimate, connect, refused, Linux, black screen, reset password, reach VM, port 3389, NSG,...
azure-cloud-migrate
Assess and migrate cross-cloud workloads to Azure with reports and code conversion. Supports Lambda→Functions, Beanstalk/Heroku/App Engine→App Service, Fargate/Kubernetes/Cloud Run/Spring Boot→Container Apps. WHEN: migrate Lambda to Functions, AWS to Azure, migrate Beanstalk, migrate Heroku, migrate App Engine, Cloud Run migration, Fargate to ACA, ECS/Kubernetes/GKE/EKS to Container Apps, Spring Boot to Container Apps, cross-cloud migration.
azure-upgrade
Assess and upgrade Azure workloads between plans, tiers, or SKUs, or modernize Azure SDK dependencies in source code. WHEN: upgrade Consumption to Flex Consumption, upgrade Azure Functions plan, change hosting plan, function app SKU, migrate App Service to Container Apps, modernize legacy Azure Java SDKs (com.microsoft.azure to com.azure), migrate Azure Cache for Redis (ACR/ACRE) to Azure Managed Redis (AMR).