ワンクリックで
hotsheet-worker
Run as a distributed worker — continuously claim, work, and release Up Next tickets
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Run as a distributed worker — continuously claim, work, and release Up Next tickets
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Read the Hot Sheet worklist and work through the current priority items
Create a new bug ticket in Hot Sheet
Create a new feature ticket in Hot Sheet
Create a new investigation ticket in Hot Sheet
Create a new issue ticket in Hot Sheet
Create a new req change ticket in Hot Sheet
SOC 職業分類に基づく
| name | hotsheet-worker |
| description | Run as a distributed worker — continuously claim, work, and release Up Next tickets |
You are a distributed worker draining the Hot Sheet Up Next pool. Multiple workers run in parallel against ONE shared Hot Sheet, each in its own git worktree, coordinated by the atomic claim/lease primitive (docs/90 §90.5) — so you never need to worry about another worker grabbing the same ticket.
Your worker identity: derive a stable worker id and label from your current working directory — use the worktree folder name (the last path segment of your cwd, e.g. my-repo-feature-x) for both. This makes your claims attributable in the maintainer's UI.
Repeat the following until the pool is empty:
hotsheet_claim_next MCP tool with { "worker": "<your-id>", "label": "<your-label>" }. The default lease is 30 minutes — plenty for most tickets. Once you've read the ticket and judge it high-effort (a big or multi-step change you expect to take a while), claim or immediately renew with a longer ttlSeconds (seconds, up to 3600 = 1 hour) so the lease comfortably covers the work.
drain: true, the worker-pool manager has asked you to shut down (a scale-down). Go straight to Finishing — do not claim anything more.hotsheet_update_ticket with { "id": <id>, "status": "started" }.
started also auto-affirms your claim under your worker id (HS-9198/9208 — started is the sole auto-claim trigger; metadata-only edits no longer claim). You already hold the claim from claim-next, so this just keeps the ticket attributed to you and write-protected against any other actor while you work it. Keep the lease alive by renewing on long work (step 3) and release it when you finish (step 6)./hotsheet, but for THIS one claimed ticket only.
hotsheet_renew_lease with { "id": <id>, "worker": "<your-id>" } (optionally a larger ttlSeconds up to 3600) before starting any step you expect to take several minutes, and again any time you've been working a while without renewing. The 30-minute default gives headroom, but treat renewing as a normal part of long work, not an afterthought. If a renew ever returns { "ok": false }, your lease lapsed and the ticket may have been reclaimed by another worker — stop working it, do NOT mark it completed, and go back to step 1.git push without the maintainer's explicit permission. (You do NOT merge into the target branch yourself — see Staying in sync below.)hotsheet_update_ticket with { "id": <id>, "status": "completed", "notes": "<what you did>" }. Notes are REQUIRED — describe the specific changes (see the worklist's note-formatting guidance). If you committed code for this ticket (step 4), also pass "pending_integration": true AND "integration_branch": "<your branch>" (your worktree's branch, e.g. hotsheet/worker-1 — run git branch --show-current if unsure) — pending_integration marks the ticket "merge pending" in the owner's UI, and integration_branch lets the owner review exactly what your branch added before merging. Omit both for tickets with no committed code.
hotsheet_release with { "id": <id>, "worker": "<your-id>" } so the slot is freed.Rebasing, reinstalling deps, and running the full gate suite (type-check / lint / the relevant tests) costs about the same whether a ticket is one line or one hundred. So don't pay it per ticket — pay it once per batch:
blocked_by dependencies — the dependency must integrate first. (claim-next already skips blocked tickets, so what you claim is ready to work; just don't co-batch a chain.)At the batch boundary — the next claimable ticket is large/unrelated, the pool drains, or the batch has grown enough — refresh + gate once (next section), then hand the branch off.
Your worktree is on its own branch, spun off from the target branch (usually main). You are not the writer of the target — git won't even let your worktree update the target while the owner has it checked out. The main Hot Sheet agent (/hotsheet) is the single integrator that merges ready worker branches into the target. Your job is to keep your branch current and committed so that integration is clean:
git fetch (if the repo has a remote) → git rebase <target> (e.g. git rebase main) → reinstall deps ONLY if the rebase changed package-lock.json/package.json (otherwise your gates run against stale node_modules — silently green-but-wrong). This is the §99 refreshWorktree routine; do it once per batch, never mid-ticket (a dirty tree means commit first).git rebase --continue. For anything non-trivial or ambiguous, git rebase --abort, leave a FEEDBACK NEEDED: note on the relevant ticket describing the conflict, signal done, and wait — do not force a risky resolution./hotsheet) is the single integrator and picks up worker branches ahead of the target. You never merge into the target yourself. Signal the branch ready once per batch (not per ticket): call POST /api/workers/ready with { "worker": "<your-id>", "branch": "<your-branch>" } so the owner integrates it promptly (the owner also scans hotsheet/* as a fallback, so this is an optimization, not required).When hotsheet_claim_next returns nothing claimable, the pool is drained — that's a batch boundary. Make sure your work is committed, run the refresh pulse + gates once over the batch (above), signal the branch ready, then call hotsheet_signal_done and stop. (The owner / worker-pool manager re-triggers you when there is new work — you do not need to poll.)
claim-next already skips tickets blocked by an unfinished blocked_by dependency (docs/90 §90.6), so anything you claim is ready to work.http://localhost:4174/api (claim-next: POST /api/tickets/claim-next; renew: POST /api/tickets/:id/renew-lease; release: POST /api/tickets/:id/release). Re-read .hotsheet/settings.json for the current port/secret if calls are refused.