CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

jbaruch/herdr-policy

Herdr team coordination policy for AI coding agents

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

round-completion.mdskills/herdr-foreman/references/

Round Completion

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.

Step 13 — Run the Judge Round

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.md

The 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.

Step 14 — Release the Pull Request

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.

Step 15 — Clean Up the Worktree

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.

Step 16 — Log the Round

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>
  • Exit 0 — stdout is the recorded task_closed event JSON. Repeating the same closure prints the existing event. Proceed.
  • Non-zero — stderr names the refused field or the conflicting earlier closure. Correct the record and re-run; do not finish Step 16 with a merged or abandoned task unclosed.

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.

Step 17 — Checkpoint the Foreman Context

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:

  • A gate decision, judge ruling or remedy — the step it named
  • A release-ready pull request — Step 14
  • A merged or abandoned task awaiting closure — Step 16
  • Only foreman-queue seats remaining — Step 5

Capture 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:

  1. Retrieve the bounded current stow with 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.
  2. Verify/finish the existing reset owner's host-goal receipt under the working-memory Successor Goal contract; never recreate a goal from rewritten prompt text.
  3. Run 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.
  4. Preserve operator holds. Only when existing authority permits resumption and every hold condition is satisfied, use 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.
  5. Take the stow's selected continuation directly. Reuse unchanged task inputs; retrieve missing current facts and only the evidence needed for that decision. Do not repeat Steps 1–4. Query 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").

skills

herdr-foreman

antigravity.example.json

bootstrap-repository.py

compose-briefs.sh

config.example.json

foreman-tier-check.py

foreman.sh

label-workspaces.sh

measurements.py

native-hook.sh

observer-view.py

policy-paths.py

prepare-briefs.py

provision-worktree.sh

prune-report-caches.py

resolve-gates.sh

resolve-policy-paths.sh

review-package.sh

roster.sh

round-preflight.sh

SKILL.md

start-judge-worker.sh

state-schema.md

sweep-worktrees.sh

verify-authority.sh

wait-report.sh

workflow-review.py

README.md

tile.json