Herdr team coordination policy for AI coding agents
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Read this contract when the execution plan reaches one of its steps. Execute
only the current step and the continuation it names. Step numbers refer to
skills/herdr-foreman/references/foreman-workflow.md.
Optional. No trigger — proceed to Step 14. A bot disagreement inside Step 14
returns here first. A weighing nomination from Step 12 is an adjudication
trigger. The judge's report is the ruling once foreman verify-ruling
binds it in the judge round's last step; until then no defer or decline
applies.
Run the round's seven steps in order — compose the brief, re-measure the shared window, plan the pinned seat, let apply spawn its fresh worker on the pinned tier, dispatch, wait, act on the ruling:
skills/herdr-foreman/references/judge-round.mdThe judge is read-only, so Step 7 is skipped for it. Never substitute a judge, lower its tier, or hand-write an assignment to bypass a refusal. Its last step names where to continue.
Record the ruling and take its named continuation directly. Routine progression does not require another checkpoint, lesson pass or round-start reconstruction.
The release is one more assignment, never a prompt into the developer's
existing context. Return to Step 7 (it reports already-provisioned), then
Step 8 with the role release for the developer's agent (template
skills/herdr-foreman/templates/brief-release.md, the same WORKTREE and BRANCH, a fresh
REPORT), dispatch through Step 10 so the context is cleared and
the brief is fresh, and wait on the report in Step 11. apply refuses the
release dispatch, dry run included, while the task carries an open verdict
gate: return to Step 12 and clear it first. A source-changing
release finding returns to Step 12 for the next counted developer assignment.
A blocking policy review returns there too, where its nominations go to a
weighing. Fill WEIGHING_RULING with the judge's report and the follow-up
issue once a weighing covers the findings, otherwise "none".
The worker merges after all gates pass. Proceed immediately to Step 15 only
after verifying its reported release against the live VCS and release gates.
Record that evidence in the task ledger.
Fast-forward the shared checkout, remove the merged task's own worktree with
git worktree remove, and delete the branch, in the post-merge order of
rules/agent-worktree-isolation.md Cleanup. This is the one removal the
foreman makes itself (skills/herdr-foreman/references/team-operation.md Writers and Checkouts,
the merged-task exception). Then run Step 7's sweep again for the round's other
worktrees. Proceed immediately to Step 16.
Finalize the task ledger with the round outcome and remaining obligations.
Mark the task completed only after its acceptance criteria and required
release and cleanup obligations are verified. When the task merged or was
abandoned, close it. The record is
{"task", "outcome": "merged" | "abandoned", "evidence"}:
HS=.tessl/plugins/jbaruch/herdr-policy/skills/herdr-foreman/; [ -d "$HS" ] || HS="$HOME/$HS"; [ -d "$HS" ] || case "$(git config --get remote.origin.url)" in git@github.com:jbaruch/herdr-policy|git@github.com:jbaruch/herdr-policy.git|https://github.com/jbaruch/herdr-policy|https://github.com/jbaruch/herdr-policy.git|ssh://git@github.com/jbaruch/herdr-policy|ssh://git@github.com/jbaruch/herdr-policy.git) HS=skills/herdr-foreman/ ;; *) echo "herdr-policy skill not found: install jbaruch/herdr-policy" >&2; exit 1 ;; esac
bash "$HS/foreman.sh" close-task --record <close.json>task_closed event JSON. Repeating the
same closure prints the existing event. Proceed.A task still in progress (a consultation or a fix round) is not closed; it continues to Step 17 open.
Preserve the ledger and retrospective notes for resume and standup. Record new outcomes or judgments once; canonical owner receipts need no duplicate narrative. Add a lesson only when new reusable knowledge would otherwise be lost. Routine continuation requires no lesson pass or extra progress entry. Report outstanding attention first, followed by the outcome and saved paths. Proceed immediately to Step 17.
For an actual context transition, stow the handoff under the working-memory reference, with a structured gap
for anything the stow could not capture. The stow's unresolved_work names
the continuation step, the step the round's outcome routes to:
foreman-queue seats remaining — Step 5Capture the active goal's objective, remaining work, status and any remaining
budget in the stow; saving it does not complete, pause or recreate the goal.
Keep the foreground watch active for
every enrollment. Do not save a handoff hold, schedule foreman-reset, type
/clear or end the turn merely for a round boundary. Preserve the current
context and active goal.
Continue Route — take the current task's next action directly. Do not replay
Steps 1–4 or create a new stow at every round boundary. Save a concise handoff
only for an actual context transition or new knowledge otherwise at risk; owner
records already preserve routine dispatch, wait and delivery facts.
When enrollments still need observation, continue Step 11's fleet
loop while routing the next work. With only queued work, return to Step 5.
Read foreman-queue from the owner rather than inferring an empty queue from
a completed round. Finish only after the authorized work is complete, a genuine
user pause, or a verified continuation satisfying the Stop gate.
An explicitly requested maintenance reset follows
skills/herdr-foreman/references/working-memory.md Reset Outcome Routing.
Do not ask for one at each boundary. A failed reset never permits Stop with
active work. Fresh-foreman succession is not implemented by this checkpoint;
a saved handoff alone is not a live successor.
Resume Route — the next context follows one route:
memory-show. Read its capture,
unresolved work and gaps. Required-file receipts are source references for
targeted owner queries and selected evidence; they do not require replaying
raw owner files or prior reports.supervision-bind, then supervision-status --compact --section holds,
catch-up --compact --section resets and supervision-drain --compact through
the saved owner paths. Inspect every unresumed hold and the pending events and
resets relevant to the current action. Preserved enrollments need no replay of
every body. Historical progress and unrelated attention/queue pages are not a
prerequisite; task-specific gating attention is in the current load-set.supervision-resume --compact --hold <observed-id> with the complete inspected set. Skip resume when there are no
holds. An unmet condition or incomplete reconciliation prevents continuation;
the reset itself grants no authority to clear a hold.foreman-queue only to select new work.foreman-queue lists seats only. Gating, release and closure return through
the continuation step, never through the queue.
On replacement, verify live supervision and the owner-controlled goal handoff. A pasted objective alone proves no native goal or retired executor.
For the daily standup, use
Skill(skill: "herdr-standup").
.tessl-plugin
rules
skills
herdr-foreman
classify
foreman
references
specialists
templates
herdr-observer
herdr-optimizer
herdr-standup