--- name: pstack-host description: "Host contract for pstack on VS Code and GitHub Copilot. Use whenever a pstack skill mentions Task, AskQuestion, subagent_type, /loop, Cursor model slugs, ~/.cursor, or a .cursor/ path, or when you need another pstack skill the skill tool cannot find. Maps those onto the agent tool, the host question tool, the wake script, Copilot paths, and ~/.copilot/pstack-models.md." --- > **Copilot host.** On VS Code or GitHub Copilot, invoke the `pstack-host` skill before any Cursor tool name, model slug, or `.cursor/` path in this file (Task, AskQuestion, /loop, subagent_type). The host skill wins. # pstack host (VS Code and GitHub Copilot) This skill wins over Cursor-only tool names in every other pstack skill and playbook. The engineering rules, playbooks, and principles stay as written. If this session actually has Cursor's `Task` tool and `AskQuestion`, follow the skill text literally and ignore this file. ## Subagents Spawn with the first tool that exists: 1. `agent` or `runSubagent` (VS Code) 2. `task` (Copilot CLI) | Skill text | Agent to run | Fallback prompt adds | | --- | --- | --- | | `subagent_type: "poteto-agent"` | `poteto-agent` | Read `/skills/poteto-mode/SKILL.md` and follow it. | | `subagent_type: "Comment Sicko"` | `comment-sicko` | Read `/agents/comment-sicko.md` and follow it. Report only. | | `subagent_type: generalPurpose` | `poteto-worker` | nothing | Use the agent only when the spawn tool lists it. Copilot CLI chats, including Copilot CLI chats inside VS Code, can offer only built-in types such as `general-purpose`. Then spawn `general-purpose` and start its prompt with "Invoke the pstack-host skill.", the fallback text with `` written as an absolute path (see Skills and files), and then the task. One call per worker. Parallel workers are several calls in the same turn. `run_in_background: true` means that. Do not wait for one worker before starting the next. Pass file paths, never pasted file bodies. `readonly: true` means do not edit. `readonly: false` means full tools. Review every worker's diff yourself. Do not pass a worker's summary through as the answer. If neither spawn tool exists, do the work in this session and say you could not fan out. Nested workers need the VS Code setting `chat.subagents.allowInvocationsFromSubagents`. If a spawn is rejected for that reason, say so once, then do the step in this session. ## Models Read `~/.copilot/pstack-models.md` when a skill names a role. That file is the setup sheet `/setup-pstack` writes. - `inherit-parent` and `auto` mean omit the model argument. - A role with no line uses `inherit-parent`. - Send a model only when this session lists that exact id. Cursor slugs such as `grok-4.6-fast-xhigh`, `claude-fable-5-1-thinking-max`, `gpt-5.6-sol-max`, and `claude-opus-5-thinking-xhigh` are not Copilot ids. If one is configured and this session does not list it, omit the model and continue. Do not stop the task to fix the slug. - Panel roles (`arena runners`, `architect runners`, `interrogate reviewers`, `arena cross-judge pool`) are lists. One worker per entry. The list length is the panel size. A single `inherit-parent` entry is a panel of one on the parent model. On Copilot CLI, `subagents.maxConcurrency` must be at least the panel size and `subagents.maxDepth` at least 2. If a panel is collapsed by that cap, say so. ## Questions `AskQuestion` maps to the host's question tool: `askQuestions` in VS Code chat (`vscode_askQuestions`), `ask_user` in Copilot CLI. Pass the options the skill lists. If the tool takes one question per call, ask them in order. If neither tool exists, ask with one short numbered list and wait. When a skill says the answer is observable, prototype or measure instead of asking. Do not invent a tool call. ## Wake loop Cursor's `/loop` is not available. For a heartbeat, run this plugin's wake script in a background terminal and resume when it prints `PSTACK_WAKE`. - Windows: `/scripts/wake.ps1 -Seconds ` - macOS and Linux: `/scripts/wake.sh ` `` is the folder with `plugin.json` (see Skills and files). Default interval is 1800 seconds unless the playbook names another. Do not sleep in the foreground. For CI, merges, and PR status, use `gh` and `/skills/poteto-mode/scripts/watch-pr/watch-pr` as the playbook says. Do not replace an event watch with sleep. `watch-pr` and `skills/poteto-mode/scripts/orch/orch.ts` need Bun, because they call `Bun.spawnSync`. Run `bun --version` first. Without Bun, watch with `gh pr checks --watch` and read state with `gh pr view --json state,mergeStateStatus,reviewDecision,statusCheckRollup`, and say `watch-pr` was unavailable. A `#!/usr/bin/env bun` shebang does nothing on Windows, so call `bun