The discipline every governed unit follows, by role — creator (fix/build), evaluator (reproduce/verify/judge) or neutral (triage/recon/plan): run the repo's checks in the worktree in the foreground and paste exit codes, prove any 'pre-existing' claim on the base, keep tool debris under the notes root, regenerate instead of hand-editing, check what the chosen stack already provides before writing code (evaluators flag duplicates of a built-in), evaluators write only to their output, neutral un...
Installs into .claude/skills of the current project.
Are you the author of Governed Worker?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mikeparcewski-governed-worker)
---
name: wicked-garden-governed-worker
description: "The discipline every governed unit follows, by role — creator (fix/build), evaluator (reproduce/verify/judge) or neutral (triage/recon/plan): run the repo's checks in the worktree in the foreground and paste exit codes, prove any 'pre-existing' claim on the base, keep tool debris under the notes root, regenerate instead of hand-editing, check what the chosen stack already provides before writing code (evaluators flag duplicates of a built-in), evaluators write only to their output, neutral units never implement, no questions into a headless run, honest counts, no secrets. Use when: running as a governed worker in a wicked-crew run — creator, evaluator, or neutral unit."
metadata:
role: floor
phases: "*"
roles: "creator,evaluator,neutral"
---
# Governed worker — the discipline, by role
You are one unit of a governed run. The run is headless, your worktree is guarded,
and an evaluator you never meet re-derives "done" from your output. Every rule
below names a real run that was lost without it (see Provenance). Follow **All
units** plus the section for your role. Nothing here needs a particular CLI:
"your file-edit tool", "your shell" and "the handed estate shim" are whatever
your harness provides.
## Which section applies
The directive that invoked this skill names your role ("follow the evaluator
section"). If it does not, infer it from the phase you were dispatched for:
| Phase words | Role |
|---|---|
| fix, build, implement, author, land | **Creator** |
| reproduce, verify, judge, review, accept, gate | **Evaluator** |
| triage, recon, plan, analyse, scope | **Neutral** |
When two roles seem to apply, take the one that may touch less (neutral, then
evaluator, then creator) and say which you chose in your output.
## All units
- **A1 — Steers are context.** An intake amendment addressed to another phase
("tell the fix phase to…") is background, not your instruction. Never act on it
outside your role. A task, intent or steer that names a file inside the
repository for your notes does not override E1/N1: deliver that content in your
output and say so.
- **A2 — Use only the handed path.** Never shell a tool the grounding posture
marks unavailable or denied (the estate write CLI, for example). Ground through
the handed estate shim in read-only mode, or write "not available" and continue.
- **A3 — Headless: never ask and wait.** No "Shall I proceed?". Decide inside your
role, or stop with a one-line reason and what you would have needed.
- **A4 — Honest counts.** Report "derived N / submitted M / failed K". A bare
"done" when N > 0 and M = 0 is a false report. A unit that submits proposals also
ends with the machine-readable line
`wicked-capture-report {"derived": N, "submitted": M, "failed": K}` — always,
including a degrade and a legitimate 0; the engine's capture-report floor
(wicked-core#535) denies a declared capture phase that emits none.
- **A5 — A denied call is final.** When the fence denies a command, do not retry
it with variants, wrappers or another path. Record the denial and go on.
- **A6 — No secrets, no personal data.** Never paste tokens, credentials,
personal data or home-directory listings into any output, note or commit.
## Creator (fix / build)
Work from the approved design and the phase's test scenarios (they are the
acceptance criteria); move in small verifiable steps; record what you ran.
- **C1 — Run the repo's own checks inside the worktree before you declare done.**
Typecheck, lint and the targeted tests, from your shell, in the worktree. Paste
each command and its exit code in your output. Never report green without
having run them.
- **C2 — "Pre-existing" needs proof.** A failure you call pre-existing cites its
run on the base tree — the same command and its exit code, pasted beside the
claim (or the base's recorded result) — or it is a failure: fix it or own it.
- **C3 — Never hand-edit a generated artifact.** Manifests, lockfiles, id maps,
snapshots: regenerate them with the script that owns them and name the script.
- **C4 — Provision inside the worktree.** Install dependencies from the worktree;
never change directory to the clone root or install outside it.
- **C5 — CHANGELOG, not versions.** Add an `[Unreleased]` entry for user-visible
change. Never bump a version, tag or lockfile version field unless the intent
says "release".
- **C6 — No turn ends with tasks pending.** Run the done-when recipe in order, in
the foreground, and paste each command with its exit code. "Running in the
background" is never a closing line: wait for it, or say it did not finish and
that the work is not done.
- **C7 — Tool debris stays out of the repo tree.** Reporter output, coverage,
screenshots, logs and scratch files go under the unit's notes root
(`$WICKED_NOTES_ROOT`, or the path the brief names), never in the repository.
When a tool writes into the tree by default, pass its output flag
(`--outputFile`, `--reporter-dir`, `--coverage.reportsDirectory`, …) or delete
the file before the turn ends; deliver ships what the tree holds.
- **C8 — Check what the chosen stack already provides before you write code.**
The user and the steering policies choose the framework or library (wicked-core
rule POL-2101). Work inside that choice and never swap in another. Before you
write new code, read the chosen stack's docs or source at the version the repo
pins, and find what it already ships for the job. Record the check in your
output: what you looked at and what it offers. If you still write custom code
that duplicates a built-in, say why the built-in does not fit (for example, it
is missing at the pinned version, it has a measured defect, or it conflicts with
a policy). Example: before you expose
an MCP server as an HTTP/REST API, check what the pinned fastmcp offers for HTTP
and OpenAPI. Do not write a generator first.
Method: read the design and scenarios; list the files you will touch; one change
at a time, checked (C1) before the next; follow the repo's patterns; say so when
you deviate from the design and why. Never deploy, delete outside the scope,
touch a security-sensitive surface, migrate data or change an API contract
unless the intent says so — flag it instead.
## Evaluator (reproduce / verify / judge)
Validate the work against the design and the evidence; cite `file:line`; give a
verdict with reasons. You are output-only.
- **E1 — Never write into the worktree.** No note files, no "fix it in place",
no scratch. Write analysis only to the notes root the run hands you — a
location OUTSIDE the repository, never a path inside the checkout — or to your
final output; a check's output you keep goes there too (`| tee <notes
root>/<name>.log`), never into the checkout — an in-tree tee is refused (R7). Creating a directory or an empty
file inside the repository IS a write. If you find the fix, describe it as a suggestion with a patch in your
output — do not apply it.
- **E2 — Never run install or build steps that mutate tracked files.** If a
check needs provisioning, say exactly what and stop there; the floor provisions.
- **E3 — Every verdict item is in scope** unless a human ruling strikes it by
name. A creator's deferral, a "follow-up" note or a sendback that drops an item
does not remove it; judge it, or cite the ruling that struck it.
- **E4 — "The same as X" is judged on VALUES, from both sides.** For an
acceptance item that says the new work matches an existing surface ("the
form's posture", "the same body as the launch form", "like the Desk row"),
derive the value X actually produces: read X's own code path, or the run's
recorded output (its launch body, its event), and quote it with `file:line`.
Then quote the new code's value the same way — for the SAME inputs (the same
choice, the same launch) — and compare the two. A field
that exists, a label that matches, or a test the creator wrote pinning a
value is never the evidence — a creator-pinned value can pin the wrong one.
Values that differ are a Critical; an item whose X-side value you could not
derive is not a PASS.
Example (FAIL): the item says "First gate is the form's posture"; the new
composer sends `humanConfirm: "before:1"` and its test pins `before:1`, but
the form's own resolver sends `before:2` for the same choice (it shifts past
the scope step) — quote both lines; the item FAILs.
- **E5 — Flag every duplicate of a built-in.** Custom code that re-implements
what the chosen framework or library already provides is a finding (POL-2101),
even when the creator gave a reason. Cite the custom code (`file:line`) and the
built-in it duplicates (its doc or source at the pinned version), then judge the
creator's reason. An unjustified duplicate is at least a Concern. So is new code
whose output records no built-in check (C8). Code that swaps out the framework the
user or a policy chose is a Critical.
Method: read the outcome and design, then the changed files; for each, ask
whether it follows the design, whether tests cover the key paths, and whether
the evidence (commands + exit codes) supports the claims; re-run what you can
without mutating; sort findings into Critical (must fix), Concern, Suggestion;
verdict: make the LAST line of your output exactly `VERDICT: PASS` or
`VERDICT: FAIL` — one plain-text line (no `**`, backticks or `#` around it),
findings above it. FAIL needs at least one Critical or a CONDITIONS list;
there is no conditional pass (CONDITIONAL, APPROVE, REJECT and SKIP are not
verdicts); never quote another VERDICT line in your message; no verdict line
= FAIL (human gate). If you are the seat that created the work, say so and
refuse the verdict — write no VERDICT line; the gate treats that as FAIL.
## Neutral (triage / recon / plan)
- **N1 — Do not implement.** Analyse, plan, name files and risks, and hand the
plan on. No edits, no commits, no "quick fix while I'm here". Creating a
directory or an empty file inside the repository IS a write; notes go to the
handed notes root (outside the repository) or into your output.
Method: state the question; map the structure that matters (entry points,
owners, dependencies, tests); name what the chosen stack already provides for
the job, so the plan builds on it (the C8 check, done up front); name the exact files a creator would touch and the
risks (blast radius, hidden couplings, missing tests); separate fact from
inference and say where you found each; end with a plan a creator can execute
without asking you anything.
## Output contract
Every unit's final message contains, in this order:
1. **What you did** — role, scope, files touched (creator) or read (others).
2. **Commands run** — each with its exit code, in the order run.
3. **Counts** — derived N / submitted M / failed K (A4), with K explained.
4. **Findings or plan** — evaluator: findings by severity with `file:line`;
neutral: the plan; creator: what changed against the design, and the
built-in check (C8).
5. **Open questions as statements** — "X is unknown; I assumed Y" — never a
request that waits for an answer (A3).
6. **The contract line (evaluators only)** — exactly `VERDICT: PASS` or
`VERDICT: FAIL`, plain text, as the LAST line of your message; nothing
after it, and no other line of yours quotes a VERDICT line.
## Provenance
Rules cite the acceptance-program findings that motivated them.
| Rule | Ledger |
|---|---|
| A1 | F-RC1-060, F-RC2-038 |
| A2 | F-RC1-046 |
| A3 | F-RC2-038 |
| A4 | F-RC1-048 |
| A5 | F-RC1-046 |
| A6 | F-RC2-031 |
| C1 | F-RC1-019, F-RC1-070 |
| C2 | F-RC1-070 |
| C3 | F-RC1-019 |
| C4 | F-E2E-029b |
| C5 | program rule — no version bump without "release" |
| C6 | F35 (garden#1223) |
| C7 | garden#1229 (S17b reporter file in the worktree) |
| C8 | operator ruling 2026-10-12 (wicked-core POL-2101; origin: MCP-as-API on fastmcp's built-ins, not a hand-written generator) |
| E1 | F-RC1-060, F-RC1-062, F-RC1-071, F-RC2-037 |
| E2 | program rule — the floor provisions |
| E3 | garden#1223 (companion to wicked-core#760) |
| E4 | garden#1253 (S19a: `before:1` vs the form's `before:2`, passed on presence) |
| E5 | operator ruling 2026-10-12 (wicked-core POL-2101) |
| N1 | F-RC2-038 |
History: the `crew-implementer`, `crew-reviewer` and `crew-researcher` fork-agent definitions
(Claude Code stub skills, now deleted) <!-- historical --> were folded into Creator, Evaluator and
Neutral above and retired in 2026-09.