Best for
- User says "stop all agents", "kill all agents", "drain overdeck"
- User says "stop dashboard and kill all agents"
- Memory pressure / pre-reboot drain
eltmon/overdeck/sync-sources/skills/pan-stop-all-agents/SKILL.md
Drain Overdeck: kill every running work agent and its review/test specialists, optionally stop the dashboard, and preserve conversation tmux sessions and shared sidecars.
Decision brief
Drain Overdeck: kill every running work agent and its review/test specialists, optionally stop the dashboard, and preserve conversation tmux sessions and shared sidecars.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/eltmon/overdeck --skill "sync-sources/skills/pan-stop-all-agents"Inspect the Agent Skill "pan-stop-all-agents" from https://github.com/eltmon/overdeck/blob/b6d7106f7044de1a243a38b3f2d43b5bbe9b0aaf/sync-sources/skills/pan-stop-all-agents/SKILL.md at commit b6d7106f7044de1a243a38b3f2d43b5bbe9b0aaf. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
pan kill is destructive. Always print the list and confirm before running unless the user has already explicitly said "kill all agents".
These are spawned per-agent and don't have CLI verbs of their own. Killing the tmux session is the right move; their lifecycle is fully derived from the work agent.
User says "stop all agents", "kill all agents", "drain overdeck"
The dashboard is treated as a separate axis: stop it explicitly only if asked.
pan kill is destructive. Always print the list and confirm before running unless the user has already explicitly said "kill all agents".
Permission review
The documentation includes network, browsing, or remote request actions.
curl -sk https://overdeck.localhost/api/health || echo "dashboard down (expected if stopped)"Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 85/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 14 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Cleanly stops every running work agent plus its associated review-coordinators and test specialists, and (optionally) the dashboard — without touching conversation tmux sessions (conv-*) or shared sidecars (CLIProxy, Traefik, TLDR).
| Tmux session prefix | Action | Why |
|---|---|---|
agent-<issue> | kill | Work agents |
review-coordinator-* | kill | Review pipeline tied to a work agent |
specialist-*-test-agent | kill | Test specialist tied to a work agent |
conv-* | PRESERVE | Conversation tmux for overdeck.localhost/conv/<id> — these are user-facing chats, not work runs |
overdeck (server) | PRESERVE unless stopping dashboard | |
| CLIProxy, Traefik, TLDR | PRESERVE — shared sidecars |
The dashboard is treated as a separate axis: stop it explicitly only if asked.
pan kill is destructive. Always print the list and confirm before running unless the
user has already explicitly said "kill all agents".
# List live tmux sessions, classified
tmux -L overdeck ls 2>/dev/null | awk -F: '{print }' | sort | awk '
/^agent-/ { agents[++a] = }
/^review-coordinator-/ { reviews[++r] = }
/^specialist-/ { specs[++s] = }
/^conv-/ { convs[++c] = }
END {
print "Work agents to kill ("a"):"; for (i=1;i<=a;i++) print " " agents[i]
print "Review coordinators to kill ("r"):"; for (i=1;i<=r;i++) print " " reviews[i]
print "Test specialists to kill ("s"):"; for (i=1;i<=s;i++) print " " specs[i]
print "Conversations to PRESERVE ("c"):"; for (i=1;i<=c;i++) print " " convs[i]
}
'
Show this list to the user. Wait for confirmation if they have not already pre-authorized.
Use pan kill <issue-id> so Cloister updates state cleanly. Derive the issue ID from
the session name: agent-pan-895 → pan kill PAN-895, agent-min-215 → pan kill MIN-215.
# Loop over agent sessions and kill each via pan
tmux -L overdeck ls 2>/dev/null \
| awk -F: '/^agent-/ {print }' \
| sed 's/^agent-//' \
| tr 'a-z' 'A-Z' \
| while read id; do
pan kill "$id" || true
done
If pan kill fails (e.g., agent is in a broken state.json), fall back to tmux:
tmux -L overdeck kill-session -t agent-<issue>
…and fix the broken state.json as a real bug (do not ignore it — see CLAUDE.md
"No Bandaids"). State files live at ~/.overdeck/agents/<id>/state.json. The most
common breakage is a doubled trailing } from a partial write.
These are spawned per-agent and don't have CLI verbs of their own. Killing the tmux session is the right move; their lifecycle is fully derived from the work agent.
for prefix in review-coordinator- specialist-; do
tmux -L overdeck ls 2>/dev/null \
| awk -F: -v p="^$prefix" ' { print }' \
| while read sess; do
tmux -L overdeck kill-session -t "$sess" || true
done
done
tmux -L overdeck ls 2>/dev/null | awk -F: '{print }' | sort
# Expect only: conv-* sessions, plus possibly the overdeck control session.
Only if the user asked to stop the dashboard. Use pan down, NOT kill -9.
pan down
Sidecars (CLIProxy, Traefik, TLDR) are intentionally left running — pan down only
takes the dashboard down. If the user wants a full teardown including sidecars,
they should ask explicitly; do not assume.
# Dashboard health (should fail if stopped, succeed if left up)
curl -sk https://overdeck.localhost/api/health || echo "dashboard down (expected if stopped)"
# Memory should drop noticeably after killing 5+ work agents
free -h | head -2
conv-*conv-* tmux sessions back the conversation views at overdeck.localhost/conv/<id>. They
are durable chat history, not work runs — the JSONL session files are sacred (see
CLAUDE.md). Killing a conv-* session loses the live attach point even if the JSONL
survives, and there is rarely a reason to do so during a "stop all agents" drain.
If a conv-* session genuinely needs to go (e.g. it's wedged), the user must ask for
that specific session by name.
CLIProxy, Traefik, and TLDR are shared infrastructure. Other tools and agents on the
machine depend on them (CLIProxy bridges ChatGPT subscription auth; Traefik routes all
*.localhost; TLDR serves code summaries). pan restart's default behavior already
encodes this: dashboard restarts, sidecars are left alone. Mirror that here.
conv-* sessions — these are chat views, not work agents. Always filter
to ^agent-, ^review-coordinator-, ^specialist- prefixes.tmux kill-session instead of pan kill — bypasses Cloister's state
cleanup. Only fall back to tmux if pan kill errors.pan down when only "kill agents" was asked — leave the dashboard up
unless explicitly told to stop it.agent-pan-895); pan kill expects upper-case issue IDs (PAN-895)./pan-kill — kill a single agent/pan-down — stop the dashboard only/pan-restart — restart dashboard, leave sidecars/pan-status — see what's running before/after/conv-lookup — read conversation sessions (the things you're preserving)Alternatives
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing
dotnet/skills
Guidance for configuring dependency injection in .NET MAUI apps — service registration in MauiProgram.cs, lifetime selection (Singleton / Transient / Scoped), constructor injection, Shell navigation auto-resolution, platform-specific registrations, and testability patterns. USE FOR: "dependency injection", "DI setup", "AddSingleton", "AddTransient", "AddScoped", "service registration", "constructor injection", "IServiceProvider", "MauiProgram DI", "register services", "BindingContext injection".
davepoon/buildwithclaude
Automate CircleCI tasks via Rube MCP (Composio): trigger pipelines, monitor workflows/jobs, retrieve artifacts and test metadata. Always search tools first for current schemas.