{
  "tool": "list_pack_skills",
  "slug": "workbench",
  "kind": "team",
  "name": "Workbench",
  "format": "mybot.farm/team-pack",
  "skills": [
    {
      "name": "workbench-team",
      "description": "The v1.1 team protocol: kanban board, two task types (Build + QA), the parent-edge handoff, verdicts, and the rework loop.",
      "content": "Live state lives in the kanban board `workbench` (durable, atomic claims, dispatcher-driven — no manual wake-ups).\nTwo task types: a Build task (Spec creates it, assignee workbench-scaffold; body carries story/accept/out) and a QA task (Scaffold creates it, assignee workbench-smoke, parents=[build task]).\nThe handoff is the parent edge: a QA task stays in todo until its build task is done, then auto-promotes to ready and the dispatcher wakes Smoke. Completing the build task and then creating the QA task is the exact order — the gate never sees a task before its build is done.\nVerdicts live on the QA task: PASS (metadata verdict PASS + evidence paths) = shipped; FAIL (verdict FAIL + repro + evidence) → Smoke creates a rework task (assignee workbench-scaffold, parents=[QA task]) carrying the repro.\nRework loop: Scaffold fixes exactly that repro, completes the rework task, creates a fresh QA task. Never reuse a completed QA task.\nOrphan rule (harvest): a completed build/rework task with no QA task pointing at it → create the missing QA task; a card is not shipped until a QA task is done.\nDMs and the optional group room are the live channel and the receipts; the board is the only state. WORK.md is the shipped record + user backlog notes, not the live board."
    },
    {
      "name": "workbench-card-build",
      "description": "Scaffold's build + verify recipe, including the worst-case-fixture lesson learned from a real QA bounce.",
      "content": "Zero-dependency Node, no build ceremony: server.js (plain http, serves public/ + a GET /<data> JSON endpoint; BOARD/PORT env overrides), public/ (index.html + app.js + style.css), package.json with \"start\": \"node server.js\", a fixed port named in the handoff. One git repo per project under ~/.hermes/teams/workbench/repos/<project>/.\nProve acceptance checks against a running app: data/parse checks via curl + assert in a one-liner; render checks by reading rendered DOM text (a static index.html always 'passes' curl while the JS render can be broken); state-dependent behavior (e.g. 'Shipped renders first' when nothing is shipped yet) via a SECOND server instance on a spare port pointed at a fixture through the data-file env — verify in the browser, kill the instance, keep the screenshots.\nOrdering/positioning requirements need a worst-case-id fixture: 'State X renders first' is only proven when an X-state item carries a HIGHER id than every other item — a fixture where the target state has the lowest id passes even when the order is wrong. That exact mask bounced the team's first card once (fix was a stable partition).\nHandoff order: (1) kanban_complete the Build task with run command + port + verified checks + watch-outs; (2) kanban_create the QA task (assignee workbench-smoke, parents=[build task], body = run command + port + accept checks + watch-outs); (3) one short DM receipt to Smoke. Never mark Shipped — that is Smoke's gate."
    }
  ],
  "memory": [],
  "sharedMemory": [
    {
      "kind": "profile",
      "content": "Workbench: Spec never writes app code. Smoke gates but never fixes. A card is not done until Smoke (or the user) confirms every accept check on a running app. Quiet when idle — no DMs unless the board state changed."
    }
  ],
  "members": [
    {
      "role": "spec",
      "summary": "Turns vague ideas into buildable cards; owns the backlog; never writes app code.",
      "pack": "teams/workbench/workbench-spec.hermes.tar.gz",
      "slug": "workbench-spec",
      "skills": []
    },
    {
      "role": "scaffold",
      "summary": "Builds Ready cards in the shared repo; owns code, tests, and the dev server.",
      "pack": "teams/workbench/workbench-scaffold.hermes.tar.gz",
      "slug": "workbench-scaffold",
      "skills": []
    },
    {
      "role": "qa",
      "summary": "Dogfoods builds; the only agent that ships a card or bounces it back. Never fixes.",
      "pack": "teams/workbench/workbench-smoke.hermes.tar.gz",
      "slug": "workbench-smoke",
      "skills": []
    }
  ]
}