[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DHEF40EHV4F628MAJVDHTT":3,"skill-same:01M6DHEF40EHV4F628MAJVDHTT":60},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M6DHEF40EHV4F628MAJVDHTT","dispatch",null,"Start polecat workers on queued tasks already on the graph, given task ids or a parent whose ready tasks should run. Writes no tasks. Exclude for turning an objective into tasks or changing a task's text (use \u002Freify).","nicsuzor\u002FacademicOps","nicsuzor","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4496978?v=4","01M6DGWCFNDYP03M4DQAHA6DN1","Nicolas Suzor","01M6DGWCPXG37BMXRZZKXR0A1Z",5,"MIT","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-openclaw\u002Fskills\u002Fdispatch\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32],"text","ready","ids","run","reify","start","use","workers","tasks","graph","task","for","ready tasks","objective","2026-11-10 10:12:30",false,"---\nname: dispatch\ndescription: Start polecat workers on queued tasks already on the graph, given task ids or a parent whose ready tasks should run. Writes no tasks. Exclude for turning an objective into tasks or changing a task's text (use \u002Freify).\n---\n\n# \u002Fdispatch: start polecat workers on queued tasks\n\nThe task record is the whole message to the worker. Start it as written. The task dispatch pipeline is used for any durable deliverable -- including agent workflows, instruction updates, specifications, and code changes. Questions and lookups that can be answered in-turn are answered directly without queueing tasks. Never dispatch questions or lookups to workers.\n\nA polecat is a short-running container: it gets in, does its task, and gets out cleanly. Follow-up lives on the task graph, where the workflow puts it, never in a worker waiting for it. Dispatched workers operate under the worker state-only invariant: a worker may only mutate that task's own state (checking off criteria, recording verifiable evidence, transitioning status). Workers never inspect or modify edges across other tasks, compute reverse dependencies, or mint follow-up verification tasks; unblocking and sequencing belong exclusively to the graph engine and dispatcher.\n\n## 1. Check each task is ready\n\nRead each task you were given; for a parent, read its children and take the ready ones.\n\nA task is ready when its status is `queued`, it has no open `needs` edges or incomplete children, it fills the `\u002Freify` task template (Goal, Acceptance, Instructions, Output), and its Instructions conclude with the composed workflow's release step. When all open children under a composite task (`parent`) reach `done`, the composite task does not automatically close if it contains substantive acceptance criteria; instead, it becomes `ready` for an explicit synthesis and sign-off pass managed by `\u002Freconcile`.\n\n- A QA follow-up stays queued until its primary task releases `done`; once the primary task releases `done`, the QA follow-up's `needs` dependency is satisfied and it becomes ready for immediate dispatch.\n- A task that folds follow-ups into internal subtasks is ready when executable by the same agent in one session; only send to `\u002Freify` when work requires independent sessions, personas, or approval gates that must be cut into an epic with child tasks.\n- Send a task that is unready or underspecified to `\u002Freify` with its id, because writing and rewriting tasks is that skill's job. Dispatch the rest.\n- **Graph deduplication and premise check**: Verify that no conflicting or overlapping open task exists (query `pkb_list_tasks` for active sibling tasks under the parent container) and that a premise-check PASS was recorded on reification before dispatching. If an unlinked sibling covers identical subsystem artifacts, halt and resolve the overlap.\n- **Intake Contract:** On receiving a direction or work brief, the receiving agent must record its own summary stating deliverables as a frozen `## Acceptance` checklist on a PKB task before work starts.\n\n## 2. Start the workers\n\nStart one polecat worker per ready task, in parallel, through the project's dispatch pathway. The worker's whole prompt is `\u002Fida:pull \u003Ctask-id>`, because the task carries everything else.\n\nWorkers queue asynchronously; callers are not notified when they start, and neither track nor report starts. Assume work proceeds unless an error comes back. A worker dispatch failure is a halt: report the task id and the failure verbatim.\n\n## 3. Report and stop (fire-and-forget)\n\nDispatch is fire-and-forget: the worker records its result on the task graph. Once tasks are dispatched, output the dispatch report and end your turn immediately:\n\n- Output one line per task: title, id, and that the task is queued for a worker, or the `\u002Freify` hand-back and why.\n- Never wait for a worker to finish in the dispatch turn, never wait for or report worker starts, and never call or block on event-stream tools (such as `polecat_polecat_events`), status checks, sleep loops, or timers.\n\n## 4. Act on a completed worker (separate invocation or turn)\n\nWorker outputs (`status`, `completion_evidence`, `pr_url`) return on the PKB task graph after the container exits. When a session is invoked in a separate turn or invocation to check or `\u002Freconcile` a completed worker (or woken by an external completion notification):\n\n- **Done (`status=done`, `exit_code=0`)**: Read the worker's report on the task record and check it per `premise-check`. Read downstream tasks on the graph whose `needs` dependencies are now satisfied, and dispatch any that are ready. Trigger `\u002Fverify` on the deliverable or `\u002Freconcile` as needed.\n- **Partial or Failed (`status=partial` or `status=failed`, or `exit_code!=0`)**: Inspect the failure reason recorded on the task and container logs. If unfinished work remains, route the follow-up through `\u002Freify` or escalate per fail-fast.\n","# \u002Fdispatch: start polecat workers on queued tasks\n\nThe task record is the whole message to the worker. Start it as written. The task dispatch pipeline is used for any durable deliverable -- including agent workflows, instruction updates, specifications, and code changes. Questions and lookups that can be answered in-turn are answered directly without queueing tasks. Never dispatch questions or lookups to workers.\n\nA polecat is a short-running container: it gets in, does its task, and gets out cleanly. Follow-up lives on the task graph, where the workflow puts it, never in a worker waiting for it. Dispatched workers operate under the worker state-only invariant: a worker may only mutate that task's own state (checking off criteria, recording verifiable evidence, transitioning status). Workers never inspect or modify edges across other tasks, compute reverse dependencies, or mint follow-up verification tasks; unblocking and sequencing belong exclusively to the graph engine and dispatcher.\n\n## 1. Check each task is ready\n\nRead each task you were given; for a parent, read its children and take the ready ones.\n\nA task is ready when its status is `queued`, it has no open `needs` edges or incomplete children, it fills the `\u002Freify` task template (Goal, Acceptance, Instructions, Output), and its Instructions conclude with the composed workflow's release step. When all open children under a composite task (`parent`) reach `done`, the composite task does not automatically close if it contains substantive acceptance criteria; instead, it becomes `ready` for an explicit synthesis and sign-off pass managed by `\u002Freconcile`.\n\n- A QA follow-up stays queued until its primary task releases `done`; once the primary task releases `done`, the QA follow-up's `needs` dependency is satisfied and it becomes ready for immediate dispatch.\n- A task that folds follow-ups into internal subtasks is ready when executable by the same agent in one session; only send to `\u002Freify` when work requires independent sessions, personas, or approval gates that must be cut into an epic with child tasks.\n- Send a task that is unready or underspecified to `\u002Freify` with its id, because writing and rewriting tasks is that skill's job. Dispatch the rest.\n- **Graph deduplication and premise check**: Verify that no conflicting or overlapping open task exists (query `pkb_list_tasks` for active sibling tasks under the parent container) and that a premise-check PASS was recorded on reification before dispatching. If an unlinked sibling covers identical subsystem artifacts, halt and resolve the overlap.\n- **Intake Contract:** On receiving a direction or work brief, the receiving agent must record its own summary stating deliverables as a frozen `## Acceptance` checklist on a PKB task before work starts.\n\n## 2. Start the workers\n\nStart one polecat worker per ready task, in parallel, through the project's dispatch pathway. The worker's whole prompt is `\u002Fida:pull \u003Ctask-id>`, because the task carries everything else.\n\nWorkers queue asynchronously; callers are not notified when they start, and neither track nor report starts. Assume work proceeds unless an error comes back. A worker dispatch failure is a halt: report the task id and the failure verbatim.\n\n## 3. Report and stop (fire-and-forget)\n\nDispatch is fire-and-forget: the worker records its result on the task graph. Once tasks are dispatched, output the dispatch report and end your turn immediately:\n\n- Output one line per task: title, id, and that the task is queued for a worker, or the `\u002Freify` hand-back and why.\n- Never wait for a worker to finish in the dispatch turn, never wait for or report worker starts, and never call or block on event-stream tools (such as `polecat_polecat_events`), status checks, sleep loops, or timers.\n\n## 4. Act on a completed worker (separate invocation or turn)\n\nWorker outputs (`status`, `completion_evidence`, `pr_url`) return on the PKB task graph after the container exits. When a session is invoked in a separate turn or invocation to check or `\u002Freconcile` a completed worker (or woken by an external completion notification):\n\n- **Done (`status=done`, `exit_code=0`)**: Read the worker's report on the task record and check it per `premise-check`. Read downstream tasks on the graph whose `needs` dependencies are now satisfied, and dispatch any that are ready. Trigger `\u002Fverify` on the deliverable or `\u002Freconcile` as needed.\n- **Partial or Failed (`status=partial` or `status=failed`, or `exit_code!=0`)**: Inspect the failure reason recorded on the task and container logs. If unfinished work remains, route the follow-up through `\u002Freify` or escalate per fail-fast.\n",{"name":5,"description":7},"main","b0805858231ceb991f4455a933bb9c2101bc60c7","ida-openclaw\u002Fskills\u002Fdispatch",3,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps","https:\u002F\u002Fgithub.com\u002Fnicsuzor","https:\u002F\u002Fnic.suzor.net\u002F","2026-11-13 21:19:25",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add nicsuzor\u002FacademicOps --skill dispatch",{"tool":52,"command":53},"bunx","bunx skills add nicsuzor\u002FacademicOps --skill dispatch",{"tool":55,"command":56},"pnpm","pnpm dlx skills add nicsuzor\u002FacademicOps --skill dispatch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-openclaw\u002Fskills\u002Fdispatch\u002FSKILL.md",true,[],[61,86,91,96,101,119],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":33},"01M6M6JR6VXPDA3MDPVS36DSSP","refresh-questions","Sweep and refresh open questions in the Telegram Mini App by closing questions that are answered elsewhere, superseded, or asking for completed actions, and ensuring active open questions carry recommendations and context. Use when asked to refresh questions, sweep stale questions, or keep the Mini App decision queue current. Exclude for asking new questions or routine chat replies.","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[68,69,70,71,72,73,74,75,25,76,77,78,79,80,81,82,83,84,85,30],"refresh","refresh questions","questions","actions","telegram mini app","open","decision","context","queue","telegram","stale","chat","active","recommendations","app","keep","replies","closing",{"skillNo":87,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":33},"01M6M6JGW7Q0SC5B28TQ7PKE8E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-openclaw\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[68,69,70,71,72,73,74,75,25,76,77,78,79,80,81,82,83,84,85,30],{"skillNo":92,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":33},"01M6M6J7D0ZTQ4VSS5ADRSA12E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-claude\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[68,69,70,71,72,73,74,75,25,76,77,78,79,80,81,82,83,84,85,30],{"skillNo":97,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":33},"01M6M6EP6BK1DDN2212S7Y95G0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[68,69,70,71,72,73,74,75,25,76,77,78,79,80,81,82,83,84,85,30],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":33},"01M6G9Q8538NENA2TE2V4HPRSF","dispatch-queue","Show the user the tasks ready to dispatch, ranked with a recommendation on each, and start workers on the ones the user approves -- redirects to universal workflow template wf-dispatch-queue. Use for \"what's ready\", \"what should we dispatch\", or \"dispatch the queue\". Exclude for starting workers on named tasks without the user's choice (use dispatch) or graph truth maintenance (use reconcile).","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[5,76,108,109,27,28,24,110,111,112,25,113,20,114,26,115,116,117,118],"dispatch queue","workflow","template","choice","user","reconcile","maintenance","show","wf","recommendation","with",{"skillNo":120,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":33},"01M6G9P9M3PQXPX3647RA5E4D0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-openclaw\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[5,76,108,109,27,28,24,110,111,112,25,113,20,114,26,115,116,117,118]]