Check
openwpm/OpenWPM
A skill your agent uses to check on background feature agents launched via /kickoff — running in tmux sessions or docker/podman containers.
Start (or restart) a local multi-node Temps cluster using Docker-in-Docker — one control plane + 3 worker nodes, each a privileged DinD container running its own dockerd + temps agent, wired with…
$ npx skills add gotempsh/temps --skill start-temps-cluster -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gotempsh/temps start-temps-cluster --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/gotempsh/temps.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/start-temps-cluster .claude/skills/start-temps-cluster && 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 "start-temps-cluster" agent skill from https://github.com/gotempsh/temps/tree/main/.agents/skills/start-temps-cluster into .claude/skills/start-temps-cluster/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "start-temps-cluster", 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/gotempsh/temps/tree/main/.agents/skills/start-temps-clusterType 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 gotempsh/temps --skill start-temps-cluster -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gotempsh/temps start-temps-cluster --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gotempsh/temps.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/start-temps-cluster .agents/skills/start-temps-cluster && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "start-temps-cluster" agent skill from https://github.com/gotempsh/temps/tree/main/.agents/skills/start-temps-cluster into .agents/skills/start-temps-cluster/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "start-temps-cluster", 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 gotempsh/temps --skill start-temps-cluster -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gotempsh/temps start-temps-cluster --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gotempsh/temps.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/start-temps-cluster .cursor/skills/start-temps-cluster && 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 "start-temps-cluster" agent skill from https://github.com/gotempsh/temps/tree/main/.agents/skills/start-temps-cluster into .cursor/skills/start-temps-cluster/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "start-temps-cluster", 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/gotempsh/temps.git --path .agents/skills/start-temps-cluster--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 gotempsh/temps --skill start-temps-cluster -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gotempsh/temps start-temps-cluster --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gotempsh/temps.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/start-temps-cluster .gemini/skills/start-temps-cluster && 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 "start-temps-cluster" agent skill from https://github.com/gotempsh/temps/tree/main/.agents/skills/start-temps-cluster into .gemini/skills/start-temps-cluster/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "start-temps-cluster", 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 gotempsh/temps start-temps-clusterInstalls 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 gotempsh/temps --skill start-temps-cluster -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gotempsh/temps.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/start-temps-cluster .github/skills/start-temps-cluster && 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 "start-temps-cluster" agent skill from https://github.com/gotempsh/temps/tree/main/.agents/skills/start-temps-cluster into .github/skills/start-temps-cluster/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "start-temps-cluster", 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 gotempsh/temps --skill start-temps-cluster -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gotempsh/temps start-temps-cluster --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gotempsh/temps.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/start-temps-cluster .opencode/skills/start-temps-cluster && 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 "start-temps-cluster" agent skill from https://github.com/gotempsh/temps/tree/main/.agents/skills/start-temps-cluster into .opencode/skills/start-temps-cluster/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "start-temps-cluster", 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.
start-temps-clusterStart (or restart) a local multi-node Temps cluster using Docker-in-Docker — one control plane + 3 worker nodes, each a privileged DinD container running its own dockerd + temps agent, wired with…
Start Temps Cluster is an agent skill from gotempsh/temps. Start (or restart) a local multi-node Temps cluster using Docker-in-Docker — one control plane + 3 worker nodes, each a privileged DinD container running its own dockerd + temps agent, wired with the real multi-host overlay (VXLAN, computecidr allocation) via tools/dev-cluster/ in whichever checkout/worktree you run it from. Invoke when the user says "start the temps cluster", "spin up a multi-node dev cluster", "test this with multiple workers", "bring up worker nodes locally", "docker in dind cluster", or wants…
Its SKILL.md is about 4.5k 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 DevOps & Cloud, covering Containers and Git worktrees. It works with Docker. The repository describes itself as: AI-native open-source alternative to Vercel + Sentry + PostHog + Pingdom + Resend + E2B. 440+ CLI operations with drop-in skills for Claude Code, Codex & OpenCode — deployments… The licence is Apache-2.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5a3994f. 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:
dockercurlpython3cargoFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
dev.maxmind.comFrom 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.
Start Temps Cluster loads about 4.5k tokens when it runs. Until then it costs about 219 tokens; SKILL.md has 1,712 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 found no risky patterns in SKILL.md.
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 gotempsh/temps at commit 5a3994f, republished under its Apache-2.0 licence (© gotempsh). 1,712 words, ~4,510 tokens.
.claude/skills/start-temps-cluster/SKILL.md (or your agent's skills folder).Wraps tools/dev-cluster/ — a docker-compose harness that runs a real Temps
control plane plus 3 worker nodes, each a privileged DinD container, with the
actual overlay network (VXLAN, compute_cidr allocation, cluster DNS) wired
up exactly as it would be on real hardware. Use this whenever a fix or feature
needs more than one node to prove anything — single-node start-temps
cannot exercise cross-node scheduling, the overlay, or cluster DNS at all.
┌──── temps-underlay (10.42.0.0/24, docker bridge, the "VPC") ────┐
│ │
│ postgres 10.42.0.5 (TimescaleDB pg18, internal) │
│ control-plane 10.42.0.10 DinD + `temps serve` │
│ host ports 80 → 80, 443 → 443 (NOT 8080 — see Gotcha below) │
│ │
│ worker-1 10.42.0.21 worker-2 10.42.0.22 worker-3 10.42.0.23│
│ each: privileged DinD + `temps agent`, own dockerd │
└──────────────────────────────────────────────────────────────────┘
Allocator carves /24s from 172.20.0.0/16, one per worker:
worker-1 → 172.20.0.0/24
worker-2 → 172.20.1.0/24
worker-3 → 172.20.2.0/24
Cross-node container traffic flows over a VXLAN tunnel pinned to the
underlay IPs above. Within-node traffic uses the unchanged
`temps-app-network` Docker bridge (same as single-node temps).The temps source tree is bind-mounted read-write at /workspace inside every
DinD container, and cargo build --bin temps runs inside Linux — no
cross-compiling from macOS. The cluster builds from whichever checkout you
run ./dev-cluster in. cd into the right worktree first if you're testing
a fix that isn't on the checkout's current branch.
docker version must
succeed.GeoLite2-City.mmdb at the repo root of the checkout you're running
from (<checkout>/GeoLite2-City.mmdb, gitignored) — the proxy plugin
refuses to start without it. Download it from
MaxMind's GeoLite2 program
(free registration required) and place it at the repo root. If you keep
multiple worktrees of this repo, copying the file between them is faster
than downloading it again.Unlike start-temps (which allocates a port "slot" per checkout so many
worktrees run side by side), this harness uses fixed container names
(temps-dev-control-plane, temps-dev-worker-1/2/3, temps-dev-postgres)
and fixed host ports (80/443). There is no per-checkout isolation — starting a
second dev-cluster from a different worktree while one is already running
will collide.
Before running up, always check first:
docker ps -a --filter "name=temps-dev-" --format "{{.Names}}\t{{.Status}}"If containers are already there and belong to someone else's in-progress
work, don't down/reset them without asking — treat it like any other
shared, hard-to-reverse state.
There's also a separate mTLS-hardening variant (docker-compose.harden.yml,
driven by e2e-harden.sh, container prefix temps-harden-*, 2 workers only)
used for testing require_mtls / node-identity hardening specifically. It's a
different compose project name/port set from the base cluster, but still only
one can run at a time on its own.
cd <checkout>/tools/dev-cluster
./dev-cluster up # first run: ~5-10 min (compiles the workspace inside Linux)
# subsequent runs: ~10-30s (cargo build no-ops)up blocks until: control plane's TCP listener is up, all 3 workers have
registered as nodes rows, and every worker has an allocated compute_cidr.
It prints admin credentials and the join-token path on success.
./dev-cluster status # node + overlay state across the cluster
./dev-cluster logs control-plane # or worker-1/worker-2/worker-3/postgres
./dev-cluster shell worker-1 # shell into a worker's DinD host
./dev-cluster restart control-plane # bounce after a binary rebuild
./dev-cluster down # stop, KEEP volumes (fast restart)
./dev-cluster reset # stop + DELETE all volumes (fresh slate, asks to confirm)docker-compose.yml publishes 80:80 and 443:443 (production-shaped —
TEMPS_ADDRESS=0.0.0.0:80), matching what e2e-harden.sh and every API
recipe below assume (http://localhost/...). But dev-cluster's own up
command waits on /dev/tcp/127.0.0.1/8080 and prints web UI: http://localhost:8080 — that's stale/drifted from the compose file and will
never resolve. Use port 80, not 8080, for every API/browser interaction.
If ./dev-cluster up looks stuck on "waiting for control plane", check
whether it's actually already up on the right port before assuming a real
hang:
curl -s -o /dev/null -w '%{http_code}\n' http://localhost/api/healthIf that returns a real HTTP status, the cluster is up — the wait loop itself is just polling the wrong port and will eventually time out at 20 minutes regardless. Don't wait for it; move on once curl confirms readiness.
Login: admin@local.dev / password on line 2 of .state/admin.txt.
J=/tmp/tc_cookies.txt
PW=$(sed -n '2p' tools/dev-cluster/.state/admin.txt)
curl -s -c $J -X POST http://localhost/api/auth/login -H 'Content-Type: application/json' \
-d "{\"email\":\"admin@local.dev\",\"password\":\"$PW\"}" -o /dev/null -w "login -> %{http_code}\n"The README documents this network as temps-overlay — that name is wrong.
Verified live: the actual Docker network on every worker is named temps0
(docker network ls inside a worker shows it). Use temps0, not
temps-overlay, or docker run fails with "network temps-overlay not
found".
./dev-cluster shell worker-1
docker run -d --rm --name target --network temps0 --ip 172.20.1.50 nginx:alpine
exit
./dev-cluster shell worker-2
docker run --rm --network temps0 --ip 172.20.0.50 alpine sh -c \
'apk add -q curl && curl -sf --max-time 5 http://172.20.1.50/ | head -c150'
# "<!DOCTYPE html>..." => bridge + VXLAN + FDB + routes + dual-attach all confirmed working(IPs above match worker-1 → 172.20.1.0/24, worker-2 → 172.20.0.0/24 — the
allocator assigns CIDRs in registration order, not worker-number order, so
confirm actual assignments with ./dev-cluster status rather than assuming
worker-N always gets the Nth-numbered /24.)
NIDS=$(curl -s -b $J http://localhost/api/internal/nodes | \
python3 -c "import sys,json;print(','.join(str(n['id']) for n in json.load(sys.stdin)['nodes']))")
PID=$(curl -s -b $J -X POST http://localhost/api/projects -H 'Content-Type: application/json' \
-d '{"name":"cluster-test","directory":".","main_branch":"main","preset":"dockerfile","storage_service_ids":[],"source_type":"docker_image"}' \
| python3 -c "import sys,json;print(json.load(sys.stdin).get('id',''))")
EID=$(curl -s -b $J http://localhost/api/projects/$PID/environments | \
python3 -c "import sys,json;print(json.load(sys.stdin)[0]['id'])")
curl -s -b $J -X PUT http://localhost/api/projects/$PID/environments/$EID/settings -H 'Content-Type: application/json' \
-d "{\"replicas\":2,\"target_nodes\":[$NIDS],\"anti_affinity\":true,\"exposed_port\":8080}"
curl -s -b $J -X POST http://localhost/api/projects/$PID/environments/$EID/deploy/image -H 'Content-Type: application/json' \
-d '{"image_ref":"nginxinc/nginx-unprivileged:alpine","health_check_path":"/"}'Use nginxinc/nginx-unprivileged:alpine, not plain nginx:alpine. Every
deployed container runs cap_drop: ALL + no-new-privileges; stock nginx
needs to chown/bind a privileged port and crashes under that hardening.
preset must be "dockerfile" (not "docker" — invalid) even for
source_type: "docker_image". Pre-pull the image on every node first
(docker exec temps-dev-worker-N docker pull <image>) if ensure_image_on_remote
isn't wired for your image, or the deploy will fail on nodes without it cached.
SID=$(curl -s -b $J -X POST http://localhost/api/external-services -H 'Content-Type: application/json' \
-d '{"name":"test-db","service_type":"postgres","node_id":<worker-1-node-id>,"topology":"standalone","parameters":{"database":"app","username":"app_user","password":"<pick-one>"},"members":[]}' \
| python3 -c "import sys,json;print(json.load(sys.stdin).get('id',''))")Then create the app project with "storage_service_ids":[$SID] (this is the
link mechanism — set at project creation, there is no later update endpoint
for it) and set target_nodes to a different node than the one above, to
exercise cross-node service linking. Note a project can only link one service
per service_type (e.g. one postgres, one redis) — linking a second postgres
service to the same project fails.
Cluster DNS defaults off. The setting is a top-level cluster_dns
object with an enabled field — NOT multi_node.cluster_dns_enabled (that
key doesn't exist in the real schema; writing it via raw SQL succeeds
silently but does nothing, and disappears on the next control-plane restart
since settings get re-normalized from the typed Rust struct on load).
Verified live:
docker exec temps-dev-postgres psql -U temps -d temps -c \
"update settings set data = jsonb_set(COALESCE(data::jsonb,'{}'),'{cluster_dns,enabled}','true'::jsonb)::json where id=1;"
docker exec temps-dev-postgres psql -U temps -d temps -tAc \
"select data::jsonb->'cluster_dns' from settings where id=1;" # => {"enabled": true}Two restarts are required after this, not zero:
docker restart temps-dev-control-plane — a raw SQL write bypasses
ConfigService's in-memory settings cache; the control plane won't see
the change until it re-reads settings on startup (there's no live
invalidation path for a write that didn't go through the settings API).docker restart temps-dev-worker-1 temps-dev-worker-2 temps-dev-worker-3
(or at least whichever workers are relevant to your test) — the per-node
DNS resolver is only spawned once, during initial agent startup. An
agent that was already running when you flip cluster_dns.enabled will
keep operating in "disabled" mode indefinitely; it does not poll for this
setting changing live. This is a known gap (tracked as part of ADR-024,
proposed not yet implemented) — don't lose time assuming a stuck deploy
means the fix under test is broken; check docker logs <worker> | grep -i resolver for "DNS resolver started" before assuming anything else is
wrong.After both restarts, worker containers hit a transient DinD
containerd: timeout waiting for containerd to start stall fairly often
on a busy host — this is the same known containerd-stall gotcha as during
initial up. Don't machine-gun docker restart on it; one extra restart is
fine, but if it's still stalling after that just wait — it clears on its own
within roughly a minute. Confirm real recovery via a fresh heartbeat, not
just "container status is Up":
docker exec temps-dev-postgres psql -U temps -d temps -tAc \
"select extract(epoch from now() - last_heartbeat) from nodes where name='worker-2';"
# a small number (single-digit seconds) means it's actually backIf a deployment fails with "Worker route/DNS propagation did not complete within 10s ... N active node(s) have never ACKed a DNS generation at all",
that message IS the diagnosis — it's telling you exactly this: enable
cluster DNS, then restart the agents, in that order, before deploying.
If a worker has never had ANY container deployed to it before, POST /api/external-services with node_id pointing at that worker can fail with:
Docker responded with status code 404: failed to set up container networking: network temps-app-network not foundRegular app deployments to a node appear to ensure this bridge network exists first; external-service creation on a remote node does not (this looks like a real, narrow gap — worth a separate bug report, distinct from whatever cross-node fix you're testing). Workaround to unblock testing:
docker compose -f docker-compose.yml -p temps-dev-cluster exec -T worker-1 \
docker network create temps-app-networkIf the first creation attempt fails this way, it also leaves an orphaned container behind holding the service's name (Docker created the container before the network-attach step failed) — the retry will then fail differently with a container-name conflict. Clean up before retrying:
docker compose -f docker-compose.yml -p temps-dev-cluster exec -T worker-1 \
docker rm -f <service-name>./dev-cluster down — stops containers, keeps postgres data / cargo
cache / worker docker volumes. Next up is fast (~10-30s)../dev-cluster reset — docker compose down -v + removes .state/.
Prompts for confirmation (deletes postgres data, worker volumes, admin
credentials). Next up starts entirely from scratch: re-runs setup, mints a
new admin password, re-allocates CIDRs, new node IDs../dev-cluster logs control-plane to watch progress.setup --auto
hasn't finished (postgres not ready, migrations running, or an encryption
key conflict from a previous partial reset). Check
./dev-cluster logs control-plane; ./dev-cluster reset if it's a stale
key conflict.compute_cidr is NULL on a worker after registering — allocator ran but
failed; check the control-plane log for an allocator warning. Pool is
172.20.0.0/16 (room for 256 workers), so exhaustion shouldn't happen here../dev-cluster status shows overlay state per
worker. Missing bridge/vxlan device on one worker → check that worker's log;
network_sync logs every poll and NetworkManager::bootstrap errors are
descriptive../dev-cluster up fails with Conflict. The container name "/temps-dev-postgres" is already in use — a stray container from an earlier run under a different (mismatched) compose project name. Verified live: this compose file declares name: temps-dev-cluster, but docker compose ls -a can show an existing project literally named temps-dev holding the same fixed container/volume names (volumes and container names are hardcoded in the compose file, not templated with the project name, so two different project labels can collide on the same names). Fix: docker rm -f temps-dev-postgres (safe — it's disposable dev-cluster scratch data, distinct from the regular single-node dev DB container temps-dev-db, which you must NOT touch) and re-run up. The "volume ... already exists but was created for project X (expected Y)" warnings that print alongside this are non-fatal and can be ignored — named volumes are reused regardless of which project label created them; only the container name collision actually blocks startup. If you need to run raw docker compose commands directly instead of via the ./dev-cluster wrapper, pass -p temps-dev-cluster explicitly to avoid re-triggering this drift.docker restart temps-dev-worker-N (plain docker restart, not docker compose restart,
which can no-op — check StartedAt via docker inspect if unsure it
actually bounced). If a worker container has fully exited (not just
looping in its own retry log) with failed to save daemon pid to disk: process with PID N is still running, docker restart may need a second
attempt — a clean Exited state followed by docker start gets a fresh
PID namespace and usually clears it.docker compose restart seems to do nothing — known no-op risk in this
harness; use docker restart <container-name> instead when you need a real
bounce.tools/dev-cluster/e2e-harden.sh (2-worker docker-compose.harden.yml
variant, separate container prefix temps-harden-*, port 80 via
-p temps-harden-test) instead of this base cluster.© gotempsh, Apache-2.0. 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 .agents/skills/start-temps-cluster of gotempsh/temps.
Open the folder on GitHubat commit 5a3994f
Start Temps Cluster 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 |
|---|---|---|---|---|---|---|
| Start Temps Cluster this skillgotempsh/temps | 828 | — | ~4.5k | Automated safety check: Pass | Apache-2.0 | |
| Checkopenwpm/OpenWPM | 1.4k | — | ~1.5k | Automated safety check: Pass | Custom licence | |
| Docker Agent Rundocker/skills | 547 | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Wp Playgroundbonny/WordPress-Simple-History | 317 | — | ~1k | Automated safety check: Notes | None | |
| Ship ItBlackBeltTechnology/pi-agent-dashboard | 315 | — | ~5.4k | Automated safety check: Pass | MIT | |
| Kickoffopenwpm/OpenWPM | 1.4k | — | ~781 | Automated safety check: Pass | Custom licence |
openwpm/OpenWPM
A skill your agent uses to check on background feature agents launched via /kickoff — running in tmux sessions or docker/podman containers.
docker/skills
A skill your agent uses when running a Docker Agent with docker agent run, choosing a safety/approval mode, using the --sandbox isolation flag, setting up aliases, or troubleshooting a run (missing…
bonny/WordPress-Simple-History
A skill your agent uses for quick local testing with WordPress Playground CLI.
BlackBeltTechnology/pi-agent-dashboard
Worktree-side implementation orchestrator for an OpenSpec change.
openwpm/OpenWPM
A skill your agent uses to launch a background Claude agent in tmux (or docker/podman) to implement a feature end-to-end.
platformplatform/PlatformPlatform
Stop the .NET Aspire AppHost and its Docker containers via the developer CLI.
gotempsh/temps
Manage, deploy, operate, and instrument applications with Temps.
gotempsh/temps
Add Temps analytics to React applications with comprehensive tracking capabilities including page views, custom events, scroll tracking, engagement monitoring, session recording, and Web Vitals…
gotempsh/temps
Best-practices reference for preparing and instrumenting applications on Temps.
gotempsh/temps
Operate Temps through the pinned @temps-sdk/cli package with bunx or npx.
gotempsh/temps
Design, build, test, and distribute external Temps plugins with TypeScript/Bun; provide development and local-testing guidance for existing Rust plugins.
gotempsh/temps
Add a custom domain to a Temps project and provision an automatic SSL/TLS certificate via Let's Encrypt, driven entirely from the @temps-sdk/cli CLI.
Works with
Categories
Start (or restart) a local multi-node Temps cluster using Docker-in-Docker — one control plane + 3 worker nodes, each a privileged DinD container running its own dockerd + temps agent, wired with…. Start Temps Cluster is an agent skill from gotempsh/temps. Start (or restart) a local multi-node Temps cluster using Docker-in-Docker — one control plane + 3 worker nodes, each a privileged DinD container running its own dockerd + temps agent, wired with the real multi-host overlay (VXLAN, computecidr allocation) via tools/dev-cluster/ in whichever checkout/worktree you run it from.
Start Temps Cluster fits situations like: says start the temps cluster; spin up a multi-node dev cluster; test this with multiple workers; bring up worker nodes locally.
Run `npx skills add gotempsh/temps --skill start-temps-cluster -a claude-code`. Or copy the skill folder (.agents/skills/start-temps-cluster in gotempsh/temps) into .claude/skills/start-temps-cluster in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gotempsh/temps --skill start-temps-cluster -a codex`. Or copy the skill folder (.agents/skills/start-temps-cluster in gotempsh/temps) into .agents/skills/start-temps-cluster 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 gotempsh/temps --skill start-temps-cluster -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/start-temps-cluster, .gemini/skills/start-temps-cluster, .github/skills/start-temps-cluster and .opencode/skills/start-temps-cluster in your project.
Going by SKILL.md and its folder, Start Temps Cluster needs the command-line tools its instructions call (docker, curl, python3 and cargo). Our summary lists: Python 3; Docker.
SKILL.md names 1 domain. As links in the text: dev.maxmind.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Start Temps Cluster is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k 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 Start Temps Cluster: Check (openwpm/OpenWPM, 1.4k stars), Docker Agent Run (docker/skills, 547 stars), Wp Playground (bonny/WordPress-Simple-History, 317 stars) and Ship It (BlackBeltTechnology/pi-agent-dashboard, 315 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gotempsh (a GitHub organization) maintains it in gotempsh/temps, which has 828 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 9, 2026.
Source: gotempsh/temps on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.