From qwen-stack
Manage the qwen-stack supervisor's backend list — list configured backends with live health, add a new backend, remove one, or test connectivity. Operates on `~/.qwen-coprocessor-stack/config.json` and hot-reloads in the running supervisor without restart. Use when the user types `/qwen-stack:backends ...`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/qwen-stack:backends list | add <id> <url> [model] [tier] [capacity] [weight] [ctx_size] | remove <id> | test [id]list | add <id> <url> [model] [tier] [capacity] [weight] [ctx_size] | remove <id> | test [id]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Lifecycle and discovery for the supervisor's backend list. Edits to `~/.qwen-coprocessor-stack/config.json` hot-apply on the next `qwen_spawn` or `qwen_backends` call — no supervisor restart required. Existing sessions stay pinned to their backend (RDR-001 §Q3).
Lifecycle and discovery for the supervisor's backend list. Edits to ~/.qwen-coprocessor-stack/config.json hot-apply on the next qwen_spawn or qwen_backends call — no supervisor restart required. Existing sessions stay pinned to their backend (RDR-001 §Q3).
QWEN_BACKENDS env var — if set, overrides the config file. If the user has this set in their shell, prefer editing the shell rc instead of the file (and tell them so).~/.qwen-coprocessor-stack/config.json { "backends": [...] } — the file you read/write here.local-27b at localhost:8080/v1) when neither is set.{
"id": "qwentescence", // unique handle, kebab-case
"url": "http://qwentescence:1234/v1", // OpenAI-compatible base
"model": "qwen3.6-35b-a3b", // identifier returned by /v1/models
"tier": "remote", // "local" | "remote"
"capacity": "heavy", // "fast" | "heavy"
"weight": 1, // optional, default 1
"ctx_size": 131072 // optional; matches llama-server --ctx-size
}
ctx_size is operator-declared (the supervisor doesn't probe). When set and no per-spawn / env / config tier resolves max_context_tokens, the supervisor uses floor(0.85 * ctx_size) as the default cap for spawns that route to this backend (RDR-002 v0.7 amendment). Without it, spawns fall through to the hardcoded 111000 default — fine for a 131072-ctx backend, silently no-guardrail for an 8K-ctx local. Set it.
Parse the first positional arg as the subcommand. If absent or list, run list. Otherwise dispatch on add, remove, or test.
qwen_backends (no args). The supervisor returns each backend with a live healthy field (true/false/null).id, url, model, tier, capacity, healthy. Use ✓ / ✗ / ? glyphs for healthy true/false/null.QWEN_BACKENDS env var is set in the user's shell (echo $QWEN_BACKENDS), say "(from QWEN_BACKENDS env)".~/.qwen-coprocessor-stack/config.json exists, say "(from ~/.qwen-coprocessor-stack/config.json)".Args:
<id> (required) — kebab-case unique handle.<url> (required) — OpenAI-compatible base ending in /v1 (warn if missing).[model] — defaults to the value /v1/models returns from the URL. If absent, do a quick curl -sf -m 5 <url>/models to discover, falling back to qwen3.6-35b-a3b with a note.[tier] — local or remote. Default: remote if URL host is not localhost/127.0.0.1, else local.[capacity] — fast or heavy. Default: heavy for remote, fast for local.[weight] — integer ≥ 1. Default: 1.[ctx_size] — positive integer matching the backend's --ctx-size. Optional; when supplied, the supervisor derives the default max_context_tokens cap as floor(0.85 * ctx_size) for spawns routed to this backend. Skip only if you intend to fall through to the hardcoded 111000 default (fine for a 131072-ctx backend, dangerous for an 8K local).Steps:
QWEN_BACKENDS env is set — it would silently override the file edit. Tell the user to either unset QWEN_BACKENDS in their shell or edit the env directly.<url>/health and <url>/v1/models (whichever responds) with curl -sf -m 5. If both fail, ask the user whether to add anyway. If they confirm, proceed.~/.qwen-coprocessor-stack/config.json (if it doesn't exist, treat as { "backends": [] }). Validate JSON shape.<id> already exists in the list (case-insensitive). Tell the user to remove the old one first.mkdir -p ~/.qwen-coprocessor-stack then write the JSON back with 2-space indent.qwen_backends MCP tool to verify the supervisor's hot-reload picked it up — the new entry should appear with a healthy value.QWEN_BACKENDS env is set — same reasoning as add.id (case-insensitive). If not found, list the current ids and stop.qwen_backends that the entry is gone.qwen_backends MCP tool.[id] provided, filter to that one. If not found, list available ids.curl -sf -m 5 <url>/health (or <url>/v1/models if /health 404s) to confirm the supervisor's cached health matches reality. Report any divergence.qwen_spawn or qwen_backends call. If a confirmation qwen_backends call shows stale data, mention that running sessions are still using the old list (expected — RDR-001 §Q3) but new spawns will see the updated list.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub hellblazer/qwen-coprocessor-stack --plugin qwen-stack