Deploy To Temps
gotempsh/temps
Deploy applications to the Temps platform with automatic framework detection, Dockerfile generation, and container orchestration.
Start or stop the SUB/WAVE radio stack (a personal internet radio station) in dev or production mode — no builds, no rebuilds, no config rendering.
$ npx skills add perminder-klair/subwave --skill subwave-control -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install perminder-klair/subwave subwave-control --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/subwave-control .claude/skills/subwave-control && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "subwave-control" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-control into .claude/skills/subwave-control/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-control", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-controlType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add perminder-klair/subwave --skill subwave-control -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install perminder-klair/subwave subwave-control --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/subwave-control .agents/skills/subwave-control && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "subwave-control" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-control into .agents/skills/subwave-control/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-control", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add perminder-klair/subwave --skill subwave-control -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install perminder-klair/subwave subwave-control --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/subwave-control .cursor/skills/subwave-control && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "subwave-control" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-control into .cursor/skills/subwave-control/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-control", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/perminder-klair/subwave.git --path .claude/skills/subwave-control--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add perminder-klair/subwave --skill subwave-control -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install perminder-klair/subwave subwave-control --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/subwave-control .gemini/skills/subwave-control && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "subwave-control" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-control into .gemini/skills/subwave-control/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-control", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install perminder-klair/subwave subwave-controlInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add perminder-klair/subwave --skill subwave-control -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/subwave-control .github/skills/subwave-control && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "subwave-control" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-control into .github/skills/subwave-control/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-control", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add perminder-klair/subwave --skill subwave-control -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install perminder-klair/subwave subwave-control --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/subwave-control .opencode/skills/subwave-control && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "subwave-control" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-control into .opencode/skills/subwave-control/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-control", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
subwave-controlStart or stop the SUB/WAVE radio stack (a personal internet radio station) in dev or production mode — no builds, no rebuilds, no config rendering.
Subwave Control is an agent skill from perminder-klair/subwave. Start or stop the SUB/WAVE radio stack (a personal internet radio station) in dev or production mode — no builds, no rebuilds, no config rendering. Use this skill any time the user wants to "start subwave", "stop subwave", "bring up the radio", "shut down the radio", "boot subwave in dev/prod", "turn subwave on/off", "is subwave running?", or otherwise just power the stack up or down. Detects which compose file (dev vs prod) is already running and matches it; if nothing is running, asks dev or prod. Dev mode also…
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development. It works with Git, Next.js and Docker. The repository describes itself as: Personal internet radio: Agentic AI DJ. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fc34e8a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dockernpmgitcurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use docker, npm, git and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Subwave Control loads about 1.6k tokens when it runs. Until then it costs about 212 tokens; SKILL.md has 680 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
te goes to `<repo>/state` unless `docker/.env` (or the environment) sets `STATE_DIR` — compose picks that up on its own,state/icecast-secrets.env`) or the root `.env`Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from perminder-klair/subwave at commit fc34e8a, republished under its MIT licence (© perminder-klair). 680 words, ~1,620 tokens.
.claude/skills/subwave-control/SKILL.md (or your agent's skills folder).Bring the SUB/WAVE stack up or down. Nothing more. No builds, no pulls, no setup — if any of those are needed, hand off to the subwave-deploy skill.
This skill is checked into the SUB/WAVE repo. The repo root is the git repository that contains this skill — derive it once, don't hardcode it:
REPO=$(git -C "<this skill's base directory>" rev-parse --show-toplevel)<this skill's base directory> is the absolute path shown as "Base directory
for this skill" when the skill loads. All docker compose invocations run from
docker/ inside $REPO. Shell state does not persist between commands, so
re-derive $REPO (or substitute its value) in each command block below.
Two compose files = two modes.
docker-compose.dev.yml: Icecast + Liquidsoap + Controller only. Web runs separately as npm run dev on the host (port 7700).docker-compose.yml: adds web (built image) and caddy (edge router). Only Caddy binds a host port. State defaults to <repo>/state (override with the STATE_DIR env).Service ports (post-renumber): Web 7700, Controller 7701, Icecast 7702. The controller's /health endpoint returns {"status":"on-air"} once Liquidsoap is connected to Icecast — that's the canonical "is it up?" check.
Web dev is hot-reloaded but must be launched separately in dev mode. npm run dev in web/ is a long-running foreground process; in this skill, always run it as a background task. The Next.js port 7700 collides with macOS AirPlay Receiver in some setups — if you get EADDRINUSE on :7700, check lsof -nP -iTCP:7700 -sTCP:LISTEN and surface the conflict to the user rather than guessing.
cd "$REPO"
RUNNING_DEV=$(docker compose -f docker-compose.dev.yml ps -q 2>/dev/null)
RUNNING_PROD=$(docker compose -f docker-compose.yml ps -q 2>/dev/null)
WEB_DEV_PID=$(lsof -nP -iTCP:7700 -sTCP:LISTEN -t 2>/dev/null | head -1)| State | RUNNING_DEV | RUNNING_PROD | WEB_DEV_PID |
|---|---|---|---|
| Nothing up | empty | empty | maybe (AirPlay) |
| Dev up | non-empty | empty | non-empty (next dev) |
| Prod up | empty | non-empty | empty |
| Both up | non-empty | non-empty | — (anomaly; ask user) |
For start: if neither is up, ask the user which mode. If one is already up, treat the request as a no-op and just verify health.
For stop: target whichever is currently up. If nothing is up, say so and stop.
cd "$REPO/docker" && docker compose up -dThen start the web dev server (run it in the background — do not block waiting for it):
cd "$REPO/web" && npm run devIf web/node_modules is missing, run npm install first. If :7700 is already taken by something other than a prior next dev (e.g. macOS ControlCenter for AirPlay), surface the conflict to the user — do not try to kill ControlCenter.
cd "$REPO"
docker compose -f docker-compose.yml up -dState goes to <repo>/state unless docker/.env (or the environment) sets STATE_DIR — compose picks that up on its own, no need to pass it.
No host-side web dev server in prod — Caddy serves the built web container.
Give Liquidsoap ~5 seconds to connect to Icecast, then probe the controller:
sleep 5
curl -sf http://localhost:7701/health # dev — controller exposed directly
# or, in prod, via the Caddy port (read from `docker compose -f docker-compose.yml port caddy 80`)Expect {"status":"on-air"}. In dev also verify the web UI: curl -sf -o /dev/null -w "%{http_code}\n" http://localhost:7700 → expect 200.
If the health probe fails, peek at docker compose logs --tail=30 controller broadcast and surface the relevant error. Do not rebuild — that's subwave-deploy's territory.
# Stop the web dev server first (it holds :7700)
WEB_DEV_PID=$(lsof -nP -iTCP:7700 -sTCP:LISTEN -t 2>/dev/null | head -1)
[ -n "$WEB_DEV_PID" ] && kill "$WEB_DEV_PID"
cd "$REPO/docker" && docker compose downIf :7700 is held by ControlCenter (AirPlay) and not node, skip the kill — don't kill ControlCenter. Confirm with lsof -nP -iTCP:7700 -sTCP:LISTEN and check the COMMAND column before sending the signal.
cd "$REPO" && docker compose -f docker-compose.yml downDo not add -v (would wipe the named volumes for Caddy data/config) unless the user explicitly asks. State at ${STATE_DIR} is a host bind mount and is not affected by down either way.
docker compose up -d and docker compose down against either compose filenpm run dev / killing the foreground next dev process on :7700npm install --prefix web if node_modules is missingcurl health probesdocker compose down -v (wipes volumes — Caddy data/config in prod)rm/docker volume rm/docker system prunenode process holding :7700state/ (including state/icecast-secrets.env) or the root .envsubwave-deployIf the user wants any of these, this skill is not the right one — invoke subwave-deploy instead:
scripts/setup.shgit pull + rebuild + recreatecontroller/, liquidsoap/, or web/ that need up -d --build© perminder-klair, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/subwave-control of perminder-klair/subwave.
Open the folder on GitHubat commit fc34e8a
Subwave Control next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Subwave Control this skillperminder-klair/subwave | 1.4k | — | ~1.6k | Automated safety check: Notes | MIT | |
| Deploy To Tempsgotempsh/temps | 828 | — | ~1.3k | Automated safety check: Notes | Apache-2.0 | |
| Build Px4 macOSPX4/PX4-Autopilot | 13k | — | ~1.1k | Automated safety check: Pass | BSD-3-Clause | |
| Git Conventionswerf/werf | 4.7k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Clean Vmaxeldelafosse/loop | 281 | — | ~906 | Automated safety check: Pass | MIT | |
| Burla Parallel Dev ClustersBurla-Cloud/burla | 263 | — | ~1.6k | Automated safety check: Pass | Custom licence |
gotempsh/temps
Deploy applications to the Temps platform with automatic framework detection, Dockerfile generation, and container orchestration.
PX4/PX4-Autopilot
Build PX4 board firmware on macOS in the px4-dev Docker container, including git worktrees, and stage commit-labeled artifacts without flashing hardware.
werf/werf
werf conventions for branch names and commit messages. An agent skill from werf/werf.
axeldelafosse/loop
Safely clean the local loop VM by reporting and removing stale loop runs, inactive Next.js or Storybook servers, optional browser windows, and unused loop-created worktrees without disturbing active…
Burla-Cloud/burla
Sets up an isolated Burla dev cluster per git worktree so several agents can work in parallel, and explains when to use local-dev or remote-dev.
fike/fastapi-blog
Skill for identifying code smells and refactoring code using Clean Code, SOLID, and DRY principles.
perminder-klair/subwave
Benchmark and compare LLM models for SUB/WAVE's on-air calls — track picks, segments, listener requests, DJ scripts, banter, and programme beats — in both candidate-pool and agent modes, using…
perminder-klair/subwave
Stage a SUB/WAVE git worktree so the dev stack can run from it, then start it.
perminder-klair/subwave
Draft a Discord release announcement for SUB/WAVE from a release PR, tag, or version number.
perminder-klair/subwave
Open a release pull request from develop to main for SUB/WAVE, and keep develop from drifting behind main.
perminder-klair/subwave
Write a news post for the SUB/WAVE "Dispatches" page, a short human-friendly tutorial about a feature, fix, or release.
perminder-klair/subwave
Drive a controller/admin-UI change end-to-end from a worktree without touching the live station — isolated controller on a spare port + temp STATEDIR, worktree Next dev server, Playwright against…
Categories
Start or stop the SUB/WAVE radio stack (a personal internet radio station) in dev or production mode — no builds, no rebuilds, no config rendering. Subwave Control is an agent skill from perminder-klair/subwave. Start or stop the SUB/WAVE radio stack (a personal internet radio station) in dev or production mode — no builds, no rebuilds, no config rendering.
Subwave Control fits situations like: first-time setup; Git pull + rebuilds; jingle generation; config changes — thats subwave-deploy.
Run `npx skills add perminder-klair/subwave --skill subwave-control -a claude-code`. Or copy the skill folder (.claude/skills/subwave-control in perminder-klair/subwave) into .claude/skills/subwave-control in your project. Claude Code loads it when a task matches its description.
Run `npx skills add perminder-klair/subwave --skill subwave-control -a codex`. Or copy the skill folder (.claude/skills/subwave-control in perminder-klair/subwave) into .agents/skills/subwave-control in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add perminder-klair/subwave --skill subwave-control -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/subwave-control, .gemini/skills/subwave-control, .github/skills/subwave-control and .opencode/skills/subwave-control in your project.
Going by SKILL.md and its folder, Subwave Control needs the command-line tools its instructions call (docker, npm, git and curl). Our summary lists: Node.js; Docker.
SKILL.md contains no URLs. Its commands use docker, npm, git and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Subwave Control is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Subwave Control: Deploy To Temps (gotempsh/temps, 828 stars), Build Px4 macOS (PX4/PX4-Autopilot, 13k stars), Git Conventions (werf/werf, 4.7k stars) and Clean Vm (axeldelafosse/loop, 281 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
perminder-klair (a GitHub user) maintains it in perminder-klair/subwave, which has 1,417 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 9, 2026.
Source: perminder-klair/subwave on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.