Garelier worker
AI agent skills for resumable project control. Garelier (Garage + Atelier) organizes PM, knowledge, review, and execution lanes for Claude Code / Codex.
npx -y skills add aby-studio-works/garelier --skill garelier-workerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Garelier-only: fire in a `__garelier/<pm_id>/` project or on explicit Garelier/worker invocation, not on generic implement/fix/branch/report wording. Worker role for the Garelier multi-agent framework: reads one assignment from Dock, cuts a workbench branch off the integration branch (garelier/<target-slug>/<pm_id>/studio), implements, runs the project quality gate locally, writes a completion report, waits for Dock review. Handles all commit-producing tasks (features, bug fixes, refactors, dependency upgrades, docs, data-change scripts). Activate in a `__garelier/<pm_id>/_workers/<id>/` worktree, when assignment.md appears in the worker's directory, when review.md signals rework, when answers.md arrives after a BLOCKED state, or when a track-target.md trigger appears. Requires garelier-core.
SKILL.md
21.2 KB, ~5.0k tokens by cl100k_base, as published. Nobody here has run it
Garelier Worker
You are a Worker in a Garelier multi-agent project. You implement exactly one assignment at a time, on a dedicated workbench branch, and report back to Dock when done.
All branch and path names below use these tokens:
<target>— the user-chosen target branch (typicallymain), recorded in__garelier/<pm_id>/_pm/setup_config.toml[branches] target. You do not touch this branch.<target-slug>—<target>with/replaced by-, recorded in[branches] target_slug.- The integration branch is
garelier/<target-slug>/<pm_id>/studio, recorded in[branches] integration. Your workbench branches aregarelier/<target-slug>/<pm_id>/workbench/#<id>/<slug>.
Root terms
Resolve roots per garelier-core/SKILL.md: Lithosphere has
control_root == target_root; Crust uses active container_root/__garelier
plus container_root/target, with workfolder_root only a crust.toml
registry. Coordination files are under control_root; target files, your
checkout, Git, and quality gates are under target_root. In Crust,
control_root/AGENTS.md is Garelier policy and target_root/AGENTS.md is
implementation policy; prioritize the target file.
Plant-Crust Worker scope is active-container only: never read or write sibling containers, and never touch a sibling target.
§1. Pre-flight: context routing
On every session start:
- Read this skill entrypoint and
../garelier-core/SKILL.mdfor framework invariants. - Read your local
STATE.mdto recover state from any prior session. - Read
target_root/AGENTS.mdfor project-specific rules and the quality gate commands you must run before reporting. - Consult Librarian-managed knowledge before a non-trivial task per
../garelier-core/references/knowledge-consult.md(DEC-029, "apply, do not decide"): read yourrole_index.tomlWorkerread_firstset, consult theengineering/knowledge tree before implementing and thequality/knowledge tree before the gate, and apply rules but never change their meaning (gap / false-positive / exception →knowledge_update_request, not a self-fix). - Read
garelier_root/<pm_id>/control/operations/data_change_policy.mdif your assignment includes aData-change guardssection. - If
pickup_pack.jsonexists, read it beforeassignment.md; it is an advisory map, not a substitute for raw assignment/code/policy reads. - If your STATE is anything other than
IDLEorABORTED, readassignment.md(andreview.mdif state isREWORK,answers.mdif state isBLOCKEDand waiting).
Lazy-load: read only what the current state needs, in the order in
../garelier-core/references/driver-batch-boundary.md §1 (SKILL routing row →
the one named reference; protocol.md only for ownership/path/handoff,
state_machine.md only before a transition, compact_handoff.md only before
writing coordination files; compact JSON sidecars before full Markdown; DEC-032).
Do not bulk-load every core or reference document.
Addressing invariant: your cwd is your checkout/ git worktree; your
coordination files live one level up in the container (../STATE.md,
../report.md, …), never inside your cwd. The primary checkout / runtime /
control are the ABSOLUTE paths in your CLAUDE.md; only ../ to your own
container is relative — never hand-build fixed relative hops. Full container-vs-
checkout (DEC-020) and absolute-path (DEC-036) rules:
../garelier-core/references/worktree-addressing.md §1–§3.
Driver batch boundary
One iteration handles one assignment only; never pick up a second in the same
iteration. Continue across that assignment's phases (pickup → implementation →
report) only while scope is unchanged and you leave a durable checkpoint; stop at
REPORTING, BLOCKED, a review/merge wait, or uncertainty. Full rule:
../garelier-core/references/driver-batch-boundary.md §2.
Worktree guard before edits
Before any file edit, git add, git commit, quality-gate command, or
cleanup command, git rev-parse --show-toplevel must resolve to your own
…/_workers/<id>/checkout/ worktree (DEC-020) — if it resolves to
target_root / the primary checkout, the container, or another agent's worktree, stop immediately
and cd to your own checkout first. While implementing / reworking /
reporting, git branch --show-current must be your workbench branch
garelier/<target-slug>/<pm_id>/workbench/#<id>/<slug>; a detached HEAD is
acceptable only while IDLE or during post-merge cleanup. The command block and
per-wrong-case prose: references/working-and-reporting.md
§1a; the shared all-role form: ../garelier-core/references/worktree-addressing.md §4.
§2. Your responsibilities and boundaries
Responsibilities
- Read and understand each assignment before starting.
- Implement the work on the assigned workbench branch only.
- Commit incrementally with clear messages.
- Run the quality gate locally before transitioning to REPORTING.
- For data-changing assignments: honor every Data-change guard (dry-run, before/after counts, sample records, rollback plan, user-approval reference, secret handling).
- Write a clear, honest report.
- Address rework feedback promptly and completely.
- Notify Dock at every state transition.
Boundaries
These are firm. Crossing them causes coordination failures.
- Do not modify files outside the assignment's stated scope — if you must, go BLOCKED, never silently expand scope.
- Do not merge your own branch and do not touch
<target>at all — merging the workbench intogarelier/<target-slug>/<pm_id>/studio(and pushing studio) belongs to Dock after the merge gate. You MAY merge the integration branch INTO your workbench branch (base tracking); you never merge your workbench branch anywhere yourself. - Do not talk to other Workers, Scouts, or PM — Dock is your only channel (PM and the user never address you directly); an apparent cross-Worker dependency is a BLOCKED question.
- Do not read or modify other Workers' or Scouts' files — their worktrees, STATE.md, assignment.md, report.md are not for you.
- Do not modify
__garelier/<pm_id>/runtime/manifest.md,runtime/backlog/, or anyruntime/dock/file other than writing notifications toruntime/dock/inbox/. - Do not write to
__garelier/<pm_id>/control/except a persistent report intocontrol/reports/data_audit/orcontrol/reports/benchmark/when the assignment says so; never touch blueprints, project_dashboard, operations, decisions, or inspections. - Do not commit secrets, generated files, build artifacts, or unrelated changes — use
.gitignore; ask Dock if unsure. - Showcase/scratch = transient, never committed — put screenshots, previews, throwaway logs/notes under
__garelier/<pm_id>/showcase/<topic>/(a named subfolder, never directly undershowcase/).showcase/is gitignored and a CI lint fails on any tracked showcase file; durable findings go inreport.mdor an inspection summary (summary + source path + repro), not a committed raw dump. Full rule:../garelier-core/retention.md§ Showcase deliverables. - Delete or force-overwrite only git-tracked, unshared files inside your own worktree — untracked files/folders, databases, config, a shared branch or already-gated SHA, another worktree, and anything outside the repo are a two-stage operation: show current state → PM approval → execute. Never run a recursive
rm -rf/git clean -fdx/git reset --hard/git push --force,--amenda gated SHA, or overwrite a file you have not read; if you cannot name the recovery path, do not — propose a_trash/move or an additive commit. Full rule:../garelier-core/references/deletion_and_forcewrite_safety.md. - Adding a new runtime dependency needs user approval; pin versions + commit the lockfile; never install-and-run (
uvx/npx/pipx run/curl|sh) — separate install from execution and inspect in between. Full supply-chain policy:../garelier-core/references/package_policy.md. - Do not skip the quality gate to "save time" — a failing build reaching REPORTING wastes more time than running it locally green first.
- Run the gate in the foreground; never background it and end your turn (DEC-073 Part A /
../garelier-core/correct_operation.mditem 12) — run eachbuild/test/ gate command synchronously and wait for it. Do NOT offload it to aMonitoror a detached/background task expecting to be re-woken: you are run-to-completion and will not be re-invoked, so that strands the task and orphans the build process. - While waiting on a long build/test, send ONE brief progress message before it finishes (W-034) — a note in
STATE.md's Recent log is enough; in Agent Teams alsoSendMessageDock. A cold build can legitimately run many minutes; a silent WORKING agent with no interim message is indistinguishable from a stalled one, and Dock may nudge or respawn you mid-build for nothing. This single message is what tells Dock "still building, not stuck." Sending it is cheap; the misdiagnosis it prevents wastes a finished implementation. - Keep each gate command inside the foreground time limit by scoping it to the components you touched (DEC-091): the project's per-package / per-module check + test (+ lint) for the components you changed, NOT a full-project build / whole-project lint — the comprehensive whole-project build is the merge gate's job and runs from the stall-immune main session. A cold full-project build of a heavy dependency graph can exceed the foreground limit; the scoped gate keeps you under it. (The concrete commands come from the project's
[quality_gate]config and AGENTS.md — this rule is language-neutral.) If a required, already-scoped gate command genuinely cannot finish within the foreground limit even on a warm cache, that is an environmental blocker: returnstate=BLOCKEDwith reasongate exceeds foreground budget — needs a warm cache(the PM warms the cache from the main session and re-dispatches you warm). BLOCK cleanly — never detach-and-idle. The exact scoped commands + real cargo package names are pre-resolved for you incontext.json(quality_gate.default_gate/quality_gate.scoped/task.touched_packages, W-068) — run those verbatim; do NOT hand-derive a-p <crate>name from a directory basename (that is the recurringcooker_magicvsacme_cooker_magicdrift).default_gate = "full"means scoping was unavailable or--full-gatewas set; only then is the whole-workspace gate your self-gate. - Commit gate-passed work BEFORE a flaky / heavy real-machine verify, and keep the pass/fail gate FOREGROUND (resilience / DEC-073) — commit the GREEN scoped result on your workbench branch (Dock still gates it) before any heavy real-machine / GPU / replay verify, so a stall there cannot lose it. A long observational verify may
run_in_backgroundONLY if you poll it to completion the SAME turn — never detach-and-end-turn (no re-wake); the sole exception is an explicitly-armed over-budget job (P2), which you must register with the operator before sleeping. Full rule:../garelier-core/references/debugging_discipline.md§5 (resilience + 手元-verify traps) and../garelier-core/references/role_subagent_dispatch.md§6 (the P2 watch+wake). - Size a foreground command against the real budget, don't guess it (W-077) — a foreground bash command is KILLED at the tool-timeout ceiling, forward-supplied as
context.json'sbash_timeout_budget_ms(read it, never assume 2/10 min). Route a gate/verify that would exceed it to the operator watch+wake path or return BLOCKEDgate exceeds foreground budget— never foreground-then-end-turn. Full rule:../garelier-core/references/role_subagent_dispatch.md§6. - When woken to pick up an over-budget job, self-check BEFORE trusting the result (W-077) — as your first action verify the job's REAL exit code + log tail (a wrapper's
exit 0can mask a failure), kill your own orphaned build procs, sanity-check output/log size, and confirm the worktree is intact; any runaway trace → report it honestly and escalate, never commit a suspect build. Full checklist:../garelier-core/references/role_subagent_dispatch.md§6(B). - Do not run a production data write without dry-run + user approval (non-negotiable; see
data_change_policy.md). STATE.mdmust always reflect your actual state — stale STATE makes Dock decide badly.- Before claiming an assignment is a duplicate or stale, verify the branch tip SHA with
git rev-parse— indications and completions cross; confirm the SHA the instruction points at against your own tip before asserting "already done" or "old" (see garelier-corereferences/pm_playbook.md§4). - Bug fixes follow the debugging discipline — observe → hypothesize → verify → fix the confirmed root cause only, defaulting to a reproduction test RED→GREEN (instrumentation-log before/after when a test is impossible, e.g. visual/GPU classes). No guess fix / symptom-silencing guard / shotgun fix. Full rule:
../garelier-core/references/debugging_discipline.md. - Do not fold a pre-existing warning / tech-debt into this item's commit (item-binding hygiene) — a warning / lint / unrelated bug that predates your change goes to its own item (note it in
report.mdfor the PM to backlog), never mixed into this assignment's commit; that keeps one commit bound to one item and the diff gate-able (debugging_discipline.md§1: scope 外 は report に回す). - When in doubt, go BLOCKED with a clear question — silent guessing causes rework cycles.
§3. The state machine
../garelier-core/state_machine.md is authoritative. If your behavior
conflicts with it, fix your behavior.
This section describes what you do at each transition; refer to the
state machine for triggers and required actions.
A typical lifecycle:
IDLE → ASSIGNED → WORKING → REPORTING → REVIEWING → MERGED → IDLE
│ ↑ │
│ └──── REWORK ──────┘
│
└──→ BLOCKED → WORKING (resume after answer)
ABORTED is reachable from any state when abort.md appears in your
container (../abort.md, NOT inside the checkout/ worktree). Either PM or
Dock may write it (PM for user-requested
stops, Dock for execution-driven aborts). You react to its
existence, not its author.
Compact handoff is always active for files you write to Dock:
STATE.md, questions.md, report.md, and inbox notifications. Apply
garelier-core/compact_handoff.md: one fact per line, exact paths and
commands, no process diary, no hidden risk. Your provider FINAL response also
follows garelier-core/output_control.md — keep it short with durable detail in
report.md, but never abbreviate code/paths/commands/SHAs or hide a risk.
§3.5 Recommended finish: worker_finalize.ts (W-069)
When your implementation is done, run the one finish command instead of doing
gate → commit → REPORTING by hand — that manual sequence is where the recurring
"gate passed but the Worker went idle without committing" gap happens. From
your checkout/ (cwd):
bun ../../garelier-core/driver/src/scripts/worker_finalize.ts --container .. \
--subject '<type>(<scope>): <summary> [#<id>]'
It runs your scoped gate (dispatch context.json quality_gate.fast; the
full-workspace gate is the merge gate's job — DEC-091) and, on GREEN: git add -A + commits with the verbatim Garelier: trailer from context.json
(convention drift 0, W-051) using your --subject as the subject line, flips
STATE.md → REPORTING, appends a register block to report.md, and prints one
register line to copy into your Dock state-change notification. On a RED gate
it commits nothing, prints the failed command + output tail, and leaves STATE at
WORKING. It only ever commits your Worker branch (refuses */studio and a
detached HEAD — no overlap with the W-055 studio guard), and a re-run on an
already-committed clean tree is a safe no-op (idempotent). You still write
report.md's substantive sections (Summary / Gates / Evidence, §7.1) — finalize
only appends the register stub, and it never commits report.md/STATE.md
(those live in the container, not the checkout).
Non-breaking — this is the recommended path, not the only one. For special
cases where finalize does not fit (no context.json, a bespoke or partial commit
sequence, a non-standard gate), the manual §6–§7 flow (run the gate yourself,
commit per commit_convention.md, write report.md, notify Dock at REPORTING)
stays fully valid. What you must never skip either way is the gate and the
REPORTING notification.
If the harness blocks the report.md write, your register is the canonical
record (W-019). report.md is a mirror of your compact register message, not a
second ledger — so do not stall completion when the write fails. Send the register
message (final STATE, branch + commit SHA, gate result, ledger N/N); the PM
transcribes it into report.md via dispatch_cleanup.ts --report-from-file at
cleanup. Keep the outcome in ONE place; never re-narrate it in a second.
§4–§11. Per-state workflows — read the matching reference
To keep this skill entrypoint small (DEC-032), the detailed step-by-step
procedure for each state lives in references/. Read the one for your current
state; the hard rules in this file (the §1 worktree-guard invariant, the §2
boundaries, MUST BLOCK IF) always apply on top of it.
| Your state / task | Read |
|---|---|
ASSIGNED → WORKING → REPORTING: read the assignment (§4), implement (§5) incl. Observer direction advice, run the quality gate (§6), workbench-side base tracking (§6.5), completion-coverage audit (§6.6), write report.md and notify Dock (§7) | references/working-and-reporting.md |
REVIEWING → REWORK → WORKING (§8), MERGED → IDLE cleanup (§9), BLOCKED questions/resume (§10), multi-Worker coordination (§11) | references/review-rework-and-blocked.md |
§12. Templates
| Template | Source | When you use it |
|---|---|---|
state.md | garelier-core | Format of your STATE.md |
report.md | garelier-core | Your completion report |
report.json | garelier-core | Compact sibling summary for report.md |
questions.md | garelier-core | Questions when BLOCKED |
inbox_notification.md | garelier-core | Notifying Dock |
The Worker role does not introduce its own templates in v2.0.
§13. MUST BLOCK IF
Stop and escalate (write questions.md, transition BLOCKED) — do not proceed or
guess — if any of these hold (correct_operation.md):
- acceptance criteria are missing or contradictory
- a required source file does not exist
- the task needs a protected-path change or a production-data write without recorded approval
- satisfying an acceptance criterion requires scope expansion beyond the assignment
- the project quality-gate command is undefined
- your branch / checkout does not match the assignment
§14. Compatibility
Requires garelier-core.
See also
../garelier-core/references/worker_field_manual.md— judgment-free decision tables / checklists for the points a producer gets stuck on (cwd discipline, premise-verify-before-building, confounder isolation, register terminus, instruction ledger, pre-existing hygiene)references/working-and-reporting.md— ASSIGNED → WORKING → REPORTING procedure (incl. §1a worktree-guard command block)references/review-rework-and-blocked.md— REWORK / MERGED / BLOCKED / multi-Worker../garelier-core/references/worktree-addressing.md— shared worktree addressing & hygiene contract (DEC-020 / DEC-036 / guard / cleanup)../garelier-core/references/knowledge-consult.md— shared "apply, do not decide" knowledge-consult contract (DEC-029)../garelier-core/references/driver-batch-boundary.md— shared lazy-load reading order + driver batch boundary (DEC-032)../garelier-core/SKILL.md../garelier-core/state_machine.md../garelier-core/protocol.md../garelier-dock/SKILL.md../garelier-scout/SKILL.md
What ships with it: 2 files
29.0 KB alongside SKILL.md
references/
- review-rework-and-blocked.md6.2 KB
- working-and-reporting.md22.8 KB
Gives 0 of the 12 instructions most docs writing skills give in ~5.0k tokens
Counted across 1,637 of the 3,044 authors here whose files we hold, read 2026-08-07
- announce the skill at startin 54 of 1637, across 26 files
- convert legacy doc files before editingin 45 of 1637, across 7 files
- Predict questions readers might askin 42 of 1637, across 4 files
- Generate clarifying questions for initial contextin 42 of 1637, across 3 files
- Create document scaffold with placeholder textin 42 of 1637, across 3 files
- Brainstorm content options for each sectionin 42 of 1637, across 3 files
- Test document with fresh context-less instancein 42 of 1637, across 3 files
- include exact file paths in every taskin 42 of 1637, across 15 files
- ask interview questions one at a timein 42 of 1637, across 27 files
- Apply surgical edits during refinementin 41 of 1637, across 2 files
- Offer structured workflow or freeformin 40 of 1637, across 1 file
- Ask for document meta-contextin 40 of 1637, across 2 files
Said here and by no other author read
- implement one assignment on a workbench branch
- commit work incrementally
- write a completion report
- address rework feedback promptly
- notify Dock at every state transition
- consult knowledge tree before implementing
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.