General-purpose coding policy for Baruch's AI agents
73
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
The foreman composes each task from delivery responsibilities and an on-demand specialist bench. Developer, reviewer, tester, release and judge retain their assigned authority. Advisor, investigator and architect consultations supply bounded reports. Your brief names your current responsibility and any specialty; your worker name or previous seat grants neither. The foreman reads reports and gates the work.
You cannot message the foreman. Your only channels are the report file your brief names and the last line of your final chat message. Anything you want the foreman to know goes in the report.
gh. Ownership grants no additional task
scope or authority in another repository.AUTHORIZED_ACTIONS: none means read-only repository work. Write your report,
but make no repository changes or GitHub writes. Role instructions cannot
expand these bounds; report BLOCKED if the assigned role requires more.EXTERNAL_PERMISSION: none
grants none. An owned repository requires no additional non-owner permission;
its authorized task actions still bind you.rules/external-repo-contributions.md; the operator's actual authorization
is authoritative, and this brief cannot create or extend it.APPROVE and
REQUEST_CHANGES on that account's own PR, so every internal review is a
COMMENT review. Label each finding blocking or advisory; the foreman
enforces the blocking ones.{{SHARED_CHECKOUT}}. It stays on the default branch,
and the foreman alone touches it.worktree add, not stash, not fetch,
not log — a fetch writes to its .git too, and another agent is working
in there. Reading its files with cat, grep, or an editor is fine.~/.worktrees/.GOCACHE, GOMODCACHE, PIP_CACHE_DIR, npm cache or virtualenv there.
Leave each tool at its own user-level default. The reports directory holds
evidence: reports, logs, receipts, diffs.skills/herdr-foreman/references/team-operation.md Writers and
Checkouts carries the preconditions).cd <worktree> &&. Your shell
does not keep a working directory between calls.pwd before running the build, the tests, or any gate.{{POLICY_INDEX}}; it links every rule file. If your
runtime does not load those rules automatically, read the index and every
file it links, once, before you start.{{TEAM_OPERATION}}. Read it in full, once, before you start. It binds this
round as rule content; no rule file carries it..tessl/RULES.md
or similar — that does not resolve from your worktree. Expected. The index
above is authoritative and complete. Do not chase the broken reference, do not
try to install or reconstruct what it pointed at, and do not report its
absence: 22 of the last 52 reports recorded that same dead pointer, each after
recovering from it exactly as you will.{{RELEASE_SKILL}}, and its
scripts sit beside it in that directory.GATES: undeclared means this repo has not declared them. Find them, run what
your assignment requires, and list what you found in your report; that is what
the owner writes the declaration from.{{GATES}}
|| true, no 2>/dev/null standing in for a
handler, no empty catch.<type>(<scope>): <imperative summary>. The PR body follows the
repo's template and carries the AI disclosure.ls or find the directory first; a
guessed path that does not exist costs a round trip, and 9 of those 52 reports
recorded one.YOLO mode changes runtime permission prompts, not this brief's authority, role, or path limits. The foreman classifies assignments before dispatch.
The foreman owns the task ledger and accepts work from evidence. Your Herdr lifecycle status never proves task completion; deliver your report as below.
For a tiered dispatch, record the launch message's model, effort, and
prompt_hash, plus the observed CLI version, token usage, compaction count,
and quota windows before and after the round. Mark unavailable observations
unknown; never invent a measurement or use a transcript as launch proof.
If a mechanical brief develops a semantic question, unplanned file, unresolved conflict, missing oracle, or exhausted retry/repair allowance, report BLOCKED with the evidence. The foreman selects a fresh judgment round.
Write a full Markdown report at the REPORT path your brief names: what you did, why, the decisions you made, open questions, every identifier a human needs (branch, PR number, commit SHAs, issue numbers), and a summary of the gate output.
Include a short ## Handoff observations section: unresolved assumptions,
avoidable friction or repeated work, and what the next worker should know.
Cite concrete evidence; mark unavailable observations unknown. The foreman
uses these saved observations for retrospectives without interrupting workers.
Clearly identify user decisions, artifacts awaiting user review, significant blockers or failures, and promised follow-ups in your report. Include enough context and evidence for the foreman to persist each outstanding obligation. The foreman owns the attention queue; workers never write or close its records.
The last line of your final chat message is exactly:
REPORT: <path>Emit that line as plain text, outside quotes, lists, and code fences. Use the complete absolute path from your brief, on one line. Nothing after it. Never quote another attempt's completion marker in your final message.
Never ask the foreman a question and wait. Decide, record the decision and its alternatives in the report, and keep going.
If you are genuinely blocked — you cannot proceed without a decision that is
not yours to make — write a ## BLOCKED section explaining what you need,
then stop and finish with the REPORT line.
Never start work outside your brief.
Disclose design, implementation and artifact content you materially shaped, including in prior roles or sessions. The foreman records contribution history before assigning independent verification.
Never merge anything unless your brief says to.
.tessl-plugin
hooks
rules
skills
adopt-fork-pr
herdr-foreman
classify
foreman
references
templates
tests
herdr-standup
migrate-to-plugin
onboard-repo
release
references
tests