Skip to content
Back to skills

Delegate

ASecurity

Holds the working contract of every delegated Puck lane: grants, builds and leases, the worktree guard, setting work aside, invariants, Worlds, when a lane is done, commits and the hand-back.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
testinggoshellbashnodegit

Works with

  • claude code
  • cli

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add ByteTerrace/Puck --skill delegate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Delegate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Delegate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/byteterrace-delegate/badge)](https://www.skillsdirectory.com/skills/byteterrace-delegate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: delegate
description: "Holds the working contract of every delegated Puck lane: grants, builds and leases, the worktree guard, setting work aside, invariants, Worlds, when a lane is done, commits and the hand-back."
---

# Working as a delegated lane

You work autonomously: the lead may be offline, and only your commits and your hand-back reach it.
Proceed on reversible work that follows from your brief; stop only for a look or product call, an
owner-only action or the brief's stopping condition. [AGENTS.md](../../../AGENTS.md#when-you-are-the-delegate)
holds the rules every family shares, and this skill does not repeat them: Git, pushing and stop
orders, verifying a change by building and running it, and fixing a defect at its named cause
(rule 7 and "the proper fix").

## Start

- Re-read this worktree's AGENTS.md and the skill that owns your area: they correct stale startup
  text, and current owner and system instructions still outrank them.
- Your brief grants your task, what you may write and which World mutations you may make; nothing
  else is granted. Reuse the mechanisms it names.
- Read [the recurring hazards](../../../docs/development/hazards.md) before writing code: most high
  findings are one of its shapes, and its analyzers (`STALE001`, `puck scan --only clones`,
  `identity-counters`, `exact-keys`) run on what you change.

## Build and run

- Build only the projects you touch (`dotnet build <project> -c Release -m:2 -nodeReuse:false`) and
  run only focused checks, scenario files by name with `puck test <file> --jobs 1`: no `Puck.slnx`
  build, full suite, `worlds/debug` sweep or GPU leg unless your brief grants it.
- Run `puck` verbs from a lane-named private copy of your worktree's built CLI, rebuilt after every
  merge of the integration tip ([verification](../verification/SKILL.md#run-verbs-from-your-own-cli-copy)).
- Heavy and GPU work go through `puck lease` as [verification](../verification/SKILL.md#what-uses-the-gpu)
  says: one `puck test` per heavy hold, and Git Bash by its full path,
  `"C:/Program Files/Git/usr/bin/bash.exe" <script>`, since a bare `bash` is WSL's and has no .NET.
  Keep working while a ticket waits.
- To see your edits running, start a World with `puck_world_start` and end it with `puck_world_stop`
  ([the live World is shared](../puck-world/SKILL.md#the-live-world-is-shared)). `windowed: true`
  holds the GPU lease: use it only on a granted GPU leg, and stop it once its captures are in, never
  keeping it open across code edits.

## Shell under the worktree guard

- Claude Code refuses a shell command it cannot prove keeps Git inside your worktree, and the check
  cannot be switched off. Use the worktree as the working directory, literal absolute paths and one
  plain command per call: no `cd` chains and no variable expansion into a command or path. Write
  files with the Write tool; a heredoc, `cd`, loop or nested shell goes into a scratch script run as
  one plain command. The Bash tool refuses `pwsh -File <script>` and some full-path shells that the
  PowerShell tool runs; run a PowerShell script from the PowerShell tool (`& pwsh -File <script>`).
- Name scratch `<worktree>/.claude/scratch/<lane>-*`. Claude removes a worktree holding only ignored
  files when the lane ends, so output that must survive goes to the path your brief names.
- Before anything takes uncommitted work out of the tree (showing a check fail on the old code,
  trying another approach), commit it as WIP or copy it to a path your brief allows, then bring the
  old code back from a commit. Never let `git checkout --`, `git restore` or a script that runs on
  past a failed copy be what removes uncommitted edits: a fault-injection round wiped a lane's own
  unsaved file that way.

## Evidence

- Before writing code whose correctness rests on an invariant (a cache's invalidation, an oracle's
  coverage, a geometric assumption, a concurrency handoff, a guard every read or write must pass),
  write down the invariant and the one place that enforces it (the compiler, a type, one door, a
  derived view), build behind it, and name both in the commit body and the hand-back. Enforcement
  means a new caller cannot get around it. When the same guard is needed in several places, make the
  unguarded path unreachable (narrow its visibility, or hand callers a type only the guarded path
  produces) instead of copying the guard or adding a helper every caller must remember to call. If
  nothing enforces the invariant yet, say so plainly rather than implying something does.
- A design lane (a memo, an architecture, a design review) delivers a document, never code or
  numbers. The document names its invariant, what enforces it and where that guarantee stops; it
  answers each finding its review raised, one by one; and it gives every implementation step a
  mechanical check that shows the step worked. Each question the design cannot settle without a
  measurement or a prototype becomes a step for another lane, named with what it would show and what
  it decides. The design lane builds, prototypes and measures nothing itself, however quick the
  measurement looks.

## Finish

- Done is a state: every job you started has exited, its watcher is stopped, your Worlds are stopped,
  your leases are released and the output that must survive is preserved. A pending run is in
  progress or blocked, never done. Every hand-back reaches this state, a blocked one and one a stop
  order forces included: stopping means your own jobs, watchers and Worlds stop too, not that they
  are left running for the lead. Keep one watcher per running job, ending on success, failure or
  exit; no `sleep` timers and no polling a job that reports its own exit
  ([your harness](../orchestration/references/lane-work.md#running-long-tasks)).
- Once your finish line holds on the merged head, hand back. Start no review or hardening round of
  your own (a self-review, extra guards, fuzzing beyond the brief): the lead's area fix passes and any
  invariant review run beside your next work, and what else you noticed goes under **Found**.
- Before your final commit, run `puck docs links` from your CLI copy. Fix every failure your change
  introduced (a renamed symbol, a moved file, a closed plan item), in whichever file it shows up,
  including pages you never edited. Only a failure that was already there before your change goes in
  your hand-back.
- A writing lane commits on its own branch: a lowercase `area: sentence` subject, what you ran to
  show it working in the body, and on the assignment's last commit only a final line
  `Brief: <id> done` or `Brief: <id> blocked: <question>`.
- Commit only with `git commit` over an index you inspected. Entries staged by something other than
  you stay staged and uncommitted: name your own paths to `git commit` rather than unstaging,
  resetting or committing theirs. Never build a commit from plumbing (`git commit-tree`,
  `git read-tree`, or anything else that could write an empty or unrelated tree); the lane guard
  refuses both. ASP.NET's agent effort (dotnet/aspnetcore#70219) pushed five
  empty-tree retrigger commits that deleted the whole repository. An `--allow-empty` hand-back commit
  on your own tree stays allowed.
- Hand back under **Needs you** (decisions you could not make and GPU legs you need, with options and
  their cost), **Changed** (what landed and what you ran; a read-only lane names its findings file)
  and **Found** (defects, risks and follow-ups with `file:line`, and what you could not confirm).
  Say what you mean in literal terms, and note in a line where you changed direction from the brief.

## Route adjacent work

| Skill | Route there for |
|---|---|
| [`verification`](../verification/SKILL.md) | Leases, CLI copies, builds and GPU work in detail. |
| [`puck-world`](../puck-world/SKILL.md) | Starting, driving and stopping a World. |
| [`review-passes`](../review-passes/SKILL.md) | A review pass's mode, brief and findings. |
| [`orchestration`](../orchestration/SKILL.md) | The lead's side: briefs, launches and landing. |

Files in this skill

  • SKILL.md7.9 KB
  • evals/d01-clean-commit-past-a-dirty-index/graders/git-commit-explicit-paths.md939 B
  • evals/d01-clean-commit-past-a-dirty-index/graders/inspects-index.md94 B
  • evals/d01-clean-commit-past-a-dirty-index/graders/refuses-plumbing.md752 B
  • evals/d01-clean-commit-past-a-dirty-index/graders/skill-fired.md36 B
  • evals/d01-clean-commit-past-a-dirty-index/prompt.md535 B
  • evals/d02-powershell-script-refused-in-bash/graders/no-guard-bypass.md1.3 KB
  • evals/d02-powershell-script-refused-in-bash/graders/powershell-tool.md796 B
  • evals/d02-powershell-script-refused-in-bash/graders/skill-fired.md36 B
  • evals/d02-powershell-script-refused-in-bash/prompt.md429 B
  • evals/d03-set-aside-before-a-fault-injection/graders/no-discard-of-uncommitted.md852 B
  • evals/d03-set-aside-before-a-fault-injection/graders/skill-fired.md36 B
  • evals/d03-set-aside-before-a-fault-injection/graders/wip-commit.md106 B
  • evals/d03-set-aside-before-a-fault-injection/prompt.md351 B
  • evals/d04-rename-before-the-final-commit/graders/fixes-what-the-rename-broke.md818 B
  • evals/d04-rename-before-the-final-commit/graders/older-failures-go-in-hand-back.md530 B
  • evals/d04-rename-before-the-final-commit/graders/runs-docs-links.md76 B
  • evals/d04-rename-before-the-final-commit/graders/skill-fired.md36 B
  • evals/d04-rename-before-the-final-commit/prompt.md464 B
  • evals/d05-cache-hand-back-names-its-invariant/graders/comment-is-not-enforcement.md582 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.